爛泥:nagios學習(四):pnp4nagios圖形化繪製nagios資料,pnp4nagiosnagios

來源:互聯網
上載者:User

爛泥:nagios學習(四):pnp4nagios圖形化繪製nagios資料,pnp4nagiosnagios

本文由秀依林楓提供友情贊助,首發於爛泥行天下

在nagios安裝完畢後,我們也添加了一些監控對象,但是你會發現nagios只是簡單的給我們列出那些監控對象是正常的,而沒有把這些監控對象的資料進行整合。如下:

其實nagios已經給我們提供了一個製圖工具pnp4nagios,只是我們還沒有安裝而已。

pnp4nagios是一個基於php和perl語言的強大工具,它可以通過process_perfdata.pl指令碼調用rrdtool對nagios的效能資料進行分析並繪製成相應的效能圖。所以在安裝pnp4nagios之前,我們必須先安裝php、perl、rrdtool。

為了實驗的方便,在此我們對php、perl使用yum方式進行安裝。

對於rrdtool的安裝,見下面文章。

注意:本篇文章,所有的操作都是在nagios伺服器上進行的。

一、什麼是rrdtool

rrdtool是Round Robin Database Tool的縮寫。從功能上說,rrdtool可用於資料存放區+資料展示。著名的網路流量繪圖軟體cacti和叢集監控系統Ganglia使用的都是rrdtool。

在資料存放區方面,rrdtool採用“Round Robin”模式儲存資料,即環狀資料庫。注意:rrdtool資料庫檔案尾碼名為“.rrd”。

有關rrdtool的詳細介紹,可以參考百度百科。

http://baike.baidu.com/view/1867979.htm

在資料展示方面,rrdtool可以看作是一個強大的繪圖引擎。是其官網上的一張,我們大致瞭解rrdtool的繪圖能力。

介紹完畢rrdtool的功能後,我們現在來安裝rrdtool。

二、安裝rrdtool

rrdtool的安裝,我們從源碼方式和yum方式安裝進行介紹。

2.1 源碼方式安裝

源碼方式安裝,我們分幾個步驟。

2.1.1 下載rrdtool軟體包

到rrdtool官網下載,最新的源碼包。如下:

http://oss.oetiker.ch/rrdtool/

下載rrdtool:

http://oss.oetiker.ch/rrdtool/pub/?M=D

wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.5.0-rc2.tar.gz

2.1.2 安裝基礎庫

在正式安裝rrdtool之前,我們還必須要安裝rrdtool編譯時間,所需要的基礎庫。如下:

yum -y install gcc cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel

2.1.3 安裝rrdtool

基礎庫安裝完畢後,我們現在開始正式安裝rrdtool。

解壓rrdtool軟體包,如下:

tar -xf rrdtool-1.5.0-rc2.tar.gz

cd rrdtool-1.5.0-rc2

配置rrdtool,如下:

./configure

編譯rrdtool,如下:

make

安裝rrdtool,如下:

make install

2.1.4 查看rrdtool安裝路徑

rrdtool安裝完畢後,我們現在來查看rrdtool的安裝路徑。如果沒有特意指定rrdtool安裝路徑的話,rrdtool預設安裝路徑為/opt/rrdtool-1.5.0-rc2/。這個我們可以通過在安裝配置rrdtool時可以知道,如下:

./configure --help

查看rrdtool安裝的內容,如下:

ll /opt/rrdtool-1.5.0-rc2/

2.1.5 驗證rrdtool

rrdtool安裝完畢後,我們來驗證是否正確安裝。我們使用如下命令:

/opt/rrdtool-1.5.0-rc2/bin/rrdtool -v

通過,我們可以很明顯的看到rrdtool的用法以及版本資訊。這也就說明了rrdtool已經被正確的安裝。

2.2 yum方式安裝

rrdtool的yum方式安裝就比較簡單了,直接使用如下命令進行安裝。

yum -y install rrdtool rrdtool-perl

rrdtool安裝完畢後,我們來查看其安裝的位置,如下:

which rrdtool

rpm -ql rrdtool

通過,我們可以很明顯的看到rrdtool的yum方式安裝,把rrdtool安裝到/usr/bin目錄下。

rpm -ql rrdtool-perl

注意:

/usr/lib64/perl5/vendor_perl/auto/RRDs是rrds perl模組的路徑,這個我們在安裝配置pnp4nagios時會使用到。

三、安裝pnp4nagios

在前文,我們已經介紹了有關pnp4nagios的功能。

pnp4nagios是一個基於php和perl語言的強大工具,它可以通過process_perfdata.pl指令碼調用rrdtool對nagios的效能資料進行分析並繪製成相應的效能圖。

