nagios 詳細部署操作(一)

這幾天在搗鼓nagios,各種糾結,現在記錄下過程以及遇到的問題,希望可以幫到別人。

基本上是參照一位前輩的帖子做的,帖子思路清晰,步驟詳細,轉載於此。

一、Nagios簡介

Nagios logo

  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顯示出來,以供管理員及時發現故障。

四種監控狀態

2

  再說報警功能,如果監控系統發現問題不能報警那就沒有意義了,所以報警也是nagios很重要的功能之一。但是,同樣的,Nagios 自身也沒有報警部分的代碼,甚至沒有插件,而是交給用戶或者其他相關開源項目組去完成的。

  Nagios 安裝,是指基本平臺,也就是Nagios軟件包的安裝。它是監控體系的框架,也是所有監控的基礎。

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

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

1

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 NameOSIPSoftware
Nagios-ServerCentOS release 6.3 (Final)192.168.1.108Apache、Php、Nagios、nagios-plugins
Nagios-LinuxCentOS release 5.8 (Final)192.168.1.111nagios-plugins、nrpe
Nagios-WindowsWindows XP192.168.1.113NSClient++

Server 安裝了nagios軟件,對監控的數據做處理,並且提供web界面查看和管理。當然也可以對本機自身的信息進行監控。

Client 安裝了NRPE等客戶端,根據監控機的請求執行監控,然後將結果回傳給監控機。

防火牆已關閉/iptables: Firewall is not running.

SELINUX=disabled

四、實驗目標

20103056-bc6618242a724ddb89ce3d15369e672

五、Nagios服務端安裝

5.1 基礎支持套件gcc glibc glibc-common gd gd-devel xinetd openssl-devel

# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel

8

如果系統中沒有這些套件,使用yum 安裝

# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel

5.2 創建nagios用戶和用戶組

# useradd -s /sbin/nologin nagios

# mkdir /usr/local/nagios

# chown -R nagios.nagios /usr/local/nagios

6

查看nagios 目錄的權限

# ll -d /usr/local/nagios/

7

5.3 編譯安裝Nagios

# wgethttp://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz

# tar zxvf nagios-3.5.1.tar.gz

# cd nagios

# ./configure --prefix=/usr/local/nagios

9

10

# make all

11

12

# make install

13

# make install-init

14

# make install-commandmode

15

# make install-config

16

# chkconfig --add nagios

# chkconfig --level 35 nagios on

# chkconfig --list nagios

17

5.4 驗證程序是否被正確安裝

切換目錄到安裝路徑(這裏是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 這五個目錄,如果存在則可以表明程序被正確的安裝到系統了。Nagios 各個目錄用途說明如下:

binNagios 可執行程序所在目錄
etcNagios 配置文件所在目錄
sbinNagios CGI 文件所在目錄,也就是執行外部命令所需文件所在的目錄
shareNagios網頁文件所在的目錄
libexecNagios 外部插件所在目錄
varNagios 日誌文件、lock 等文件所在的目錄
var/archivesNagios 日誌自動歸檔目錄
var/rw用來存放外部命令文件的目錄

5.5 安裝Nagios 插件

# wgethttp://assets.nagios.com/downloads/nagiosplugins/nagios-plugins-1.5.tar.gz

# tar zxvf nagios-plugins-1.5.tar.gz

# cd nagios-plugins-1.5

# ./configure --prefix=/usr/local/nagios

# make && make install

18

 

wKiom1MOADvz4xpjAAFgPftC4Z4784.jpg

注意:上圖是編譯完的最終提示,需要注意的是若如紅框中所示,說明mysql-devel沒有安裝,這樣是無法不會產生check_mysql插件,自然也就不能對mysql進行監控。一般可通過:

yum install mysql-devel* 進行安裝。

我在安裝過程中是通過下載的MySQL-devel rpm包進行安裝的。這裏切記不能安裝比mysql server版本高的MySQL-devel,否則rpm安裝時會報如下錯誤:

wKiom1MOAs_xkNFLAABLz94QM1c072.jpg

這一般是由於安裝的軟件版本過高引起的,可換低版本的軟件嘗試安裝。

5.6 安裝與配置Apache和Php

Apache 和Php 不是安裝nagios 所必須的,但是nagios提供了web監控界面,通過web監控界面可以清晰的看到被監控主機、資源的運行狀態,因此,安裝一個web服務是很必要的。
需要注意的是,nagios在nagios3.1.x版本以後,配置web監控界面時需要php的支持。這裏我們下載的nagios版本爲nagios-3.4.3,因此在編譯安裝完成apache後,還需要編譯php模塊,這裏選取的php版本爲php5.4.10。

a. 安裝Apache

# wgethttp://archive.apache.org/dist/httpd/httpd-2.2.23.tar.gz

# tar zxvf httpd-2.2.23.tar.gz

# cd httpd-2.2.23

# ./configure --prefix=/usr/local/apache2

# make && make install

22

若出現錯誤:

01211923-d930a24ac2e849809cb2b86c78c543d

則在編譯時入加 --with-included-apr 即可解決。

b. 安裝Php

# wgethttp://cn2.php.net/distributions/php-5.4.10.tar.gz

# tar zxvf php-5.4.10.tar.gz

# cd php-5.4.10

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs

23

# make && make install

24

c. 配置apache
找到apache 的配置文件/usr/local/apache2/conf/httpd.conf      
找到:      

User daemon Group daemon 

修改爲

User nagios Group nagios 

然後找到

<IfModule dir_module>   DirectoryIndex index.html </IfModule>

修改爲

<IfModule dir_module>   DirectoryIndex index.html index.php </IfModule>

接着增加如下內容:

AddType application/x-httpd-php .php 

爲了安全起見,一般情況下要讓nagios 的web 監控頁面必須經過授權才能訪問,這需要增加驗證配置,即在httpd.conf 文件最後添加如下信息:

#setting for nagios ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" <Directory "/usr/local/nagios/sbin">      AuthType Basic      Options ExecCGI      AllowOverride None      Order allow,deny      Allow from all      AuthName "Nagios Access"      AuthUserFile /usr/local/nagios/etc/htpasswd             //用於此目錄訪問身份驗證的文件      Require valid-user </Directory> Alias /nagios "/usr/local/nagios/share" <Directory "/usr/local/nagios/share">      AuthType Basic      Options None      AllowOverride None      Order allow,deny      Allow from all      AuthName "nagios Access"      AuthUserFile /usr/local/nagios/etc/htpasswd      Require valid-user </Directory>

d. 創建apache目錄驗證文件

在上面的配置中,指定了目錄驗證文件htpasswd,下面要創建這個文件:

# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd david

25
這樣就在/usr/local/nagios/etc 目錄下創建了一個htpasswd 驗證文件,當通過http://192.168.1.108/nagios/訪問時就需要輸入用戶名和密碼了。      

e. 查看認證文件的內容

# cat /usr/local/nagios/etc/htpasswd

26

f. 啓動apache 服務      

# /usr/local/apache2/bin/apachectl start

到這裏nagios 的安裝也就基本完成了,你可以通過web來訪問了。

20112657-ad1f78da708c47a5b47f94eae9bbfd9

20112709-e18bf9ab06ca444188b3722a1aacbc5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章