Linux筆記網絡監控之nagios安裝與配置

nagios簡介

Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。
  Nagios原名爲NetSaint,由Ethan Galstad開發並維護至今。NAGIOS是一個縮寫形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻譯爲聖徒,而"Agios"是"saint"的希臘表示方法。Nagios被開發在Linux下使用,但在Unix下也工做得很是好。php

主要功能:ios

1.網絡服務監控(SMTP、POP三、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
2.主機資源監控(CPU load、disk usage、system logs),也包括Windows主機(使用NSClient++ plugin)能夠指定本身編寫的Plugin經過網絡收集數據來監控任何狀況(溫度、警告……)能夠經過配置Nagios遠程執行插件遠程執行腳本
3.遠程監控支持SSH或SSL加通道方式進行監控簡單的plugin設計容許用戶很容易的開發本身須要的檢查服務,支持不少開發語言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)包含不少圖形化數據Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
4.可並行服務檢查可以定義網絡主機的層次,容許逐級檢查,就是從父主機開始向下檢查
當服務或主機出現問題時發出通告,可經過email, pager, sms 或任意用戶自定義的plugin進行通知
五、可以自定義事件處理機制從新激活出問題的服務或主機
• 自動日誌循環
• 支持冗餘監控
• 包括Web界面能夠查看當前網絡狀態,通知,問題歷史,日誌文件等
Nagios工做原理
  Nagios的功能是監控服務和主機,但自身並無該功能,全部的監控、檢測功能都是經過插件來完成。
  Nagios週期性調用插件檢測服務器狀態,並維持一個隊列,全部插件返回狀態信息都進入隊列,Nagios每次從隊首開始讀取信息,並把狀態經過web顯示。
Nagios提供了許多插件,利用這些插件能夠監控服務狀態。安裝完成後,在nagios主目錄下/libexec放有nagios自帶全部插件,如check_disk檢查磁盤空間插件,check_load檢查CPU負載等等。每個插件可運行./check_xxx –h 查看其使用方法和功能
工做原理圖以下:web

Linux筆記網絡監控之nagios安裝與配置

Nagios安裝與配置

一.nagios相關軟件安裝

環境準備
安裝基礎編譯環境軟件
yum install php gcc glibc glibc-common unzip gd gd-devel –yshell

解決perl編譯問題
echo "export LC_ALL=C" >> /etc/profileapache

解決時間同步問題centos

crontab -e
/10 * /bin/sh /usr/sbin/ntpdate.sh >/dev/null 2>&1
[root@centos5 nagios-plugins-2.1.2]# cat /usr/sbin/ntpdate.sh
#!/bin/bash
#date update
ntpdate s1a.time.edu.cn瀏覽器

1.建立nagios用戶及相關的組

[root@nagios-server ~]#
useradd -m nagios
passwd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apacheruby

2.Nagios服務端安裝

下載nagios服務端軟件及插件
[root@nagios-server ~]#
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.1.tar.gz
wget https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gzbash

3. 源碼編譯安裝nagios以及相關插件

[root@nagios-server ~]#
tar zxf nagios-4.2.1.tar.gz
cd nagios-4.2.1
./configure --with-command-group=nagcmd服務器

沒有提示任何錯誤出現如下畫面說明配置成功

Linux筆記網絡監控之nagios安裝與配置

接下來安裝提示進行編譯
[root@nagios-server ~]#
make all

編譯安裝並初始化配置文件
[root@nagios-server ~]#

make install
make install-init
make install-config
make install-webconf
make install-commandmode

安裝並編譯nagios插件
[root@nagios-server ~]#
tar -zxvf nagios-plugins-2.1.2.tar.gz
cd nagios-plugins-2.1.2
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

四、配置郵件聯繫人信息

配置文件在目錄 /usr/local/nagios/etc 下,經過這些基礎配置信息能夠直接啓動 Nagios,如今惟一須要更改的是聯繫人信息,能夠編輯 /usr/local/nagios/etc/objects/contacts.cfg ,將聯繫人郵件地址換成你本身的。
Linux筆記網絡監控之nagios安裝與配置