pnp4nagios的安裝,我們也可以分為源碼方式和yum方式安裝,下面一一進行介紹。

3.1 下載pnp4nagios軟體包

要源碼方式安裝pnp4nagios,我們需要下載pnp4nagios軟體包,這個我們可以去其官網進行下載。如下:

http://docs.pnp4nagios.org

http://docs.pnp4nagios.org/pnp-0.6/start

http://sourceforge.net/projects/pnp4nagios/

wget http://jaist.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz

3.2 安裝perl-Time-HiRes組件

perl-Time-HiRes組件一定要在安裝配置pnp4nagios之前安裝,否則在安裝配置pnp4nagios時,提示如下的錯誤資訊:

configure: error: Perl Module Time::HiRes not available

使用如下命令進行安裝perl-Time-HiRes向外延展群組件,如下:

yum -y install perl-Time-HiRes

3.3 源碼安裝pnp4nagios

解壓pnp4nagios軟體包,如下:

tar -xf pnp4nagios-0.6.25.tar.gz

cd pnp4nagios-0.6.25

配置pnp4nagios,如下:

./configure --with-rrdtool=/opt/rrdtool-1.5.0-rc2/bin/rrdtool --with-perl_lib_path=/opt/rrdtool-1.5.0-rc2/lib/perl/5.10.1/x86_64-linux-thread-multi/auto/RRDs

注意:

--with-rrdtool=/opt/rrdtool-1.5.0-rc2/bin/rrdtool

表示的是rrdtool命令的路徑。在此rrdtool,我們使用的是源碼方式安裝。

--with-perl_lib_path=/opt/rrdtool-1.5.0-rc2/lib/perl/5.10.1/x86_64-linux-thread-multi/auto/RRDs

表示的是RRD perl模組路徑。在此rrdtool,我們使用的是源碼方式安裝。

如果不指定rrds perl模組所在路徑的話,配置時會顯示如下錯誤:

RRDs Perl Modules: *** NOT FOUND ***

如果rrdtool使用的是yum方式安裝的話,pnp4nagios配置時需要使用以下命令,如下:

./configure --with-perl_lib_path=/usr/lib64/perl5/vendor_perl/auto/RRDs

因為yum方式安裝rrdtool,會把RRD perl模組安裝到/usr/lib64/perl5/vendor_perl/auto/RRDs路徑下。如下:

pnp4nagios配置沒有問題的話,會顯示以下的介面:

編譯pnp4nagios,如下:

make all

注意:

通過,我們知道pnp4nagios的最後一步的安裝有兩種方法:一是make install進行一步一步的安裝pnp4nagios,二是使用make fullinstall進行自動安裝。

為了能更進一步學習pnp4nagios的安裝,在此我們使用的是make install。如下:

make install

注意:pnp4nagios預設的安裝路徑是/usr/local/pnp4nagios/,這個我們可以通過配置協助資訊得到。如下:

./configure --help

安裝pnp4nagios的web設定檔,如下:

make install-webconf

注意:如果apache是使用源碼安裝的話,我們在執行make install-webconf會報錯。

不要怕,我們只需要把sample-config/httpd.conf複製到/usr/local/apache2/conf/下,並重新命名為pnp4nagios.conf即可。在這apache是安裝到/usr/local/apache2下。如下:

cp sample-config/httpd.conf /usr/local/apache2/conf/ pnp4nagios.conf

ll /usr/local/apache2/conf/

以上操作之後,我們還需要在/usr/local/apache/conf/httpd.conf 檔案中添加 Include conf/pnp4nagios.conf。最後,我們還要重啟apache。

安裝pnp4nagios的設定檔,如下:

make install-config

安裝pnp4nagios啟動的初始化指令碼,如下:

make install-init

3.4 pnp4nagios目錄介紹

pnp4nagios安裝完畢後,我們來查看下其安裝的目錄,如下:

ll /usr/local/pnp4nagios/

下面來介紹下pnp4nagios的目錄,如下:

bin目錄用來存放pnp4nagios啟動命令npcd。如下:

/usr/local/pnp4nagios/bin/npcd -h

pnp4nagios開機啟動指令碼就是由這個命令控制,如下:

vi /etc/init.d/npcd

etc目錄主要存放pnp4nagios各種設定檔,如下:

ll /usr/local/pnp4nagios/etc/

lib目錄存放pnp4nagios的庫檔案。

libexec目錄存放pnp4nagios執行的外掛程式,比如process_perfdata.pl。

其他的目錄就不需要做介紹了。

3.5 yum安裝pnp4nagios

通過yum方式安裝pnp4nagios,我們需要配置額外的yum源。如下:

