Nagios

一、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官方的文檔,會發現Nagios基本上沒有什么依賴包,只要求系統是Linux或者其他Nagios支持的系統。不過如果你沒有安裝apache(http服務),那么你就沒有那么直觀的界面來查看監控信息了,所以apache姑且算是一個前提條件。關于apache的安裝,網上有很多,照著安裝就是了。安裝之后要檢查一下是否可以正常工作。

知道Nagios 是如何通過插件來管理服務器對象后,現在開始研究它是如何管理遠端服務器對象的。Nagios 系統提供了一個插件NRPE。Nagios 通過周期性的運行它來獲得遠端服務器的各種狀態信息。它們之間的關系如下圖所示:

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

? ? ? ? Nagios 軟件需安裝在一臺獨立的服務器上運行,這臺服務器稱為監控中心,監控中心服務器可以采用 Linux 或 Unix 操作系統;每一臺被監視的硬件主機或服務都運行一個與監控中心服務器進行通信的 Nagios 軟件后臺程序,也可以理解為 Agent 或插件均可。監控中心服務器讀取配置文件中的指令與遠程的守護程序進行通信,并且指示遠程的守護程序進行必要的檢查。雖然 Nagios 軟件必須在 Linux 或 Unix 操作系統上運行,但是遠程被監控的機器可以是任何能夠與其進行通信的主機,根據遠程主機返回的應答,Naigos 將依據配置進行回應;接著 Nagios 將通過本地的機器進行測試,如果檢測返回值不正確,Nagios 將通過一種或多種方式報警。
1.1 中心服務器基本環境
操作系統:CentOS 6.8 x86_64
IP 地址:192.168.36.122
1.2 安裝epel擴展源(nagios)
[root@nagios ~]# yum install epel-release -y
1.3安裝nagios系列軟件
[root@nagios ~]# yum install httpd nagios nagios-plugins-all nagios-plugins-nrpe
1.4 設置修改后臺用戶密碼
[root@nagios ~]# htpasswd -c /etc/nagios/passwd nagiosadmi
默認用戶名:nagiosadmin 密碼:nagiosadmin 通過此命令可以修改密碼。
1.5 配置文件修改
[root@nagios ~]# vim /etc/nagios/nagios.cfg # 配置文件基本不用修改
檢查配置文件是否有語法錯誤:
[root@nagios ~]# nagios -v /etc/nagios/nagios.cfg
1.6 啟動nagios相關服務
[root@nagios ~]# service nagios start [root@nagios ~]# service httpd start
1.7 瀏覽器訪問
http://192.168.36.122/nagios ? ? ? ? ? ? ?# 注意最好要關閉iptables和selinux
通過瀏覽器訪問上述的地址,輸入后臺用戶名和密碼。默認:nagiosadmin nagiosadmi
2.1 說明
對于客戶端類似ping、ssh、http等基礎網絡服務,只需要在服務器端執行簡單網絡探測的命令即可查看相應的服務是否正常運行,因此對于這些服務的監控在客戶端不需要安裝任何的插件及服務。
2.2 客戶端環境
操作系統:CentOS 6.4 x86_64IP 地址:192.168.36.125
2.3添加基本服務
# 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 }
2.4重新加載nagios配置文件
# service nagios reload
通過瀏覽器訪問 http://192.168.36.122/nagios ?通過 Current Status?–>?Service可以看到添加的主機 192.168.36.125 對應的3個服務的列表,剛開始都是 pending 狀態,過一段時間 Status 會變成 OK 字樣。
2.5配置文件說明
我們定義的配置文件中一共監控了三個 service: ssh ping http 這三個項目是使用本地的 nagios 工具去連接遠程機器,及時沒有安裝任何的插件也是可以監測到的。
max_check_attempts 5:嘗試檢測到5次有問題才會告警,如果設置為1,一旦檢測到問題立馬告警normal_check_interval 1:重新檢測的時間間隔,單位是分鐘,默認是 3 分鐘。notification_interval 60:出現異常后故障一直沒有解決,nagios再次對使用者發出通知的時間。設置為0,僅通知一次。
其它的一些 service 諸如負載、磁盤使用等需要服務端通過 nrpe 去連接到遠程主機獲得信息,所以需要遠程主機安裝 nrpe 服務以及相應的插件程序。
3.1監控客戶端
IP 地址:192.168.36.125
3.2 客戶端需要安裝的軟件
[root@nagios ~]# yum install epel-release -y # 安裝epel源 

[root@nagios ~]# yum install nrpe -y # 安裝nrpe服務軟件 

