一、Nagios簡介
Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復后發出正常的郵件或短信通知。
Nagios原名為NetSaint,由Ethan Galstad開發并維護至今。NAGIOS是一個縮寫形式: “Nagios Ain’t Gonna Insist On Sainthood” Sainthood 翻譯為圣徒,而”Agios”是”saint”的希臘表示方法。Nagios被開發在Linux下使用,但在Unix下也工作得非常好。
主要功能
- 網絡服務監控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
- 主機資源監控(CPU load、disk usage、system logs),也包括Windows主機(使用NSClient++ plugin)
- 可以指定自己編寫的Plugin通過網絡收集數據來監控任何情況(溫度、警告……)
- 可以通過配置Nagios遠程執行插件遠程執行腳本
- 遠程監控支持SSH或SSL加通道方式進行監控
- 簡單的plugin設計允許用戶很容易的開發自己需要的檢查服務,支持很多開發語言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
- 包含很多圖形化數據Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
- 可并行服務檢查
- 能夠定義網絡主機的層次,允許逐級檢查,就是從父主機開始向下檢查
- 當服務或主機出現問題時發出通告,可通過email, pager, sms 或任意用戶自定義的plugin進行通知
- 能夠自定義事件處理機制重新激活出問題的服務或主機
- 自動日志循環
- 支持冗余監控
- 包括Web界面可以查看當前網絡狀態,通知,問題歷史,日志文件等
二、Nagios工作原理
Nagios的功能是監控服務和主機,但是他自身并不包括這部分功能,所有的監控、檢測功能都是通過各種插件來完成的。
啟動Nagios后,它會周期性的自動調用插件去檢測服務器狀態,同時Nagios會維持一個隊列,所有插件返回來的狀態信息都進入隊列,Nagios每次都從隊首開始讀取信息,并進行處理后,把狀態結果通過web顯示出來。
Nagios提供了許多插件,利用這些插件可以方便的監控很多服務狀態。安裝完成后,在nagios主目錄下的/libexec里放有nagios自帶的可以使用的所有插件,如,check_disk是檢查磁盤空間的插件,check_load是檢查CPU負載的,等等。每一個插件可以通過運行./check_xxx –h 來查看其使用方法和功能。
Nagios可以識別4種狀態返回信息,即 0(OK)表示狀態正常/綠色、1(WARNING)表示出現警告/黃色、2(CRITICAL)表示出現非常嚴重的錯誤/紅色、3(UNKNOWN)表示未知錯誤/深黃色。Nagios根據插件返回來的值,來判斷監控對象的狀態,并通過web顯示出來,以供管理員及時發現故障。
四種監控狀態
再說報警功能,如果監控系統發現問題不能報警那就沒有意義了,所以報警也是nagios很重要的功能之一。但是,同樣的,Nagios 自身也沒有報警部分的代碼,甚至沒有插件,而是交給用戶或者其他相關開源項目組去完成的。
Nagios 安裝,是指基本平臺,也就是Nagios軟件包的安裝。它是監控體系的框架,也是所有監控的基礎。
打開Nagios官方的文檔,會發現Nagios基本上沒有什么依賴包,只要求系統是Linux或者其他Nagios支持的系統。不過如果你沒有安裝apache(http服務),那么你就沒有那么直觀的界面來查看監控信息了,所以apache姑且算是一個前提條件。關于apache的安裝,網上有很多,照著安裝就是了。安裝之后要檢查一下是否可以正常工作。
知道Nagios 是如何通過插件來管理服務器對象后,現在開始研究它是如何管理遠端服務器對象的。Nagios 系統提供了一個插件NRPE。Nagios 通過周期性的運行它來獲得遠端服務器的各種狀態信息。它們之間的關系如下圖所示:
Nagios 通過NRPE 來遠端管理服務
1. Nagios 執行安裝在它里面的check_nrpe 插件,并告訴check_nrpe 去檢測哪些服務。
2. 通過SSL,check_nrpe 連接遠端機子上的NRPE daemon
3. NRPE 運行本地的各種插件去檢測本地的服務和狀態(check_disk,..etc)
4. 最后,NRPE 把檢測的結果傳給主機端的check_nrpe,check_nrpe 再把結果送到Nagios狀態隊列中。
5. Nagios 依次讀取隊列中的信息,再把結果顯示出來。
三、安裝配置nagios
# vim /etc/nagios/conf.d/192.168.36.125.cfg
define host{ # 定義主機:192.168.36.125 use linux-server host_name 192.168.36.125 alias 36.125 address 192.168.36.125 } define service{ # 添加 ping 監控服務 use generic-service host_name 192.168.36.125 service_description check_ping check_command check_ping!100.0,20%!200.0,50% max_check_attempts 5 normal_check_interval 1 } define service{ # 添加 ssh 監控服務 use generic-service host_name 192.168.36.125 service_description check_ssh check_command check_ssh max_check_attempts 5 normal_check_interval 1 } define service{ # 添加 http 監控服務 use generic-service host_name 192.168.36.125 service_description check_http check_command check_http max_check_attempts 5 normal_check_interval 1 }
# service nagios reload
[root@nagios ~]# yum install epel-release -y # 安裝epel源 [root@nagios ~]# yum install nrpe -y # 安裝nrpe服務軟件 [root@nagios ~]# yum install nagios-plugins-all -y # 安裝所有nagios插件
[root@nagios ~]# vim /etc/nagios/nrpe.cfg allowed_hosts=127.0.0.1,192.168.36.122# 添加192.168.36.122來監控 dont_blame_nrpe=1 # 修改0為1,設置可以傳遞參數 command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
[root@nagios ~]# service nrpe start
[root@vip ~]# vim /etc/nagios/objects/commands.cfg define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } [root@vip ~]# vim /etc/nagios/conf.d/192.168.0.28.cfg define service{ # 添加監控負載 use generic-service host_name 192.168.0.28 service_description check_load check_command check_nrpe!check_load max_check_attempts 5 normal_check_interval 1 } define service{ # 添加監控sda1磁盤 use generic-service host_name 192.168.0.28 service_description check_disk_hda1 check_command check_nrpe!check_hda1 max_check_attempts 5 normal_check_interval 1 }
# service nagios reload
[root@vip ~]# yum install -y pnp4nagios rrdtool
# vim /etc/nagios/nagios.cfg process_performance_data=1 host_perfdata_command=process-host-perfdata service_perfdata_command=process-service-perfdata enable_environment_macros=1
# vim /etc/nagios/objects/commands.cfg process-host-perfdata和process-service-perfdata重新定義 define command { command_name process-service-perfdata command_line /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl } define command { command_name process-host-perfdata command_line /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl -d HOSTPERFDATA }
# vim /etc/nagios/objects/templates.cfg define host { name hosts-pnp register 0 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_ process_perf_data 1 } define service { name srv-pnp register 0 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ process_perf_data 1 } 4.5 修改host和service的配置
# vim /etc/nagios/conf.d/192.168.36.125.cfg 所有主機使用的模板后邊添加hosts-pnp: define host{ use linux-server,hosts- 所有服務使用的模板后邊添加srv-pnp: define service{ use generic-service,srv-pnp host_name 192.168.0.48 service_description check_disk_hda1 check_command check_nrpe!check_hda1 }
原創文章,作者:nene,如若轉載,請注明出處:http://www.www58058.com/90844