一、簡介
Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復后發出正常的郵件或短信通知。
Nagios原名為NetSaint,由Ethan Galstad開發并維護至今。NAGIOS是一個縮寫形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻譯為圣徒,而"Agios"是"saint"的希臘表示方法。Nagios被開發在Linux下使用,但在Unix下也工作得非常好。
主要功能
1)網絡服務監控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
2)主機資源監控(CPU load、disk usage、system logs),也包括Windows主機(使用NSClient++ plugin)
3)可以指定自己編寫的Plugin通過網絡收集數據來監控任何情況(溫度、警告……)
4)可以通過配置Nagios遠程執行插件遠程執行腳本
5)遠程監控支持SSH或SSL加通道方式進行監控
6)簡單的plugin設計允許用戶很容易的開發自己需要的檢查服務,支持很多開發語言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
7)包含很多圖形化數據Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
8)可并行服務檢查
9)能夠定義網絡主機的層次,允許逐級檢查,就是從父主機開始向下檢查
10)當服務或主機出現問題時發出通告,可通過email, pager, sms 或任意用戶自定義的plugin進行通知
11)能夠自定義事件處理機制重新激活出問題的服務或主機
12)自動日志循環
13)支持冗余監控
14)包括Web界面可以查看當前網絡狀態,通知,問題歷史,日志文件等
二、工作原理
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 依次讀取隊列中的信息,再把結果顯示出來。
三、環境說明
Host Name | IP | Software |
server | 192.168.0.113 | Apache、Php、Nagios、nagios-plugins |
client | 192.168.0.112 | nagios-plugins、nrpe |
Server 安裝了nagios軟件,對監控的數據做處理,并且提供web界面查看和管理。當然也可以對本機自身的信息進行監控。
Client 安裝了NRPE等客戶端,根據監控機的請求執行監控,然后將結果回傳給監控機。
關閉防火墻
iptables -F
SELINUX=disabled
四、Nagios安裝
1、服務端
1)安裝epel的擴展源
Centos6默認的yum源里沒有nagios相關的rpm包,但是我們可以安裝一個epel的擴展源:
[root@server ~]# yum install -y epel-release
2)安裝httpd、php、nagios相關包
yum install -y httpd php php-mysql mysql mysql-server mysql-devel php-gd nagios nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe libjpeg libjpeg-devel libpng libpng-devel
注:這里雖然用不上mysql,但是php可能會依賴mysql,所以一并安裝上,或許以后要用mysql呢。
3)設置登錄nagios后臺的用戶和密碼
[root@server ~]# htpasswd -c /etc/nagios/passwd nagiosadmin
password
4)啟動服務
[root@server ~]# service httpd start
[root@server ~]# service nagios start
5)訪問nagios主頁
瀏覽器輸入: http://192.168.0.113/nagios
輸入用戶名 nagiosadmin,密碼為剛剛設置的密碼。
此時,nagios 監控的只有 localhost,還沒有其他機器,要想添加監控客戶機,還需要在客戶端安裝 nagios 相關的軟件包,并且需要在服務端配置。
2、客戶端
1)安裝epel源
[root@client ~]# yum install -y epel-release
2)安裝Nagios插件
[root@client ~]# yum install -y nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe
五、配置
1、客戶端配置
1)編輯nrpe.cfg配置文件
[root@client ~]# vim /etc/nagios/nrpe.cfg
找到:"allowed_hosts=127.0.0.1"
改為:"allowed_hosts=127.0.0.1,192.168.0.113" //后面跟服務端 ip
找到:"dont_blame_nrpe=0"
改為:"dont_blame_nrpe=1"
2)啟動nrpe服務
[root@client ~]# /etc/init.d/nrpe start
2、服務端配置
1)編輯配置文件
[root@server ~]# cd /etc/nagios/conf.d/
[root@server conf.d]# vim 192.168.0.112.cfg //這里我以客戶端ip為命名,加入如下配置
define host{
use linux-server
host_name 192.168.0.112
alias 0.112
address 192.168.0.112
}
define service{
use generic-service
host_name 192.168.0.112
service_description check_ping
check_command check_ping!100.0,20%!200.0,50%
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.0.112
service_description check_ssh
check_command check_ssh
max_check_attempts 5
normal_check_interval 1
notification_interval 60
}
define service{
use generic-service
host_name 192.168.0.112
service_description check_http
check_command check_http
max_check_attempts 5
normal_check_interval 1
}
說明
"max_check_attempts 5" 表示當 nagios 檢測到問題時,一共嘗試檢測 5 次都有問題才會告警,如果該數值為 1,那么檢測到問題立即告警。
"normal_check_interval 1" 表示重新檢測的時間間隔,單位是分鐘,默認是 3分鐘。
"notification_interval 60" 表示在服務出現異常后,故障一直沒有解決,nagios 再次對使用者發出通知的時間,單位是分鐘。如果你認為,所有的事件只需要通知一次就夠了,則把這里的選項設為 0。
以上服務不依賴于客戶端 nrpe 服務,我們可以想象,我們在自己電腦上可以使用 ping或者 telnet 探測遠程任何一臺機器是否存活、是否開啟某個端口或服務。 而當我們想要檢測客戶端上的某個具體服務的情況時,就需要借助于 nrpe 了,比如想知道客戶端機器的負責或磁盤使用情況。
2)重啟 nagios 服務
[root@server conf.d]# nagios -v /etc/nagios/nagios.cfg //先檢測配置文件是否有錯誤
[root@server conf.d]# service nagios restart
然后在瀏覽器里訪問 nagios,刷新會兒發現多出來一臺主機,并且多出來三個服務。
只不過這三個服務不需要和客戶端進行通信就能獲取到。并不是我們想要的,我們想要監控系統負載,監控磁盤使用率等服務,這時候就要使用 nrpe 服務了。下面繼續添加服務。
3、添加其他服務
1)服務端編輯commands.cfg配置文件
[root@server ~]# vim /etc/nagios/objects/commands.cfg //末尾添加如下內容
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
2)繼續在服務端編輯配置文件
[root@server ~]# vim /etc/nagios/conf.d/192.168.0.112.cfg //添加如下內容
define service{
use generic-service
host_name 192.168.0.112
service_description check_load
check_command check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.0.112
service_description check_disk_sda1
check_command check_nrpe!check_sda1
max_check_attempts 5
normal_check_interval 1
}
說明
"check_nrpe!check_load"這里的 check_nrpe 就是在 commands.cfg 剛剛定義的,check_load 是客戶主機上檢測負載的腳本。
"check_sda1" 是客戶主機上檢測磁盤的腳本,我們可以在客戶端通過df -h命令來查看有哪些磁盤。
下面我們接著編輯客戶端配置文件
3)在客戶端上編輯 nrpe.cfg 配置文件
[root@client ~]# vim /etc/nagios/nrpe.cfg
找到check_load,這行就是在服務端上要執行的腳本了。然后把下行的check_hda1 更改兩處:
"command[check_hda1] " 改為 "command[check_sda1]"
"/dev/hda1" 改為 " /dev/sda1"
注意:后面定義的參數-w為 waning狀態,-c 為 critical狀態 。
4)重啟服務
客戶端重啟 nrpe 服務
[root@client ~]# service nrpe restart
服務端重啟 nagios 服務
[root@server ~]# nagios -v /etc/nagios/nagios.cfg //檢測配置文件
[root@server ~]# service nagios restart
此時再到瀏覽器刷新, 會看到又多出來兩個服務, 稍微等一會就可以查看到具體的狀態了。
六、Nagios配置郵件告警
目前 nagios 只能在瀏覽器上查看各個機器各個服務的狀態,當某個機器宕掉或者某個服務宕掉時,我們是不知道,因為我們不可能一直盯著服務看。這時候,就需要用到告警系統了,讓它自動化,當發現問題時及時通知到我們。下面我們配置使用發郵件的方式來實現告警。
以下所有操作都在服務端上完成。
1)首先定義發郵件接收者
[root@server ~]# vim /etc/nagios/objects/contacts.cfg //末尾添加如下內容
define contact{
contact_name user1
use generic-contact
alias aaa
email user1@qq.com
}
define contact{
contact_name user2
use generic-contact
alias bbb
email user2@qq.com
}
define contactgroup{
contactgroup_name common
alias common
members user1, user2
}
說明
contacts.cfg 里面既可以定義 user,也可以定義 group, 先定義兩個 user: user2 和 user2,然后把這兩個 user 加入到 common 組里面。等會發郵件就發給 common 組就可以了,那這樣 user1@qq.com 和 user2@qq.com 都會收到郵件。
2)然后在要需要告警的服務里面加上 contactgroup
下面針對 check_load 服務增加告警相關的配置:
[root@server ~]# vim /etc/nagios/conf.d/192.168.0.112.cfg //增加標紅處
define service{
use generic-service
host_name 192.168.0.112
service_description check_load
check_command check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
contact_groups common
notifications_enabled 1
notification_period 24x7
notification_options w,u,c,r
}
說明
notifications_enabled 1:表示是否開啟提醒功能。1 為開啟,0 為禁用。一般,這個選項會在主配置文件(nagios.cfg)中定義,效果相同。
notification_period 24x7:表示發送提醒的時間段。非常重要的主機(服務)我定義為 7×24,一般的主機(服務)就定義為上班時間。如果不在定義的時間段內,無論什么問題發生,都不會發送提醒。
notification_options w,u,c,r:表示 service 的狀態。w 為 waning, u 為 unknown, c 為 critical, r
為 recover(恢復了),類似的還有一個 host 對應的狀態:d,u,r d 狀態為 DOWN, u 狀態為UNREACHABLE , r 狀態恢復為 OK,需要加入到 host 的定義配置里。
3)編輯完配置文件后,需要重啟 nagios 服務
[root@server ~]# nagios -v /etc/nagios/nagios.cfg
[root@server ~]# service nagios restart
拓展文檔
編譯安裝:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html
調用短信接口:http://www.aminglinux.com/bbs/thread-7380-1-1.html
整合微信:http://www.aminglinux.com/bbs/thread-7917-1-1.html
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文名稱:Linux監控軟件之Nagios-創新互聯
文章出自:http://m.newbst.com/article24/dephce.html
成都網站建設公司_創新互聯,為您提供網站設計、網站改版、外貿建站、營銷型網站建設、靜態網站、自適應網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