[root@nagios ~]# yum install nagios-plugins-all -y # 安裝所有nagios插件
3.3 配置客戶端nrpe服務能被監控
[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
3.4 客戶端啟動nrpe服務
[root@nagios ~]# service nrpe start
3.5 服務器端配置來監控客戶端
[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 }
3.6重新加載服務器配置
# service nagios reload
通過瀏覽器訪問 http://192.168.36.122/nagios 正常顯示。
Nagios 對服務或主機監控的是一個瞬時狀態,有時候系統管理員需要了解主機在一段時間內的性能及服務的響應狀態,并且形成圖表,這就需要通過查看日志數據來分析。但是這種方式不僅煩瑣,而且抽象。為了能更直觀的查看主機運行狀態,這里采用 PNP 來實現此功能。PNP 是一個小巧的開源軟件包,它是基于 PHP 和 Perl 腳本編寫,PNP 可以利用 rrdtoul 工具將 Nagios 采集的數據繪制成圖表,然后顯示主機或者服務在一段時間內運行的狀況。注:以下操作都是針對中心服務器的。
4.1 安裝pnp4nagios軟件
[root@vip ~]# yum install -y pnp4nagios rrdtool
4.2 修改主配置文件
# 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
4.3 修改command.cfg配置文件
# 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 }
4.4 修改templates.cfg配置文件
# 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 }
4.6重啟服務,再次訪問
[root@vip conf.d]# service nagios restart [root@vip conf.d]# service httpd restart [root@vip conf.d]# service npcd start
瀏覽器訪問:http://192.168.36.122/nagios 點擊 Current Status -> service 即可顯示出”曲線”圖標,等待一段時間,點擊圖標即可看到數據。
5.1 增加聯系人組
# vim /etc/nagios/objects/contacts.cfg
增加如下內容:
define contact{ contact_name 123 use generic-contact alias aming email liwei0526vip@163.com } define contact{ contact_name 456 use generic-contact alias aaa email liwei0526vip@163.com } define contactgroup{ contactgroup_name common alias common members 123,456 }
5.2 在需要告警的相關服務中添加告警聯系人
然后在要需要告警的服務里面加上contactgroup ,這里示例中以 http 服務為例:
define service{ use generic-service,srv-pnp host_name 192.168.36.125 service_description check_http check_command check_http max_check_attempts 5 normal_check_interval 1 contact_groups common # 添加告警聯系人 }
重啟服務,ok。

 

 

原創文章,作者:nene,如若轉載,請注明出處:http://www.www58058.com/90844

(2)
nenenene
上一篇 2017-12-20
下一篇 2017-12-21

相關推薦

  • 權限管理

    權限管理 在linux中的每一個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。 我們先來看看文件的屬性: 權限: r:可獲取文件數據(讀取文件) w:可修改文件的數據(寫入數據) x:可以把此文件提請內核啟動為一個進程 (執行) 文件的權限主要針對三類對象進行定義:  owner: 屬主, u  grou…

    Linux干貨 2016-08-05
  • 馬哥教育網絡班22期+第5周課程練習

    week5: 1、顯示當前系統上root、fedora或user1用戶的默認shell; [root@rs1 ~]# awk -F':' '$1 ~ /^(root|fedora|user1)/{print $1,$NF}' /etc/pa…

    Linux干貨 2016-09-08
  • 學習宣言

    我是喻成,我參加了馬幫第22期的linux運維網絡班,于2016年8月開始跟隨馬哥學習linux, 我的學習宣言是:要享受學習的每一刻,我思故我在。

    Linux干貨 2016-08-15
  • 企業面試題

    要求: 將一下數據進行排序(字母部分已小到大排序) 101.37.8.249 wz417-419/wz119-125/wz7-16/wz571/wz544/wz1-6101.37.21.19 wz545/wz453-456/wz441-444116.62.4.21 wz106-118/wz514-516/wz581/wz190-199/wz572101.37…

    Linux干貨 2017-06-27
  • N21沉舟第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; 方法一: #!/bin/bash         #     dec…

    Linux干貨 2016-08-30
  • linux 磁盤管理

    1、查看系統存在硬盤:lsblk  2、對磁盤分區操作:fdisk /dev/sda p: 顯示當前硬件的分區,包括沒保存的改動 n: 創建新分區 e: 擴展分區 p: 主分區 d: 刪除一個分區 w: 保存退出 t: 修改分區類型 L:顯示所支持的所有類型 3、在CentOS 5和7 使用partprobe同步分區。 4、mkfs -t 文件類型…

    Linux干貨 2017-08-13
欧美性久久久久