Nagios的功能是監(jiān)控服務(wù)和主機(jī),但其自身并不包括這部分功能,所有的監(jiān)控、檢測(cè)功能都是通過(guò)各種插件來(lái)完成。啟動(dòng)Nagios后,它會(huì)周期性的調(diào)用插件去檢測(cè)服務(wù)器狀態(tài),同時(shí)Nagios會(huì)維持一個(gè)隊(duì)列,所有插件返回來(lái)的狀態(tài)信息都進(jìn)入隊(duì)列,Nagios每次都從隊(duì)首讀取信息,進(jìn)行處理后,再把狀態(tài)通過(guò)web展現(xiàn)出來(lái)。
這就是所謂的被動(dòng)模式,經(jīng)常用于監(jiān)控主機(jī)的系統(tǒng)資源,比如系統(tǒng)負(fù)載、磁盤(pán)使用率、內(nèi)存使用率、網(wǎng)絡(luò)狀態(tài)、系統(tǒng)進(jìn)程數(shù)等等。
另一種是主動(dòng)模式,主要是nagios服務(wù)器主動(dòng)去獲取數(shù)據(jù),常用于探測(cè)URL的監(jiān)控和服務(wù)狀態(tài)監(jiān)控。
相比于主動(dòng)模式中服務(wù)器去被監(jiān)控主機(jī)上輪詢(xún)獲取監(jiān)控?cái)?shù)據(jù)的方式,這樣的最大優(yōu)勢(shì)是避免除了數(shù)據(jù)處理工作以外的其他工作都放在了被監(jiān)控主機(jī)上(包括數(shù)據(jù)傳輸),避免了被監(jiān)控主機(jī)量大時(shí),一次輪詢(xún)時(shí)間過(guò)長(zhǎng)而導(dǎo)致監(jiān)控反應(yīng)延遲,這也是被動(dòng)模式能夠承擔(dān)更大監(jiān)控量的關(guān)鍵。
Nagios提供了許多插件,利用這些插件可以方便的監(jiān)控很多服務(wù)狀態(tài),安裝完成后,在nagios目錄下的/libexec里放nagios自帶的可以使用的所有插件,如check_disk是檢查磁盤(pán)空間的插件,check_load是檢查CPU負(fù)載的插件。每一個(gè)插件都可通過(guò)運(yùn)行./check_xxx -h命令來(lái)查看其使用方法和功能。
一、部署環(huán)境
主機(jī) | 操作系統(tǒng) | IP地址 | 主要軟件 |
---|---|---|---|
Nagios | CentOS7.3 x86_64 | 192.168.144.112 | Nagios4.0.1、nagios-plugins-1.5、LAMP環(huán)境 |
被監(jiān)控主機(jī) | centos7.3 x86_64 | 192.168.144.111 |
二、Nagios服務(wù)主機(jī)部署
1、首先準(zhǔn)備LAMP環(huán)境
- 由于被動(dòng)模式數(shù)據(jù)進(jìn)過(guò)處理后需要通過(guò)web界面呈現(xiàn)出來(lái),因此在nagios服務(wù)主機(jī)上需要LAMP環(huán)境支持。
yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash
vim /etc/httpd/conf/httpd.conf
ServerName www.yun.com ... AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps ... DirectoryIndex index.html index.php
- 關(guān)閉防火墻和SELinux,啟動(dòng)服務(wù)
systemctl stop firewalld.service
setenforce 0
systemctl start httpd
systemctl start mariadb.service
2、準(zhǔn)備nagios服務(wù)軟件相關(guān)環(huán)境
yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
useradd -s /sbin/nologin nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
ll -d /usr/local/nagios/ 查看權(quán)限
3、解壓軟件包,執(zhí)行安裝
tar zxvf nagios-4.0.1.tar.gz -C /opt/
cd /opt/nagios-4.0.1/
./configure –prefix=/usr/local/nagios
執(zhí)行安裝程序后,編譯各模塊的五大步驟 make all //首先執(zhí)行全部編譯 make install make install-init //初始化命令位置 make install-commandmode //編譯安裝控制模塊 make install-config //編譯生成相關(guān)配置文件
chkconfig –add /etc/rc.d/init.d/nagios
chkconfig –level 35 nagios on
chkconfig –list nagios
- 為驗(yàn)證編譯是否完整成功,需要檢查/usr/local/nagios/下是否存在etc、bin、sbin、share、var 這五個(gè)目錄
4、編譯安裝插件模塊
tar xvzf nagios-plugins-1.5.tar.gz -C /opt
cd /opt/nagios-plugins-1.5
./configure –prefix=/usr/local/nagios 安裝插件模塊,注意放入nagios安裝目錄中
make && make install
5、修改Apache配置文件,為nagios創(chuàng)建虛擬目錄
vim /etc/httpd/conf/httpd.conf
找到: User apache Group apache 修改為 User nagios Group nagios ... 為了安全起見(jiàn),一般情況下要讓nagios 的web 監(jiān)控頁(yè)面必須經(jīng)過(guò)授權(quán)才能訪(fǎng)問(wèn), 這需要增加驗(yàn)證配置,即在httpd.conf 文件最后添加如下信息: #setting for nagios ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" <Directory "/usr/local/nagios/sbin"> //監(jiān)控頁(yè)面控制權(quán)限驗(yàn)證 AuthType Basic Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd //驗(yàn)證賬戶(hù)密碼存放位置 Require valid-user </Directory> Alias /nagios "/usr/local/nagios/share" <Directory "/usr/local/nagios/share"> //監(jiān)控頁(yè)面訪(fǎng)問(wèn)驗(yàn)證 AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd //驗(yàn)證賬戶(hù)密碼存放位置 Require valid-user </Directory>
- 設(shè)置完訪(fǎng)問(wèn)驗(yàn)證設(shè)置后,需要設(shè)置驗(yàn)證的賬戶(hù)密碼
- 利用htpasswd在/usr/local/nagios/etc/htpasswd生成jack賬戶(hù)并設(shè)定密碼
htpasswd -c /usr/local/nagios/etc/htpasswd jack
cat /usr/local/nagios/etc/htpasswd
jack:$apr1$DR0SjMa5$trumMzpqj./BA15Iswx2g0
systemctl restart httpd.service
三、配置nagois各功能模塊配置文件
1.templates.cfi nagios 主要用于監(jiān)控主機(jī)資源以及服務(wù),在nagios配置中稱(chēng)為對(duì)象, 為了不必重復(fù)定義一些監(jiān)控對(duì)象,Nagios引入了一個(gè)模板配置文件, 將一些共性的屬性定義成模板,以便于多次引用。 contact_groups 聯(lián)系組屬性改成 ts 將在后面的contacts.cfg文件中定義 2.resource.cfg文件 resource.cfg是nagios的變量定義文件 一般無(wú)需更改 $USER1$=/usr/local/nagios/libexec 3.commands.cfg文件 此文件默認(rèn)是存在的,無(wú)需修改即可使用,當(dāng)然如果有新的命令需要加入時(shí),在此文件進(jìn)行添加即可 4. hosts.cfg文件,如果創(chuàng)建位置不在object下,需要注意屬主屬組權(quán)限,并且主配置文件中告知為絕對(duì)路徑 此文件默認(rèn)不存在,需要手動(dòng)創(chuàng)建,hosts.cfg主要用來(lái)指定被監(jiān)控的主機(jī)地址以及相關(guān)屬性信息(不能有任何空格) define host{ use linux-server#引用主機(jī)linux-server的屬性信息,linux-server主機(jī)在templates.cfg文件中進(jìn)行了定義。 host_name Nagios-Linux#主機(jī)名 alias Nagios-Linux#主機(jī)別名 address 192.168.144.111#被監(jiān)控的主機(jī)地址,這個(gè)地址可以是ip,也可以是域名。 } #定義一個(gè)主機(jī)組 define hostgroup{ hostgroup_name bsmart-servers#主機(jī)組名稱(chēng),可以隨意指定。 alias bsmart servers#主機(jī)組別名 members Nagios-Linux#主機(jī)組成員,其中“Nagios-Linux”就是上面定義的主機(jī)。 } 5.localhost.cfg文件 用來(lái)監(jiān)控本機(jī) 一般無(wú)需更改 6.windows.cfg 用來(lái)監(jiān)控windows 這里無(wú)需使用 7.services.cfg文件 此文件默認(rèn)也不存在,需要手動(dòng)創(chuàng)建 主要用于定義監(jiān)控的服務(wù)和主機(jī)資源 define service{ use local-service#引用local-service服務(wù)的屬性值,local-service在templates.cfg文件中進(jìn)行了定義。 host_name Nagios-Linux#指定要監(jiān)控哪個(gè)主機(jī)上的服務(wù),“Nagios-Server”在hosts.cfg文件中進(jìn)行了定義。 service_description check-host-alive#對(duì)監(jiān)控服務(wù)內(nèi)容的描述,以供維護(hù)人員參考。 check_command check-host-alive#指定檢查的命令。 } 8.contacts.cfg文件 contacts.cfg是一個(gè)定義聯(lián)系人和聯(lián)系人組的配置文件(不能有空格) define contact{ contact_name jack#聯(lián)系人的名稱(chēng),這個(gè)地方不要有空格 use generic-contact#引用generic-contact的屬性信息,其中“generic-contact”在templates.cfg文件中進(jìn)行定義 alias Nagios Admin email 13951868284@139.com } define contactgroup{ contactgroup_name ts#聯(lián)系人組的名稱(chēng),同樣不能空格 alias Technical Support#聯(lián)系人組描述 members jack#聯(lián)系人組成員,其中“jack”就是上面定義的聯(lián)系人,如果有多個(gè)聯(lián)系人則以逗號(hào)相隔 } 9.cgi.cfg文件 此文件用來(lái)控制相關(guān)cgi腳本 由于nagios的web監(jiān)控界面驗(yàn)證用戶(hù)為jack,所以只需在cgi.cfg文件中添加此用戶(hù)的執(zhí)行權(quán)限 在最后加入 default_user_name=jack authorized_for_system_information=nagiosadmin,jack authorized_for_configuration_information=nagiosadmin,jack authorized_for_system_commands=jack authorized_for_all_services=nagiosadmin,jack authorized_for_all_hosts=nagiosadmin,jack authorized_for_all_service_commands=nagiosadmin,jack authorized_for_all_host_commands=nagiosadmin,jack 10. nagios.cfg文件 將對(duì)象配置文件在Nagios.cfg文件中進(jìn)行引用 cfg_file=/usr/local/nagios/etc/objects/hosts.cfg cfg_file=/usr/local/nagios/etc/objects/services.cfg command_check_interval=10s 該變量用于設(shè)置nagios對(duì)外部命令檢測(cè)的時(shí)間間隔
- 檢測(cè)配置文件
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 驗(yàn)證配置文件
- web界面顯示
http://192.168.144.112/nagios