若系統中需經過安裝sedmail來發送郵件
[root@nagios-server ~]#
yum install sendmail sendmail-cf

5.爲nagios建立登陸web界面的密碼

[root@nagios-server ~]#
htpasswd -c /usr/local/nagios/etc/htpasswd.users admin

6. 編譯安裝nagios插件

[root@nagios-server ~]#

tar zxf nagios-plugins-2.1.2.tar.gz
cd nagios-plugins-2.1.2
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

7. 設置nagios服務開機自啓並啓動ngios

設置開機自啓
[root@nagios-server nagios]# systemctl enable nagios
[root@nagios-server]# chkconfig --list |grep nagios
nagios 0:off 1:off 2:on 3:on 4:on 5:on 6:off

啓動nagios服務

[root@nagios-server]# systemctl start nagios

檢查是否啓動成功
[root@nagios-server nagios]# systemctl start nagios
[root@nagios-server nagios]# ps -ef |grep nagios
nagios 24997 1 0 17:46 ? 00:00:02 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
nagios 25003 24997 0 17:46 ? 00:00:01 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
nagios 25036 24997 0 17:46 ? 00:00:00 [nagios] <defunct>
nagios 25037 24997 0 17:46 ? 00:00:00 [nagios] <defunct>
nagios 25038 24997 0 17:46 ? 00:00:00 [nagios] <defunct>
nagios 25039 24997 0 17:46 ? 00:00:00 [nagios] <defunct>
nagios 25094 24997 0 17:54 ? 00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
nagios 25095 24997 0 17:54 ? 00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
nagios 25096 24997 0 17:54 ? 00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
nagios 25097 24997 0 17:54 ? 00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
root 25521 25118 0 19:21 pts/0 00:00:00 grep --color=auto nagios

存在nagios進程說明已經啓動成功了

檢查nagios主配置文件語法是否正確br/>[root@nagios-server]#
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

咱們只需關注如下兩項參數便可,Total Errors 爲0就說明語法正確。
Total Warnings: 0
Total Errors: 0

接下來在瀏覽器輸入 http://服務器ip地址/nagios 登錄nagios,用戶名和密碼爲第五步用htpasswd設置的, 出現如下畫面說明您已經安裝成功了

Linux筆記網絡監控之nagios安裝與配置

二.驗證nagios服務端的監控功能,如實現監控服務器對被監控服務器磁盤負載狀況的監控。

拓撲以下
Linux筆記網絡監控之nagios安裝與配置

環境準備

1.下載安裝nrpe

[root@nagios-server]#
wget https://jaist.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar zxf nrpe-2.15.tar.gz
cd nrpe-2.15
./configure
make all
make install-plugin
make install-daemon

我在安裝nrpe遇到如下錯誤

Linux筆記網絡監控之nagios安裝與配置

安裝openssl-devel庫便可解決
[root@centos6 nrpe-2.15]# yum install openssl-devel

到此爲止,nagios-server服務端的實驗環境就準備好了

2.在nagios-client以一樣的方式安裝nigios-plugins插件和nrpe便可,詳細安裝步驟參考上文。

3. server-client端配置

1)加入能夠監控當前client的nagios-server端的ip地址以下
allow_hosts=192.168.10.136
可用vi編輯nrpe的配置文件/usr/local/nagios/etc/nrpe.cfg修改大約在79行
我這裏用sed命令修改
[root@nagios-client ~]# sed -i 's/allowed_hosts=127.0.0.1/allowed_hosts=192.168.10.136/g' /usr/local/nagios/etc/nrpe.cfg
檢查是否修改爲功

Linux筆記網絡監控之nagios安裝與配置

2)/usr/local/nagios/etc/nrpe.cfg文件結尾添加要監控的插件
Linux筆記網絡監控之nagios安裝與配置
畫圈部分爲默認監控的插件,若是須要監控其餘內容,可添加並安裝相關的插件,本實驗監控的是磁盤負載check_load,已包含在默認監控的內容裏面了

4) 啓動nrpe

[root@nagios-client ~]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

