天天看點

Nagios 可視化界面配置-PNP4Nagios

# 一、簡介 Nagios 監控的原理我這裡不再做過多介紹,我們使用最快速的方法安裝 Nagios 監控以及配置可視化界面。 為了示範友善,我這裡就準備一台阿裡雲的機器,系統安裝的 CentOS 7.9。 ![image-20210629223744115](https://imgs.wzlinux.com/blog/202106/29/223745-285734.png) # 二、安裝 安裝方法超級簡單,我們不按照官方所說,因為 yum 倉庫裡面已經都把軟體包給我們做好了,依賴也是可以解決的,可以說是最快速的方法安裝。我們直接使用一條指令即可。 ```bash yum install pnp4nagios -y ``` ## 啟動服務 一條指令監控服務 nagios 就安裝好了,非常簡單,下面我們啟動服務檢視一下。 ```bash systemctl start httpd systemctl start nagios ``` 然後通路` http://YOUR_SERVER_IP/nagios`,預設的賬号密碼都是 nagiosadmin,如果要修改密碼,修改檔案`/etc/nagios/passwd`。 ![image-20210629225115410](https://imgs.wzlinux.com/blog/202106/29/225116-431793.png) 可以看到監控到本機了,監控資料還在收集中,主機和服務的資料都是狀态資料,預設監控資料寫入到 /var/log/nagios/nagios.log 檔案中。 目前主要是狀态資料,并不能進行作圖顯示,下面我們為其配置可視化界面。 # 三、配置 PNP ## Bulk Mode with NPCD 我們檢視一下 pnp4nagios 的配置檔案,裡面有兩個我們會用到的,一個是 nagios.cfg,一個是 misccommands.cfg。 ```bash [[email protected] ~]# ll /etc/pnp4nagios/ total 84 -rw-r--r-- 1 root root 29383 Jun 8 2015 background.pdf drwxr-xr-x 2 root root 4096 Jun 29 22:41 check_commands drwxr-xr-x 2 root root 4096 Jun 8 2015 config.d -rw-r--r-- 1 root root 9595 Jun 8 2015 config.php -rw-r--r-- 1 root root 1290 Jun 8 2015 misccommands.cfg -rw-r--r-- 1 root root 1655 Jun 8 2015 nagios.cfg -rw-r--r-- 1 root root 4134 Jun 8 2015 npcd.cfg drwxr-xr-x 2 root root 4096 Jun 29 22:41 pages -rw-r--r-- 1 root root 1112 Jun 8 2015 pnp4nagios_release -rw-r----- 1 root nagios 2463 Jun 8 2015 process_perfdata.cfg -rw-r--r-- 1 root root 651 Jun 8 2015 rra.cfg ``` 檢視一下 nagios.cfg,裡面有三種模式可選,我們選擇 Bulk Mode with NPCD 這種模式,這種模式性能相對來說比較好,其他模式詳細介紹請檢視文檔: https://docs.pnp4nagios.org/pnp-0.6/config#bulk_mode_with_npcd ![image-20210629224515929](https://imgs.wzlinux.com/blog/202106/29/224516-810829.png) ```bash # # Bulk / NPCD mode # process_performance_data=1 # *** the template definition differs from the one in the original nagios.cfg # service_perfdata_file=/var/log/pnp4nagios/service-perfdata service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=15 service_perfdata_file_processing_command=process-service-perfdata-file # *** the template definition differs from the one in the original nagios.cfg # host_perfdata_file=/var/log/pnp4nagios/host-perfdata host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$ host_perfdata_file_mode=a host_perfdata_file_processing_interval=15 host_perfdata_file_processing_command=process-host-perfdata-file ``` 我們把上面的配置檔案寫入到 nagios 的配置檔案 nagios.cfg 裡面,`process_performance_data` 這一項預設是沒有開啟的,我們開啟就行,下面的幾項直接添加就行,預設是注釋掉的。 這部分參數的意思是,Nagios 要處理這些性能名額資料,把資料寫入到檔案,通過上圖,類似于其中的 Spool File。 我們檢視一下 misccommands.cfg 這個配置檔案,同樣找到 Bulk with NPCD mode 這個模式的配置方法。 ```json # # Bulk with NPCD mode # #define command { # command_name process-service-perfdata-file # command_line /bin/mv /var/log/pnp4nagios/service-perfdata /var/spool/pnp4nagios/service-perfdata.$TIMET$ #} #define command { # command_name process-host-perfdata-file # command_line /bin/mv /var/log/pnp4nagios/host-perfdata /var/spool/pnp4nagios/host-perfdata.$TIMET$ #} ``` 我們把這部分内容添加到檔案 /etc/nagios/objects/commands.cfg 末尾中,并取消其注釋。 添加完成之後,我們啟動 NPCD 服務,這樣服務就可以去這個 Spool Directory 裡面去處理資料。 ```bash systemctl restart nagios systemctl restart npcd ``` ## 驗證 PNP4Nagios 如果生成下面資料,證明運作正常。 ```bash [[email protected] pnp4nagios]# ll /var/lib/pnp4nagios/localhost/ total 1900 -rw-rw-r-- 1 nagios nagios 768224 Jun 29 23:06 PING.rrd -rw-rw-r-- 1 nagios nagios 2589 Jun 29 23:06 PING.xml -rw-rw-r-- 1 nagios nagios 384952 Jun 29 23:06 Root_Partition.rrd -rw-rw-r-- 1 nagios nagios 1973 Jun 29 23:06 Root_Partition.xml -rw-rw-r-- 1 nagios nagios 384952 Jun 29 23:07 SSH.rrd -rw-rw-r-- 1 nagios nagios 1887 Jun 29 23:07 SSH.xml -rw-rw-r-- 1 nagios nagios 384952 Jun 29 23:06 Swap_Usage.rrd -rw-rw-r-- 1 nagios nagios 1915 Jun 29 23:06 Swap_Usage.xml ``` 那我們檢視一下 PNP4Nagios 的 web 界面展示。 浏覽器通路 IP/pnp4nagios,效果和 CACTI 這個監控軟體的效果差不多。 ![image-20210629230957454](https://imgs.wzlinux.com/blog/202106/29/230958-761984.png) 現在剛剛收集資料,名額還不是很多,圖像還沒有完全生成出來。 ## 和 Nagios web 內建 目前我們是通過單獨的一個 URL 通路的展示頁面,那如果通過點選 Nagios 一個個名額檢視其狀态值呢? > PNP4Nagios can also be integrated into the Nagios Core web interface, this is quite useful however it does require some changes to your Nagios object definitions. > > Nagios Core uses the **action_url** directive in object definitions to provide an icon/link when viewing host or service objects in the web interface. 我們首先在 /etc/nagios/objects/templates.cfg 定義一下使用 pnp 的 host 和 service。把下面兩個定義添加到 templates.cfg 的最後端。 ```json define host { name host-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_ register 0 } define service { name service-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ register 0 } ``` 為了讓其他的 template 也可以使用剛剛定義的 host 和 serivce,我們使用 use 這個參數,來修改存在的兩個 template,每個定義添加一條 use 即可,類似如下: ```json define host{ name generic-host ; The name of this host template use host-pnpdefine service{ name generic-service ; The 'name' of this service template use service-pnp ``` 修改完成之後,重新開機 nagios 服務,然後我們再檢視頁面,就可以看到前面都多了一個趨勢圖的小圖示。 ![image-20210629232038281](https://imgs.wzlinux.com/blog/202106/29/232039-324124.png) 點選相應的服務。 ![image-20210629232224971](https://imgs.wzlinux.com/blog/202106/29/232225-15458.png) 支援 Nagios 監控的可視圖我們已經配置好了,關于其他監控配置,請檢視官方文檔。 參考文檔:https://support.nagios.com/kb/article/nagios-core-performance-graphs-using-pnp4nagios-801.html # 歡迎大家掃碼關注,擷取更多資訊 ![](https://imgs.wzlinux.com/wechat/wechat-8.jpg)