Nagios

曾威龍(LiSu)
前言

身為系統管理員,被使用者告知某某服
務不能使用,那是一種失職啊...

萬一,這個不幸的消息還是高層遇到的
...(切腹謝罪!!)
那叫...A死
那叫...A死
==Nagios
提供以網頁方式呈現
 o 主機(host)狀態
 o 服務(service)狀態
 o 設備(device)資訊

除了目前狀態,也會保存記錄
不是只有"看",設定警示值後,可透過
email或是其他plugin通知管理員

至少要比老闆早一步發現,被問到時,
已經可以回報"處理中"...
不是只有"看",設定警示值後,可透過
email或是其他plugin通知管理員

至少要比老闆早一步發現,被問到時,
已經可以回報"處理中"...

(書上說還可以用來監控股價!)
架構

從監控主機發出要求,透過被監控主機上的nrpe agent取得資訊
並回傳;使用者從Web上檢視報告
主機定義


define host{
  use               linux-server
  host_name             mail01
  alias             mail server 01
  address              172.18.55.202

    notifications_enabled 1
    process_perf_data      1
    check_command           check-host-alive
    notification_interval 120
    notification_period 24x7
    notification_options d,u,r
}
主機狀態
• Down
• Unreachable
• Up
• Pending
服務定義


define service{
  name               ping
  check_command
           check_ping!100.0,20%!500.0,60%
  contact_groups         nagios-admins
  check_period          24x7
  max_check_attempts        3
  normal_check_interval 5
  notification_interval 120
  notification_period 24x7
  notification_options c,r
}
服務狀態
• Critical
• Warning
• Unknow
• Ok
• Pending
cgi.cfg:設定驗證方式或是連線內容
htpasswd.users:檢視nagios的網頁驗證
nagios.cfg:nagios 主要設定
nrpe.cfg:nrpe的設定
resource.cfg:定義變數、巨集
objects:所有物件設定資料
command.cfg:執行命令檔
contacts.cfg:指定示警對象
localhost.cfg:本機主機設定檔
printer.cfg:印表機設定檔
switch.cfg:交換器設定檔
templates.cfg:範本設定檔
timperiods.cfg:設定工作排程
Nagios監控主機

先安裝 apache2

#zypper install apache2 apache2-example-pages yast2-http-
server
  會附帶安裝基本模組
設定 apache2

#yast http-server
在第二步驟,勾選使用 php模組
在第五步驟,將 apache2設定為開機後自動啟動

開啟瀏覽器,在網址列輸入 <http://127.0.0.1>
測試是否能夠連上 apache,看到"It works!"
安裝 nagios主要套件

#zypper install nagios nagios-plugins-extra

  若要收集其他主機資訊,可一併安裝nagios-nrpe

安裝後會協助建置nagios所需帳號<nagios>、群組<nagios>與
<nagcmd>
#grep nagiso /etc/passwd
#grep nag /etc/group

而 nagios的相關設定檔案在 /etc/nagios之下
設定 nagios的帳號與密碼

管理帳號
#htpasswd2 -c /etc/nagios/htpasswd.users nagiosadmin
  檔案與帳號是預設值,若需變動
  在 /etc/nagios/cgi.cfg 修改管理帳號
  在 /etc/apache2/conf.d/nagios.conf 修改驗證檔案

一般帳號,僅提供檢視報告用
#htpasswd2 /etc/nagios/htpasswd.users nagios
  注意,並不需要使用 "-c"囉
確認所需帳號已建立完成
#cat /etc/nagios/htpasswd.users
設定 nagios為開機後逕自啟動
#chkconfig nagios on
#chkconfig nagios --list

啟動 nagios,準備來個初相見吧!
#rcnagios start
利用瀏覽器連到 nagios主機的頁面 < http://127.0.0.1/nagios >
輸入先前建立的 nagios帳號與密碼
示警設定

觀察 Service->SSH
#rcsshd stop
觀察 Service->SSH 的警示圖示

修改示警動作
#vi /etc/nagios/objects/localhost.cfg
  找到 check_ssh
  修改 notifications_enabled的值為 1
示警設定

測試並重新載入設定檔
#nagios -v /etc/nagios/nagios.cfg
#rcnagios reload
利用瀏覽器連到 nagios主機的頁面 < http://127.0.0.1/nagios >
觀察 Service->SSH 的警示圖示
並檢查 /var/spool/mail/nagios的內容
示警設定

修改示警通知對象
#vi /etc/nagios/objects/contacts.cfg
  找到 email
  修改為欲通知的使用者電子郵件

測試並重新載入設定檔
#nagios -v /etc/nagios/nagios.cfg
#rcnagios reload

等待...再去查看信件
收集其他主機資訊
收集其他主機資訊

在被監控主機上(Linux平台),安裝 nagios-nrpe套件
#zypper install nagios-nrpe nagios-plugins-nrpe

設定允許連線主機
#vi /etc/nagios/nrpe.cfg
  找到 allowed_hosts=127.0.0.1
  在後面加上監控主機的位址
      allowed_hosts=127.0.0.1,172.18.55.201

啟動 nrpe
#rcnrpe start
測試連線

在監控主機上(已安裝 nagios-nrpe nagios-plugins-nrpe)

#/usr/lib/nagios/plugins/check_nrpe -H 172.18.55.209
  172.18.55.209是被監控主機的IP


在被監控主機上
#/usr/lib/nagios/plugins/check_nrpe -H localhost


確認出現NRPE v2.12的字樣,即為連線成功
列入監控主機的監控

在監控主機上
#vi /etc/nagios/objects/localhost.cfg
  在HOST DEFINITION 加入一段
define host{
  use linux-server
  host_name client1
  alias client1
  address 172.18.55.209
  }
列入監控主機的監控

在監控主機上
#vi /etc/nagios/objects/localhost.cfg
  從SERVICE DEFINITIONS裡
  在想要監看的服務項目中
  找到host_name,並在讓行最後加上",client1"

測試並重新載入設定檔
#nagios -v /etc/nagios/nagios.cfg
#rcnagios reload

從nagios的頁面上觀察 Hosts 與 Services
收集其他主機資訊

在被監授主機上(Windows平台),安裝 NSClient++軟體
 http://www.nsclient.org/nscp/
此處要輸入監控主機的位址

           此處要輸入監控主機的位址




      這邊是要載入的模組
測試連線

在監控主機上
#/usr/lib/nagios/plugins/check_nrpe -H 172.18.55.200
  172.18.55.209是被監控主機(Windows)的IP
將會出現


表示連線正常




可能是受監控平台的 NSClient 服務未啟動
列入監控主機的監控範圍

在監控主機上
#vi /etc/nagios/objects/windows.cfg
在HOST DEFINITION 加入一段
define host{
  use windows-server
  host_name winserver
  alias My Windows Server
  address 172.18.55.200
  }
接著在SERVICE DEFINITIONS裡
在想要監看的服務項目中
找到host_name,並在讓行最後加上",winserver"

修改 nagios設定檔以讀入 windows.cfg
#vi /etc/nagios/nagios.cfg
  找到 windows.cfg,將該行註解取消

測試並重新載入設定檔
#nagios -v /etc/nagios/nagios.cfg
#rcnagios reload

從nagios的頁面上觀察 Hosts 與 Services
use Nagios on openSUSE 11.4
use Nagios on openSUSE 11.4

use Nagios on openSUSE 11.4