設置開機自啓
echo 「/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d」 >> /etc/rc.local

檢查服務是否啓動成功

[root@nagios-client ~]# netstat -lnt |grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0: LISTEN
tcp6 0 0 :::5666 :::
LISTEN

[root@nagios-client ~]# lsof -i :5666
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nrpe 46042 nagios 4u IPv4 55448 0t0 TCP :5666 (LISTEN)
nrpe 46042 nagios 5u IPv6 55449 0t0 TCP
:5666 (LISTEN)

nrpe端口和進程都存在說明nrpe啓動成功。

提示:重啓nrpe 能夠先用killall殺掉nrpe進程再啓動便可

4. Nagios-server端配置。

1)建立host.cfg主機文件添加被監控的主機
這裏使用lohosthost.cfg做爲模板取前51行做爲host.cfg的模板
[root@nagios-server ~]#
head -51 /usr/local/nagios/etc/objects/localhost.cfg > /usr/local/nagios/etc/objects/hosts.cfg

用vi編輯hosts.cfg改成如下內容
Linux筆記網絡監控之nagios安裝與配置
受權
[root@nagios-server ~]# chwon -R nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg

2)建立services.cfg監控服務文件添加要監控的服務
[root@nagios-server ~]#
touch /usr/local/nagios/etc/objects/services.cfg
chwon -R nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg

編輯 /usr/local/nagios/etc/objects/services.cfg文件輸入以下內容

[root@nagios-server objects]# vi /usr/local/nagios/etc/objects/services.cfg
define service {
use generic-service ;使用templates.cfg模板的監控參數
host_name nagios-client ;被監控服務端的主機名
service_description check load
check_command check_nrpe!check_load ;要監控的服務命令
}

注意:默認使用templates.cfg模板監控的參數,若不須要,可自行定義

3)在commands.cfg 中加入check_nrp插件配置
編輯/usr/local/nagios/etc/objects/commands.cfg 在文件結尾添加如下內容

define command{
command_name check_nrpe
command_line $USER1$check_nrpe -H $HOSTADDRESS$ -c $ARG1$

}

4) 檢查nagios主配置文件並重啓

[root@nagios-server ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Total Warnings: 0
Total Errors: 0

重啓

[root@nagios-server ~]# /etc/init.d/nagios reload
Reloading nagios configuration (via systemctl): [ OK ]

5) 客戶端測試是否有監控的主機及服務
打開瀏覽器出現瞭如下畫面並無成功監控到主機以及相關的服務
Linux筆記網絡監控之nagios安裝與配置
細讀原來是權限出了問題,咱們以前配置登陸名admin沒有足夠的權限來訪問cgi

解決方法:
把cgi.cfg的nagiosadmin所有替換成admin(咱們以前設置的登陸名)

[root@nagios-server ~]# sed -i 's/nagiosadmin/admin/g' /usr/local/nagios/etc/cgi.cfg

檢查語法並重啓nagios
[root@nagios-server ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Total Warnings: 0
Total Errors: 0

重啓

[root@nagios-server ~]# /etc/init.d/nagios reload
Reloading nagios configuration (via systemctl): [ OK ]

打開瀏覽器訪問
能夠看到被監控的主機的相關信息

Linux筆記網絡監控之nagios安裝與配置

可是查看監控的服務時出現瞭如下異常

Linux筆記網絡監控之nagios安裝與配置

4.排錯

1).查看nagios的錯誤日誌

[root@nagios-server ~]# tail -100 /usr/local/nagios/var/nagios.log
[1523721600] LOG ROTATION: DAILY
[1523721600] LOG VERSION: 2.0
[1523721600] CURRENT HOST STATE: nagios-client;UP;HARD;1;PING OK - Packet loss = 0%, RTA = 1.16 ms
[1523721600] CURRENT SERVICE STATE: nagios-client;check load;CRITICAL;HARD;3;(Return code of 255 is out of bounds)
[1523721614] Warning: Return code of 255 for check of service 'check load' on host 'nagios-client' was out of bounds.
[1523721945] Caught SIGHUP, restarting...
日誌大概說不能用check_load不能返回結果,看一下是否是權限問題