http://dl.fedoraproject.org/pub/epel/6/x86_64/

下載並安裝額外的yum源軟體包。如下:

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

查看額外yum源安裝的檔案,如下:

rpm -ql epel-release

通過可以很明顯的看出,安裝額外yum源就是安裝repo檔案。有關repo檔案的使用,可以參考這篇文章《爛泥:yum的使用及配置》。

安裝pnp4nagios,如下:

yum -y install pnp4nagios

注意:

yum安裝pnp4nagios時,是會安裝nagios。所以,如果我們的nagios是源碼安裝的話,建議pnp4nagios也使用源碼安裝。如果nagios是yum方式安裝的話,pnp4nagios也使用yum方式安裝。

四、配置pnp4nagios

pnp4nagios安裝完畢後,我們現在來配置pnp4nagios。

切換到pnp4nagios的安裝目錄的etc目錄下,如下:

cd /usr/local/pnp4nagios/etc/

現在開始修改etc目錄下內容,如下:

mv misccommands.cfg-sample misccommands.cfg

mv nagios.cfg-sample nagios.cfg

mv rra.cfg-sample rra.cfg

修改etc/pages目錄下內容,如下:

mv pages/web_traffic.cfg-sample pages/web_traffic.cfg

修改etc/check_commands目錄下內容,如下:

mv check_commands/check_all_local_disks.cfg-sample check_commands/check_all_local_disks.cfg

mv check_commands/check_nrpe.cfg-sample  check_commands/check_nrpe.cfg

mv check_commands/check_nwstat.cfg-sample  check_commands/check_nwstat.cfg

以上修改完畢後,我們來配置pnp4nagios的工作模式。

五、pnp4nagios工作模式

pnp4nagios有5種工作模式,它們分別是Synchronous Mode、Bulk Mode、Bulk Mode with NPCD、Bulk Mode with NPCD and npcdmod和Gearman Mode。

5.1 Synchronous Mode模式

Synchronous Mode(同步模式)是最簡單的一種整合方式,它的工作原理是直接將process_perfdata.pl指令碼整合到nagios中,並且每個event都執行一次調用。如:

5.2 Bulk Mode模式

Bulk Mode(Bulk模式)相對同步式複雜一點,由於同步模式是對每個event都進行處理,如果主機和服務數大就會造成監控伺服器的效能下降。

在Bulk模式中,nagios會將效能資料以特定的格式寫到一個臨時目錄中。pnp4nagios則定期調用process_perfdata.pl進行處理,處理完成後刪除資料檔案。這種方式減小了處理的次數,同時也減少了nagios主機的IO訪問及負載,彌補了同步模式中的不足。如:

5.3 Bulk Mode with NPCD模式

Bulk Mode with NPCD模式,從名字上可以看出,這種模式和Bulk模式差不多,只是多了一步將效能資料加上時間戳記移到spool目錄中等待處理,npcd服務調用process_perfdata.pl指令碼對資料進行處理。如:

這種模式就是我們現在使用最多的,也是我們本次實驗要使用到的模式。

另外兩種模式在此就不多做介紹,如果想要瞭解pnp4nagios的全部工作模式,可以訪問這個串連。如下:

http://docs.pnp4nagios.org/pnp-0.6/config

如果英文的看不懂,也可以參考這篇文章《pnp4nagios工作模式詳解》。

六、啟動pnp4nagios

pnp4nagios安裝完畢後,我們來啟動pnp4nagios。要啟動pnp4nagios,我們可以使用如下命令:

/etc/init.d/npcd start

ps aux |grep npcd

通過,我們可以很明顯的看到pnp4nagios已經正常啟動,並且也能看出pnp4nagios運行在nagios使用者下。

為了以後的方便,我們直接把pnp4nagios開機啟動。如下:

chkconfig npcd on

chkconfig --list npcd

七、訪問pnp4nagios

pnp4nagios啟動後,現在我們通過如下串連訪問pnp4nagios,如下:

http://192.168.1.247/pnp4nagios/

注意:系統會彈出如上的對話方塊,在此我們只需填入nagios中配置的具有存取權限的使用者即可,在此我填寫的是nagios的管理員帳號nagiosadmin。

通過上面兩幅圖,我們可以看很明顯的看到pnp4nagios可以正常訪問。

但是在第二幅圖,我們也看到了系統給出的提示。如下:

Your environment passed all requirements. Remove or rename the /usr/local/pnp4nagios/share/install.php file now.

它的意思是要把/usr/local/pnp4nagios/share/install.php檔案刪除或者重新命名。

現在我們對此檔案進行操作,如下:

mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.bak

ll /usr/local/pnp4nagios/share/

