注:本文有感謝程建提供
目前創新互聯建站已為上千余家的企業提供了網站建設、域名、網站空間、網站運營、企業網站設計、順河網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
一、需求
nagios 更新速度是很快的,本公司采用最新的穩定版本nagios-4.0.8,插件采用是的nagios-plugins-2.0.3,新版本經過使用和測試,發現速度和報警的速度比以前快了許多,
并且占用操作系統資源不多問題及時,界面干凈,如下圖:
由于網上下載包不穩定,所以我整理后放到網盤中,所有的下載包全在360網盤地址中如下:
http://yunpan.cn/cHjtN2f9Kz3FM 訪問密碼 f9af
二、PHP環境的搭建
本公司采用lamp的環境來做為nagios的基礎環境,當然MySQL是可以不用裝的只要PHP環境就行了。
1、apr的安裝
APR(Apache portable Run-time libraries,Apache可移植運行庫)的目的如其名稱一樣,主要為上層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫。
在早期的Apache版本中,應用程序本身必須能夠處理各種具體操作系統平臺的細節,并針對不同的平臺調用不同的處理函數。隨著Apache的進一步開發,Apache組織決定將這些通用的函數獨立出來并發展成為一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅僅是使用APR而已。
一般情況下,APR開發包很容易理解為僅僅是一個開發包,不過事實上并不是。目前,完整的APR實際上包含了三個開發包:apr、apr-util以及apr-iconv,每一個開發包分別獨立開發,并擁有自己的版本。
現在新版本的http中apr集成到了一個httpd-2.4.9-deps.tar 類似于這樣的包中,解壓后的結果如下:
集成后安裝和管理方便多了,不用再擔心apache版本和apr的對應該關系了。
安裝如下:
./configure--prefix=/mnt/cellar/httpd/apr //這個目錄一定要規劃好,方便管理 make make install
2、.apr-utils安裝
./configure --prefix=/mnt/cellar/httpd/apr-util --with-apr=/mnt/cellar/httpd/apr // 這里要指定apr的安裝目錄才行 make makeinstall
apr和api-utils 安裝好后,目錄如下:
3、PCRE的安裝
./configure --prefix=/mnt/cellar/httpd/pcre make make install
如果報以下錯誤:
configure: error: You need a C++ compiler for C++ support
則需要安裝yum install -y gcc gcc-c++
4、apache的安裝
apache的版本是2.4.9
./configure--prefix=/mnt/cellar/httpd/apache --with-apr=/mnt/cellar/httpd/apr--with-apr-util=/mnt/cellar/httpd/apr-util/bin/apu-1-config--with-pcre=/mnt/cellar/httpd/pcre/ --enable-so --enable-rewrite // 要指定前面安裝的幾個目錄 (apr,apr-utils,pcre) make make install
apache 的啟動如下
[root@kaifabin]# ./apachectl start
說明apache 運行正常
由于是源碼包安裝apache 所以啟動和關閉apache比較麻煩,所以寫了一個apache的啟動腳本如下:
#!/bin/bash #Startup script for the Apache2.0.X Web Server # chkconfig:- 85 15 # Sourcefunction library. ./etc/rc.d/init.d/functions if [ -f/etc/sysconfig/httpd ]; then ./etc/sysconfig/httpd fi INITLOG_ARGS="" apachectl=/mnt/cellar/httpd/apache/bin/apachectl httpd=${HTTPD-/mnt/cellar/httpd/apache/bin/httpd} prog=httpd RETVAL=0 start(){ echo -n$"Starting $prog: " daemon$httpd $OPTIONS RETVAL=$? echo [$RETVAL = 0 ] && touch /var/lock/subsys/httpd return$RETVAL } stop() { echo -n$"Stopping $prog: " killproc$httpd RETVAL=$? echo [$RETVAL = 0 ] && rm -f /var/lock/subsys/httpd /var/run/httpd.pid } reload(){ echo -n$"Reloading $prog: " killproc$httpd -HUP RETVAL=$? echo } case"$1" in start) start ;; stop) stop ;; status) status$httpd RETVAL=$? ;; restart) stop start ;; condrestart) if [ -f/var/run/httpd.pid ] ; then stop start fi ;; reload) reload ;; graceful|help|configtest|fullstatus) $apachectl$@ RETVAL=$? ;; *) echo$"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit 1 esac exit$RETVAL
以上腳本如果需要,只需要修改紅色的部份即可(apache的安裝目錄)
5、PHP安裝
5.1 PHP版本是php-5.6.4
./configure --prefix=/mnt/cellar/httpd/php--with-libdir=/usr/lib64 --with-config-file-path=/mnt/cellar/httpd/php/etc --with-config-file-scan-dir=/mnt/cellar/httpd/php/etc/php.d --with-apxs2=/mnt/cellar/httpd/apache/bin/apxs make make install
PHP安裝的時候make的時候會報錯 undefinedreference to `libiconv'
解決方法如下:
Makefile大概 77行左右的地方:
EXTRA_LIBS =….. -lcrypt
在最後加上 -liconv,例如:
EXTRA_LIBS =….. -lcrypt -liconv
驗證有效!
5.2 PHP 環境配置如下:
把php.ini 拷貝一份到下面的目錄
然后在apache的httpd.conf中添加
AddType application/x-httpd-php .php
然后重啟apache 再訪問如下:
至此基礎環境配置完成
如果不知道configure時候的參數可以用以下命令來查看:
查看nginx編譯參數:/usr/local/nginx/sbin/nginx-V
查看apache編譯參數:cat/usr/local/apache2/build/config.nice
查看mysql編譯參數:cat /usr/local/mysql/bin/mysqlbug |grep CONFIGURE_LINE
查看php編譯參數:/usr/local/php/bin/php -i | grepconfigure
三、nagios的安裝
1、創建用戶
useradd -M -s/sbin/nologin nagios // 不允許登陸,不要家目錄
2、nagios 主程序的安裝
cd nagios-4.0.8
./configure --prefix=/mnt/cellar/nagios --with-command-group=nagios --with-nagios-group=nagios makeall makeinstall makeinstall-init // 生成init啟動腳本 makeinstall-config // 生成一些模塊配置文件 makeinstall-commandmode // 設置相應的權限 makeinstall-webconf
安裝完成
cp -R contrib/eventhandlers/ /mnt/cellar/nagios/libexec/
chown-R nagios.nagios eventhandlers/ //拷貝事件處理到nagios的安裝目錄下的libexec目錄下 這一步很重要,牽扯到以后會不會郵件和短信報警的狀態轉變和發送。
3、啟動nagios
./nagios -v/mnt/cellar/nagios/etc/nagios.cfg 如下圖,先驗證配置文件的正確性
下面啟動,如下圖,啟動正確
4、apache相關的配置
./htpasswd -c /mnt/cellar/nagios/etc/htpasswd letang // 添加web登陸用戶letang
在apache的httpd.conf的最后面添加如下:
#setting for nagios ScriptAlias /nagios/cgi-bin"/mnt/cellar/nagios/sbin" <Directory"/mnt/cellar/nagios/sbin"> AuthType Basic Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthUserFile /mnt/cellar/nagios/etc/htpasswd Require valid-user </Directory> Alias /nagios"/mnt/cellar/nagios/share" <Directory "/mnt/cellar/nagios/share"> AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "nagios Access" AuthUserFile /mnt/cellar/nagios/etc/htpasswd Require valid-user </Directory>
然后找到
user apache
group apache
修改為
user nagios
group nagios
最后重啟apache 登陸驗證如下:
5、錯誤排除
輸入用戶名和密碼之后點擊services出現下面的亂碼情況如下:
出現上面的原因是apache沒有開啟cgi腳本的緣故
進入apache的主配置文件httpd.conf
#LoadModule cgid_module modules/mod_cgid.so #LoadModule actions_module modules/mod_actions.so
將上面2行的#去掉,重啟apache就OK了,然后關掉瀏覽器重新登陸如下:
好像還是什么也沒有?并且有錯誤提示
這是認證的問題,修改如下
use_authentication=1改為 use_authentication=0 然后重啟nagios即可
然后看到如下說明有監控項目了但有紅色提示:
再看上面的錯,很明顯,提示找到命令,這是因為沒有安裝插件的原因。
6、nagios 插件的安裝
nagios 之所以強大,就是因為功能強大的插件而已
tar -zxvf nagios-plugins-2.0.3.tar.gz cd nagios-plugins-2. cd nagios-plugins-2.0.3 ./configure --prefix=/mnt/cellar/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagios make
安裝完成后這個/mnt/cellar/nagios/libexec 下會有許多如下的命令
然后重啟一下nagios 然再觀察如下:
當然這是本機localhost 的監控
7. windows 機器的監控
windows 機器的監控依靠的是
如果是通過snmp來監控的則不需要
本公司采用是的第一種通過安裝插件來監控
安裝如下:
這里allowed host 是客戶端的IP是服務器nagios的IP 密碼要為空,不然很麻煩,橢圓里面就這樣選擇就行了
已經啟動起來了。
然后在nagios端定義要監控的項目
localhost.cfg是監控nagios本身的。為了方便管理,我們建了幾個目錄
database,fdfs,linux,widows 之類的目錄
如下圖所示是windows 目錄下的監控項目
起名規則如下:用途+ip地址
下面以一臺windows 機器app_server_10.129.102.53.cfg為類
#define hostgroup{ # hostgroup_name windows-servers # alias Windows Servers # } define host{ use windows-server host_name app-server alias testapp-server address 10.129.102.53 } ########## nsclient++ version define service{ use generic-service host_name app-server service_description NSClient++ version check_command check_nt!CLIENTVERSION } ######### uptime define service{ use generic-service host_name app-server service_description uptime check_command check_nt!UPTIME } ######### ping define service{ use generic-service host_name app-server service_description ping check_command check_ping!100.0,20%!500.0,60% } #########IIS define service{ use generic-service host_name app-server service_description IIS check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC } ########## cpu load define service{ use generic-service host_name app-server service_description cpu_load check_command check_nt!CPULOAD!-l 5,80,90 } ########## memory define service{ use generic-service host_name app-server service_description memory check_command check_nt!MEMUSE!-w 80 -c 90 } ########## C:\ space define service{ use generic-service host_name app-server service_description C:\space check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90 } ########## D:\ space define service{ use generic-service host_name app-server service_description D:\space check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90 } ########## define service{ use generic-service host_name app-server service_description Explorer.exe check_command check_nt!PROCSTATE!-d SHOWALL -l explorer.exe }
定義好之后,在nagios.cfg中定義要監控主機的文件位置如下第二張圖所示。
然后重啟nagios,再觀察如下:
windows 機器已經正常。
8、監控linux 機器
在客戶機上操作
同樣添加用戶如下:
useradd -M -s /sbin/nologin nagios
安裝nagios-plugins 插件
cd nagios-plugins-2.0.3
/configure --prefix=/mnt/cellar/nagios-plus --with-nagios-user=nagios--with-nagios-group=nagios make all make install
安裝nrpe 服務
cd nrpe-2.15
./configure--prefix=/mnt/cellar/nrpe --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --with-nagios-group=nagios # make all # make install-plugin # make install-daemon # make install-daemon-config
安裝成功后,目錄如下:
然后進入到etc下面修改nrpe.cfg配置文件
log_facility=daemon pid_file=/var/run/nrpe.pid server_port=5666 //端口號 nrpe_user=nagios //用戶,就是剛才創建的 nrpe_group=nagios // 組 allowed_hosts=127.0.0.1,192.168.1.127 // 后面要加上nagios的IP dont_blame_nrpe=0 allow_bash_command_substitution=0 debug=0 command_timeout=60 connection_timeout=300 command[check_users]=/mnt/cellar/nagios-plus/libexec/check_users -w 5-c 10
//這里要注意路徑,這個路徑是nagios-plus安裝后生成的libexec下面的文件,當然也可以copy到你想要的目錄下面,-w和-c表示WARNING, CRITICAL,即報警狀態,具體的理論可以到官網上面查看
ommand[check_load]=/mnt/cellar/nagios-plus/libexec/check_load -w15,10,5 -c 30,25,20
command[check_hda1]=/mnt/cellar/nrpe/libexec/check_disk -w 20% -c 10%-p /dev/hda1
command[check_zombie_procs]=/mnt/cellar/nrpe/libexec/check_procs -w 5-c 10 -s Z
command[check_total_procs]=/mnt/cellar/nrpe/libexec/check_procs -w 150-c 200
客戶端當然也要開啟動nrpe服務器才行,當然為了方便,這邊還是寫了一個啟動腳本,放到/etc/init.d下即可,別忘記給執行權限就行(chmod+x nrpe), 也可以通過xinit 來啟動nrpe 當然我認為獨立啟動更方便管理
#!/bin/bash # chkconfig: 2345 88 12 # description: NRPE DAEMON NRPE=/mnt/cellar/nrpe/bin/nrpe NRPECONF=/mnt/cellar/nrpe/etc/nrpe.cfg case "$1" in start) echo -n"Staring NRPE daemon...." $NRPE -c$NRPECONF -d echo "done.." ;; stop) echo -n"Stopping NRPE daemon...." pkill -u nagiosnrpe echo"done.." ;; restart) $0 stop sleep 1 $0 start ;; *) echo "Usage:$0 start|stop|restart" esac exit 0
最后就是如果防火墻開了的別忘記放行5666端口了。
客戶端配置好后,還要在服務端配置相關的文件才行
下面是在nagios的配置
由于是通過nrpe來監控linux客戶端的,所以在nagios上原則上也是要安裝nrpe的,但經驗證,不用安裝,只要從客戶機上面的
如上圖,把check_nrpe拷貝到nagios的下面路徑即可。
nagios的主要的配置文件全在下面的目錄下:
由于nrpe只是一個插件,nagios識別不了這個命令,所以要在commands.cfg中定義一下這個命令,編輯command.cfg 在最下面添加如下,這也就是為何要拷貝check_nrpe命令到nagios端的原因
############ # 'check_nrpe ' command definition define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
然后在下面路徑定義要監控的項目,linux這個目錄是要自己創建的
具體的配置如下:更具體可以的看網盤中的配置文件。
##########define hostname and ipaddress define host{ use linux-server host_name linux1-server alias linux1-server address 192.168.1.109 } ########## ping define service{ use generic-service host_name linux1-server service_description ping check_command check_ping!100.0,20%!500.0,60% } ########## check_users define service{ use generic-service host_name linux1-server service_description login_user check_command check_nrpe!check_users } ########## check_cpu_load define service{ use generic-service host_name linux1-server service_description CPU_load check_command check_nrpe!check_load }
最后當然還是要配置nagios.cfg文件,要讓nagios知道到哪個路徑下去找要監控的項目
最后重啟一下nagios服務即可,如果配置有錯,是不能啟動成功的
當然可以在nagios上先驗證一下如下:
如果能返回結果,說明配置成功
過幾分鐘可以看到結果:
至此windows和linux的監控基本的就這樣了,復雜的一些的,要通過腳本來監控了,具體的可以看網盤
9. 短信報警和郵件報警
這個功能最nagios最強大的功能,報警功能速度之快
當然為了系統安全,建議安裝sendmail服務
yum -yinstall sendmail
然后編輯/etc/mail.rc在最后面加入
set from=cheng7223@163.comsmtp=smtp.163.com setsmtp-auth-user=cheng7223@163.com smtp-auth-password=******* set smtp-auth=login
這里是定義用哪個郵箱來發送報警郵件
最后定義收件人,也就接收人
編輯
definecontact{ contact_name nagiosadmin ; Short name of user use generic-contact ; Inheritdefault values from generic-contact template (defined above) alias Nagios Admin ; Full name of user email chengjian@114995.com ; <<***** CHANGE THIS TO YOUR EMAILADDRESS ****** }
如上紅色的就是接收人的郵箱,如果是多個人,要用逗號隔開才行
配置完以后,一定要重啟sendmail和nagios服務器
下面把客戶機的nrpe服務給停掉來驗證郵件的功能
已經顯示紅色,說明有問題了,再查看郵箱,速度挺快的
這是有問題的報警。再驗證一下,恢復后的報警
至此已經OK。至于通過圖像顯示的功能,這里不做介紹,因為zabbix 在圖像顯示這一塊已經足夠。
新聞標題:nagios的詳細配置和報警
本文鏈接:http://m.newbst.com/article32/pjccpc.html
成都網站建設公司_創新互聯,為您提供網站內鏈、用戶體驗、網站營銷、動態網站、網站收錄、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