一、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每次從隊首開始讀取信息,並把狀態通過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基本上無依賴包,只要求系統是Linux或者其他Nagios支持的系統。安裝apache可提供web頁面訪問。
Nagios如何管理遠端服務器對象?
Nagios 系統提供了一個插件NRPE。通過周期性運行獲得遠端服務器狀態信息。它們之間關系如下:
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 的Web界面需要有 Web 服務器和 PHP 運行環境。本文 Web 服務器使用 Apache,用戶也可以自行選擇使用其他 Web 服務器,如Nginx等。
以下命令均在root下進行:
yum install httpd php yum install gcc glibc glibc-common unzip yum install gd gd-devel
安裝步驟
1 創建系統用戶
創建 nagios 用戶並設置密碼
/usr/sbin/useradd -m nagios passwd nagios
創建 nagcmd 用戶組,將 nagios 和 apache(web 服務器的運行用戶) 用戶添加至該組
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios /usr/sbin/usermod -a -G nagcmd apache
2 下載 Nagios 及其插件
可以前往 https://www.nagios.org 獲取最新的軟件包,這里以 Nagios 核心 4.2.1,以及插件 2.1.2 為例:
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.gz
3 Nagios 核心的編譯與安裝
解壓源碼包
tar -zxvf nagios-4.2.1.tar.gz cd nagios-4.2.1
編譯配置信息(以下命令切換到目錄.../nagios-4.2.1下執行)
./configure --with-command-group=nagcmd
編譯
make all
安裝 Nagios,並初始化腳本及基礎配置文件
make install make install-init make install-config make install-commandmode
此時先不用啟動 Nagios,安裝步驟尚未完成
4 自定義配置信息
配置文件在目錄 /usr/local/nagios/etc
下,通過這些基礎配置信息可以直接啟動 Nagios,現在唯一需要更改的是聯系人信息,可以編輯 /usr/local/nagios/etc/objects/contacts.cfg
,將聯系人郵件地址換成你自己的。
vi /usr/local/nagios/etc/objects/contacts.cfg
5 配置 web 服務器
創建 Apache 的配置文件,配置文件在目錄 /etc/httpd/conf.d/
make install-webconf
為 Nagios 的 Web 界面創建 nagiosadmin
用戶,並設置密碼。
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
啟動 Apache
systemctl start httpd
6 編譯並安裝 Nagios 插件包
Nagios 實際的監控腳本都是通過插件實現的,本文中的插件包是官方提供插件包(大約50個用於監控的插件),更多的插件可以去社區下載(https://exchange.nagios.org/),當然也可以自己編寫插件。
解壓插件包
tar -zxvf nagios-plugins-2.1.2.tar.gz cd nagios-plugins-2.1.2
編譯並安裝(以下命令切換到
nagios-plugins-2.1.2目錄下執行)
./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install
7 啟動 Nagios 核心
將 Nagios 核心加入自動啟動列表
chkconfig --add nagios chkconfig nagios on
檢查 Nagios 基礎配置文件(在之后修改過配置文件后,都可以用下邊的方式進行檢查)
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
切換目錄到安裝路徑(這里是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 這五個目錄,如果存在則可以表明程序被正確的安裝到系統了。Nagios 各個目錄用途說明如下:
bin | Nagios 可執行程序所在目錄 |
etc | Nagios 配置文件所在目錄 |
sbin | Nagios CGI 文件所在目錄,也就是執行外部命令所需文件所在的目錄 |
share | Nagios網頁文件所在的目錄 |
libexec | Nagios 外部插件所在目錄 |
var | Nagios 日志文件、lock 等文件所在的目錄 |
var/archives | Nagios 日志自動歸檔目錄 |
var/rw | 用來存放外部命令文件的目錄 |
如果沒有錯誤,就可以直接啟動 Nagios
systemctl start nagios
查看nagios是否啟動
systemctl status nagios
8 SELinux 設置
首先查詢SElinux狀態:
sestatus
A.如果此時狀態是enforcing,會導致訪問 Nagios CGIs 時出現 Internal Server Error 的錯誤。
為避免這個錯誤可以:
a)在SELinux配置文件/etc/selinux/config中
disabled SELinux,重啟系統;
b)臨時將其設置為 Permissive 模式,但僅本次開機有效,下次啟動依然是enforce:
setenforce 0
B.如果不想關閉 SELinux 或者將其設置為 Permissive ,即在 enforcing/targeted 模式下可以使用如下命令進行設置
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
9 登錄 Web 界面查看
訪問 http://localhost/nagios
,通過 nagiosadmin 用戶及剛才設置的密碼登錄。
點擊左側目錄中的 Service,可以查看當前監控的服務。
10 其他配置
至此,Nagios 的基礎安裝就結束了。這里還要補充說明的一下,服務器的防火牆需要允許 apache 80 端口的訪問,可以通過如下命令設置防火牆,允許 80 端口的訪問。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
如果不能訪問網頁nagios,采取直接關閉防火牆:
systemctl status firewalld.service
systemctl stop firewalld.service
注意此時還無法發送郵件
參考http://blog.csdn.net/firstar521/article/details/52848393