對該檔案操作檔案後,我們再次重新整理該頁面,可能會出現如下的錯誤資訊。如下:

session_start(): open(/var/lib/php/session/sess_rv62qv22fno63rrtnq2l80hqf0, O_RDWR) failed: Permission denied (13)

提示這個錯誤的意思是,沒有許可權對/var/lib/php/session目錄下的檔案進行操作。

為什麼會沒有許可權進行操作呢?

我們現在來查看/var/lib/php/session目錄許可權,如下:

ll /var/lib/php/

通過,我們可以很明顯的看出session目錄目前屬於root使用者、apache使用者組,而pnp4nagios使用的是nagios使用者運行,所以對此目錄沒有操作許可權。

既然問題找到了,那就好解決了。把session目錄修改為nagios使用者及使用者組所有即可。如下:

chown nagios:nagios -R /var/lib/php/

ll /var/lib/php/

修改完畢後,我們再來重新整理該頁面。如下:

通過,我們可以很明顯的看出pnp4nagios已經繪製出映像。

八、配置nagios

在pnp4nagios的這幾種工作模式中,我們使用Bulk Mode with NPCD模式。要使用Bulk Mode with NPCD模式,我們需要修改nagios的相關配置,具體修改如下。

8.1 配置nagios.cfg檔案

修改nagios的設定檔nagios.cfg,在該檔案加入或修改如下選項:

vi /usr/local/nagios/etc/nagios.cfg

process_performance_data=1

#

# service performance data

#

service_perfdata_file=/usr/local/pnp4nagios/var/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

#

# host performance data starting with Nagios 3.0

#

host_perfdata_file=/usr/local/pnp4nagios/var/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

注意:

process_performance_data=1表示啟用nagios效能資料輸出。

如果上面的內容你記不得,也沒事的,我們可以直接從/usr/local/pnp4nagios/etc/nagios.cfg檔案中複製即可。如下:

vi /usr/local/pnp4nagios/etc/nagios.cfg +16

8.2 配置commands.cfg檔案

nagios.cfg檔案修改完畢後,我們現在來編輯commands.cfg檔案。在該檔案中加入或修改如下選項:

vi /usr/local/nagios/etc/objects/commands.cfg

define command{

    command_name    process-service-perfdata-file

    command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$

}

define command{

  command_name    process-host-perfdata-file

  command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$

}

同時還要把nagios中原來的定義process-host-perfdata和process-service-perfdata給注釋掉。如下:

如果上面的內容你記不得,也沒事的,我們可以直接從/usr/local/pnp4nagios/etc/misccommands.cfg檔案中複製即可。如下:

vi /usr/local/pnp4nagios/etc/misccommands.cfg +34

8.3 配置templates.cfg檔案

commands.cfg檔案修改完畢後,我們現在來編輯templates.cfg檔案。在該檔案中加入如下選項:

vi /usr/local/nagios/etc/objects/templates.cfg

define host {

name host-pnp

action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_

register 0

}

define service {

name srv-pnp

action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$

register 0

}

如果上面的內容你記不得,也沒事的,我們可以直接從pnp4nagios官網查看。如下:

http://docs.pnp4nagios.org/pnp-0.6/webfe

8.4 配置主機cfg檔案

以上檔案全部配置完畢後,我們現在添加一台主機。如下:

vi /usr/local/nagios/etc/ilanni/ilanni.cfg

define host{

use ilanniserver,host-pnp

host_name ilanni

alias test server

address 192.168.1.248

check_command check-host-alive

}

define service{

use generic-service,srv-pnp

host_name ilanni

service_description nrpe_load

check_command check_nrpe!check_load

}

九、查看pnp4nagios繪製圖形

nagios配置完畢後,我們來檢查下nagios配置是否正確。如下:

/etc/init.d/nagios configtest

通過,我們可以看到nagios配置是沒有問題的。

現在我們來重新啟動pnp4nagios和nagios,如下:

/etc/init.d/npcd restart

/etc/init.d/nagios reload

現在我們登入nagios進行查看,先來看看pnp4nagios繪製主機的效能圖,如下:

通過上面三張圖,我們可以很明顯的看出pnp4nagios已經把主機的相關資料進行繪圖。

然後再來看看pnp4nagios繪製服務的效能圖,如下:

通過上面三張圖,我們可以很明顯的看出pnp4nagios已經把服務的相關資料進行繪圖。

最後,我們再來查看下pnp4nagios把資料存放的位置。如下:

ll /usr/local/pnp4nagios/var/perfdata/

ll /usr/local/pnp4nagios/var/perfdata/ilanni

到此有關pnp4nagios繪製nagios效能的圖形已經全部完成。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.