檢查客戶端nrpe配置文件是否容許服務器地址進行訪問

Linux筆記網絡監控之nagios安裝與配置
發現是服務端的地址並無什麼問題

2).在服務用check_load腳本手動檢查一下結果
[root@nagios-server ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.10.135 -c check_load
connect to address 192.168.10.135 port 5666: No route to host

提示沒有主機的路由,查看路由表
[root@nagios-server ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.2 0.0.0.0 UG 0 0 0 eno16777728
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eno16777728
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728

這就奇怪了,明明是有默認路由的,互相ping也通

3).檢查防火牆和SELinux
[root@nagios-client ~]# systemctl status firewall.service
Unit firewall.service could not be found.

[root@nagios-client ~]# systemctl status setenfore.service
Unit setenfore.service could not be found.

[root@nagios-client ~]# systemctl status iptables

  • iptables.service - IPv4 firewall with iptables
    Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
    Active: active (exited) since Sun 2018-04-15 01:26:52 CST; 9s ago
    Process: 75135 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)
    Process: 75653 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
    Main PID: 75653 (code=exited, status=0/SUCCESS)

Apr 15 01:26:52 nagios-client systemd[1]: Starting IPv4 firewall with iptables...
Apr 15 01:26:52 nagios-client iptables.init[75653]: iptables: Applying firewall rules: [ 肯定 ]
Apr 15 01:26:52 nagios-client systemd[1]: Started IPv4 firewall with iptables.

最後發現是防火牆iptables沒關,會不會是防火牆的問題?先把它關了試試

[root@nagios-client ~]# systemctl stop iptables
[root@nagios-client ~]# systemctl status iptables

  • iptables.service - IPv4 firewall with iptables
    Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
    Active: inactive (dead) since Sun 2018-04-15 01:30:07 CST; 12s ago
    Process: 75764 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)
    Process: 75653 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
    Main PID: 75653 (code=exited, status=0/SUCCESS)

Apr 15 01:26:52 nagios-client systemd[1]: Starting IPv4 firewall with iptables...
Apr 15 01:26:52 nagios-client iptables.init[75653]: iptables: Applying firewall rules: [ 肯定 ]
Apr 15 01:26:52 nagios-client systemd[1]: Started IPv4 firewall with iptables.
Apr 15 01:30:06 nagios-client systemd[1]: Stopping IPv4 firewall with iptables...
Apr 15 01:30:06 nagios-client iptables.init[75764]: iptables: Setting chains to policy ACCEPT: filter [ 肯定 ]
Apr 15 01:30:06 nagios-client iptables.init[75764]: iptables: Flushing firewall rules: [ 肯定 ]
Apr 15 01:30:07 nagios-client iptables.init[75764]: iptables: Unloading modules: [ 肯定 ]
Apr 15 01:30:07 nagios-client systemd[1]: Stopped IPv4 firewall with iptables.

4.在服務端再次用命令檢測一下
[root@nagios-server ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.10.135 -c check_load
OK - load average: 0.97, 0.91, 0.88|load1=0.970;15.000;30.000;0; load5=0.910;10.000;25.000;0; load15=0.880;5.000;20.000;0;

能夠看到結果了,果真是防火牆的問題,配置容易,排錯難,遇到問題是好事,多點查閱相關的文檔,多角度去考慮問題,會讓你成長地更快!

咱們打開瀏覽器再次查看,Status是OK,這恭喜你配置完成了

Linux筆記網絡監控之nagios安裝與配置

其實,不少其餘的服務也能夠經過此種方式來監控,以上我列舉的只是其中一種服務而已,我就不一一舉例了。

學習小提示:

學習須要總結,否則時間長了很快忘記。作筆記很重要,人腦的記憶是有限的,不可能記住所有的知識,這就須要咱們用硬盤來幫咱們記住具體的知識細節,咱們只需記住概要便可,之後忘了再翻翻筆記,你會發現之前的知識又從新回到了腦海中。

相關文章
相關標籤/搜索