日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Nagios监控系统详解

發布時間:2023/12/15 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nagios监控系统详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 Nagios簡介


Nagios 全名為(Nagios Ain’t Goona Insist on Saintood),最初項目名字是 NetSaint。它是一款免費的開源 IT 基礎設施監控系統,其功能強大,靈活性強,能有效監控 Windows 、Linux、VMware 和 Unix 主機狀態,交換機、路由器等網絡設置等。一旦主機或服務狀態出現異常時,會發出郵件或短信報警第一時間通知 IT 運營人員,在狀態恢復后發出正常的郵件或短信通知。Nagios 結構簡單,可維護性強,越來越受中小企業青睞,以及運維和管理人員的使用。同時提供一個可選的基于瀏覽器的 Web 界面,方便管理人員查看系統的運行狀態,網絡狀態、服務狀態、日志信息,以及其他異常現象。

Nagios利用其眾多的插件實現對本機和遠端服務的監控,當被監控對象出現異常,Nagios就會及時給管理人員告警。它是一個基于TCP/IP協議的軟件包,包含有nagios主程序和它的各個插件。

Nagios的主要功能特點簡介:

- 監視網絡服務(SMTP, POP3, HTTP, NNTP, PING等)

- 監視主機資源(進程,磁盤等)

- 簡單的插件設計可以輕松擴展Nagios的監視功能

- 服務等監視的并發處理

- 錯誤通知功能(通過email,pager, 或其他用戶自定義方法)

- 可指定自定義的事件處理控制器

-可選的基于瀏覽器的WEB界面以方便系統管理人員查看網絡狀態,各種系統問題,以及日志等等

- 可以通過手機查看系統監控信息


2 Nagios工作原理


Nagios 軟件需安裝在一臺獨立的服務器上運行,這臺服務器稱為監控中心,監控中心服務器可以采用 Linux 或 Unix 操作系統;每一臺被監視的硬件主機或服務都運行一個與監控中心服務器進行通信的 Nagios 軟件后臺程序,也可以理解為 Agent 或插件均可。監控中心服務器讀取配置文件中的指令與遠程的守護程序進行通信,并且指示遠程的守護程序進行必要的檢查。雖然 Nagios 軟件必須在 Linux 或 Unix 操作系統上運行,但是遠程被監控的機器可以是任何能夠與其進行通信的主機,根據遠程主機返回的應答,Naigos 將依據配置進行回應;接著 Nagios 將通過本地的機器進行測試,如果檢測返回值不正確,Nagios 將通過一種或多種方式報警;具體原理如下圖所示:



3 Nagios監控系統搭建


3.1 部署規劃


監控主機 ? ? ? ?rango ? ?192.168.56.1

被監控機1 ? ? ? ?vm1 ? ?192.168.56.101

被監控機2 ? ? ? ?vm2 ? ?192.168.56.102



3.2 Nagios安裝


1. 安裝前準備:

在編譯安裝前需確保安裝以下包:gdgd-devel png png-devel jpeg

jpeg-devel zlib zlib-devel,使nagiosweb界面的Maps、Trends等功能有效:

yum install gd fontconfig-devel libjpeg-devel libpng-devel gd-devel perl-GD openssl-devel php mailx postfix cpp gcc gcc-c++ libstdc++ glib2-devel


2. 創建用戶和組:

groupadd nagios

groupadd nagcmd

useradd -g nagios -G nagcmd -d /home/nagios -c "Nagios Admin" nagios


3. 在監控主機上編譯安裝Nagios主程序Nagios-4.0.1.tar.gz:

[root@rango ~]# tar zxvf Nagios-4.0.1.tar.gz ; cd nagios-4.0.1

[root@rango nagios-4.0.1]#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios \ --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd --enable-event-broker --enable-nanosleep --enable-embedded-perl --with-perlcache --with-gd-lib=/usr/lib --with-gd-inc=/usr/include[root@rango nagios-4.0.1]#make all[root@rango nagios-4.0.1]#make install [root@rango nagios-4.0.1]#make install-init [root@rango nagios-4.0.1]#make install-commandmode [root@rango nagios-4.0.1]#make install-webconf

[root@rango nagios-4.0.1]#make install-config


4. 安裝與配置apache:

編輯apache 的httpd.conf

最后面添加:

ScriptAlias /nagios/cgi-bin"/usr/local/nagios/sbin"

<Directory "/usr/local/nagios/sbin">

# SSLRequireSSL

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile/usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>


Alias /nagios "/usr/local/nagios/share"


<Directory"/usr/local/nagios/share">

# SSLRequireSSL

Options None

AllowOverride None

Order allow,deny

Allow from all

# Order deny,allow

# Deny from all

# Allow from 127.0.0.1

AuthName "Nagios Access"

AuthType Basic

AuthUserFile/usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>

再次驗證配置文件:/usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.cfg

設置用戶訪問權限:

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

重新啟動nagios 和apache:

service httpd restart

service nagios restart


5. 安裝Postfix郵件服務:

Nagios 監控平臺支持郵件報警功能,所以需要安裝郵件服務。這里采用互聯網比較主流的 MTA —Postfix. 也可根據自己的生產環境去定義, 如: Sendmail、Qmail 等。由于 Nagios 只用到了 Postfix 的郵件發送功能,所以這里不需要對 Postfix 郵件服務作過多配置,安裝 Postfix 套件,啟動服務并在下次服務器重啟自動加載即可。具體如下命令:

#yum install postifx#chkconfig postfix on; /etc/init.d/postfix restart


3.3 安裝Nagios插件


Naigos 提供的各種監控功能基本上是通過插件來完成的,而 Nagios 的核心指提供了很少的功能,因此安裝插件是非常有必要的。Nagios 官網提供了很多不同版塊的插件應用,同時插件版本與 Nagios 版本也沒有什么關聯。

在監控系統的所有節點上安裝Nagios插件:nagios-plugins-1.5.tar.gz

tar zxvf nagios-plugins-1.5.tar.gz && cd nagios-plugins-1.5

./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd ?--prefix=/usr/local/nagios

make all

make install

chmod 755 /usr/local/nagios

ll /usr/local/nagios/libexec/
total 5428
-rwxr-xr-x 1 nagios nagios 318368 Nov ?8 21:19 check_apt
-rwxr-xr-x 1 nagios nagios ? 2248 Nov ?8 21:19 check_breeze
-rwxr-xr-x 1 nagios nagios 121055 Nov ?8 21:19 check_by_ssh
lrwxrwxrwx 1 nagios nagios ? ? ?9 Nov ?8 21:19 check_clamd -> check_tcp
-rwxr-xr-x 1 nagios nagios ?84743 Nov ?8 21:19 check_cluster
-r-xr-xr-x 1 nagios nagios 116277 Nov ?8 21:19 check_dhcp
-rwxr-xr-x 1 nagios nagios 115838 Nov ?8 21:19 check_dig
-rwxr-xr-x 1 nagios nagios 330608 Nov ?8 21:19 check_disk
-rwxr-xr-x 1 nagios nagios ? 9286 Nov ?8 21:19 check_disk_smb
-rwxr-xr-x 1 nagios nagios 122763 Nov ?8 21:19 check_dns
-rwxr-xr-x 1 nagios nagios ?64375 Nov ?8 21:19 check_dummy
-rwxr-xr-x 1 nagios nagios ? 3050 Nov ?8 21:19 check_file_age
-rwxr-xr-x 1 nagios nagios ? 6312 Nov ?8 21:19 check_flexlm
lrwxrwxrwx 1 nagios nagios ? ? ?9 Nov ?8 21:19 check_ftp -> check_tcp
-rwxr-xr-x 1 nagios nagios 116722 Nov ?8 21:19 check_hpjd
-rwxr-xr-x 1 nagios nagios 406658 Nov ?8 21:19 check_http
-r-xr-xr-x 1 nagios nagios 122480 Nov ?8 21:19 check_icmp
-rwxr-xr-x 1 nagios nagios ?90529 Nov ?8 21:19 check_ide_smart
-rwxr-xr-x 1 nagios nagios ?15131 Nov ?8 21:19 check_ifoperstatus
-rwxr-xr-x 1 nagios nagios ?12592 Nov ?8 21:19 check_ifstatus
lrwxrwxrwx 1 nagios nagios ? ? ?9 Nov ?8 21:19 check_imap -> check_tcp
-rwxr-xr-x 1 nagios nagios ? 6884 Nov ?8 21:19 check_ircd
-rwxr-xr-x 1 nagios nagios 102018 Nov ?8 21:19 check_ldap
lrwxrwxrwx 1 nagios nagios ? ? 10 Nov ?8 21:19 check_ldaps -> check_ldap
-rwxr-xr-x 1 nagios nagios 103094 Nov ?8 21:19 check_load
-rwxr-xr-x 1 nagios nagios ? 6017 Nov ?8 21:19 check_log
-rwxr-xr-x 1 nagios nagios ?20281 Nov ?8 21:19 check_mailq
-rwxr-xr-x 1 nagios nagios ?90563 Nov ?8 21:19 check_mrtg
-rwxr-xr-x 1 nagios nagios ?90820 Nov ?8 21:19 check_mrtgtraf
-rwxr-xr-x 1 nagios nagios 102902 Nov ?8 21:19 check_nagios
lrwxrwxrwx 1 nagios nagios ? ? ?9 Nov ?8 21:19 check_nntp -> check_tcp
-rwxrwxr-x 1 nagios nagios ?65913 Nov 17 15:19 check_nrpe
-rwxr-xr-x 1 nagios nagios 119556 Nov ?8 21:19 check_nt
-rwxr-xr-x 1 nagios nagios 119658 Nov ?8 21:19 check_ntp
-rwxr-xr-x 1 nagios nagios 112690 Nov ?8 21:19 check_ntp_peer
-rwxr-xr-x 1 nagios nagios 109906 Nov ?8 21:19 check_ntp_time
-rwxr-xr-x 1 nagios nagios 145777 Nov ?8 21:19 check_nwstat
-rwxr-xr-x 1 nagios nagios ? 8779 Nov ?8 21:19 check_oracle
-rwxr-xr-x 1 nagios nagios 103337 Nov ?8 21:19 check_overcr
-rwxr-xr-x 1 nagios nagios 124240 Nov ?8 21:19 check_ping
lrwxrwxrwx 1 nagios nagios ? ? ?9 Nov ?8 21:19 check_pop -> check_tcp
-rwxr-xr-x 1 nagios nagios 325061 Nov ?8 21:19 check_procs
-rwxr-xr-x 1 nagios nagios 100621 Nov ?8 21:19 check_real
-rwxr-xr-x 1 nagios nagios ? 9578 Nov ?8 21:19 check_rpc
-rwxr-xr-x 1 nagios nagios ? 1451 Nov ?8 21:19 check_sensors
-rwxr-xr-x 1 nagios nagios 328529 Nov ?8 21:19 check_smtp
-rwxr-xr-x 1 nagios nagios 381507 Nov ?8 21:19 check_snmp
-rwxr-xr-x 1 nagios nagios ?98154 Nov ?8 21:19 check_ssh
-rwxr-xr-x 1 nagios nagios ?88321 Nov ?8 21:19 check_swap
-rwxr-xr-x 1 nagios nagios 112126 Nov ?8 21:19 check_tcp
-rwxr-xr-x 1 nagios nagios 100527 Nov ?8 21:19 check_time
lrwxrwxrwx 1 nagios nagios ? ? ?9 Nov ?8 21:19 check_udp -> check_tcp
-rwxr-xr-x 1 nagios nagios 110765 Nov ?8 21:19 check_ups
-rwxr-xr-x 1 nagios nagios ?83131 Nov ?8 21:19 check_users
-rwxr-xr-x 1 nagios nagios ? 2933 Nov ?8 21:19 check_wave
-rwxr-xr-x 1 nagios nagios 104604 Nov ?8 21:19 negate
-rwxr-xr-x 1 nagios nagios ?98773 Nov ?8 21:19 urlize
-rwxr-xr-x 1 nagios nagios ? 1936 Nov ?8 21:19 utils.pm
-rwxr-xr-x 1 nagios nagios ? 2917 Nov ?8 21:19 utils.sh


重啟Nagios服務:

/etc/init.d/nagios restart

/etc/init.d/httpd restart

chkconfig httpd on

chkconfig naigos on


3.4 防火墻和SELinux設置


Selinux 和 Iptables 是 Linux 系統提供的安全防護機制,主要用來防護 Linux 系統下的服務或應用程序不受外界安全***等。一般企業考慮到 Nagios 監控平臺的安全可靠性,都會采用硬件的防火墻或其他安全設備來對服務器進行防護,故此處禁用SELinux和iptables


3.5 其他插件的安裝和說明


nrpe_2.12.tar.gz ——監控Linux 需要(被監控的Linux服務器安裝)

nsclient++0.3.5——監控windows 需要(被監控的Windows服務器安裝)

ndoutils:ndoutils是將Nagios的配置及監控信息存儲到數據庫里,NPC通過調用ndo所存儲的數據來展現Nagios的信息。啟動:/usr/local/nagios/bin/ndo2db-c /usr/local/nagios/etc/ndo2db.cfg。

ps:ndoutils最新版本為1.5.2,只兼容Nagios3.x和NagiosXI,4.x版本不兼容,會報Error:Could not load module '/usr/local/nagios/bin/ndomod-3x.o' ->/usr/local/nagios/bin/ndomod-3x.o: undefined symbol:servicedependency_list的錯誤。

NPC:(NagiosPlugin for Cacti)是一個Cacti插件,安裝后可以在Cacti界面里使用Nagios的功能。


3.6 Nagios Web訪問


通過瀏覽器,在地址欄輸入: http://192.168.56.1/nagios, 輸入用戶名及密碼即可訪問 Naigos 登錄界面。


3.7 Nagios配置


1. Nagios目錄與相關配置文件


Nagios 安裝完成后,/usr/local/nagios/目錄下會生成 nagios 相關目錄及配置文件,默認的的配置文件在/usr/local/nagios/etc 目錄下,如下表為Nagios 相關目錄的名稱及用途

目錄名稱作用
binNagios 可執行程序所在目錄
etcNagios 配置文件目錄
sbinNagios cgi 文件所在目錄, 也就是執行外部 命令所需要文件所在的目錄
shareNagios 網頁存放路徑
libexecNagios 外部插件存放目錄
varNagios 日志文件、Lock 等文件所在的目錄
var/archivesNagios 日志自動歸檔目錄
var/rw用來存放外部命令文件的目錄

下表為配置文件作用

配置文件說明
cgi.cfg ?控制 CGI 訪問的配置文件
nagios.cfg ?Nagios 主配置文件
resource.cfg ?變量定義文件,又稱為資源文件,在此文件中定義變量,以便由其他配置文件引用,如$USER1$
objects ?objects 是一個目錄,在此目錄下有很多配置文件模板,用于定義 Nagios 對象
objects/commands.cfg ?命令定義配置文件,其中定義的命令可以被其他配置文件引用
objects/contacts.cfg 定義聯系人和聯系人組的配置文件
objects/localhost.cfg ? ?定義監控本地主機的配置文件
objects/printer.cfg 定義監控打印機的一個配置文件模板,默認沒有啟用此文件
objects/switch.cfg ? ? ? ? ? ?監控路由器的一個配置文件模板,默認沒有啟用此文件
objects/templates.cfg 定義主機和服務的一個模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg ?定義 Nagios 監控時間段的配置文件
objects/windows.cfg ?監控 Windows 主機的一個配置文件模板,默認沒有啟用此文件
備注:Nagios 在配置方面非常靈活,默認的配置文件并不是必需的。可以使用這些默認的配置文件,也可以創建自己的配置文件,然后在主配置文件 nagios.cfg 中引用即可。


2. Nagios配置文件之間的關聯


Nagios 的配置過程涉及幾個定義有:主機、主機組、服務、服務組、聯系人、聯系人組、監控時間和監控命令等,從這些定義可以看出,Nagios 的各個配置文件之間是互為關聯、彼此引用的。成功配置一臺 Nagios 監控系統,需要掌握每個配置文件之間依賴與被依賴的關系,可從下面四個步驟來入手,第一步:定義哪些主機、主機組、服務和服務組,第二步:要定義這個監控要通過什么命令實現,第三步:要定義監控的時間段,第四步:要定義主機或服務出現問題時要通知的聯系人和 聯系人組;強烈建議依據以上順序對 Nagios 系統進行相關配置。


3. 主要配置文件詳解


templates.cfg文件

define contact{ ?
? ? ? ?name ? ? ? ? ? ? ? ? ? ? ?generic-contact ? ? ? ?#聯系人名稱
? ? ? ?service_notification_period ? ? 24x7 ? ? ? ? ? ? #當服務出現異常時,發送通知的時間段,時間段是 7x24 小時
? ? ? ?host_notification_period ? ? ? ?24x7 ? ? ? ? ? ? #當主機出現異常時,發送通知的時間段,時間段是 7x24 小時
? ? ? ?service_notification_options ? ?w,u,c,r ? ? ? ? ?#這個定義的是“通知可以被發出的情況”。w 即 warning,表示警告狀態,u 即 unknown,表示不明狀態,c 即 criticle,表示緊急狀態,r 即 recover,表示恢復狀態
? ? ? ?host_notification_options ? ? ? d,u,r ? ? ? ? ? ?#定義主機在什么狀態下需要發送通知給使用者,d 即 down,表示宕機狀態,u 即 unreachable,表示不可到達狀態,r 即 recovery,表示重新恢復狀態。 ?
? ? ? ?service_notification_commands ? notify-service-by-email ?#服務故障時,發送通知的方式,可以是郵件和短信,這里發送的方式是郵件,其中“notify-service-by-email”在 commands.cfg 文件中定義。 ?
? ? ? ?host_notification_commands ? ? ?notify-host-by-email ? ?#主機故障時,發送通知的方式,可以是郵件和短信,這里發送的方式是郵件,其中“notify-host-by-email”在 commands.cfg 文件中定義。
? ? ? ?} ?

define host{ ?
? ? ? ?name ? ? ? ? ? ? ? ? ? ? ? ? linux-server ? ?#主機名稱 ?
? ? ? ?use ? ? ? ? ? ? ? ? ? ? ? ? ? generic-host ? #use 表示引用,也就是將主機 generic-host 的所有屬性引用到 linux-server 中來,在 nagios 配置中,很多情況下會用到引用。 ?
? ? ? ?check_period ? ? ? ? ? ? ? ? ? 24x7 ? ? ? ? ?#這里的 check_period 告訴 nagios 檢查主機的時間段 ?
? ? ? ?check_interval ? ? ? ? ? ? ? ? ?5 ? ? ? ? ? ?#nagios 對主機的檢查時間間隔,這里是 5 分鐘。 ?
? ? ? ?retry_interval ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? #重試檢查時間間隔,單位是分鐘。 ?
? ? ? ?max_check_attempts ? ? ? ? ? ? ?10 ? ? ? ? ? #nagios 對主機的最大檢查次數, ? ? ? ?check_command ? ? ? ? ? ? check-host-alive ?#指定檢查主機狀態的命令,其中“check-host-alive”在 commands.cfg 文件中定義。
? ? ? ?notification_period ? ? ? ? ? ? workhours ? ? ?#主機故障時,發送通知的時間范圍,其中“workhours”在 timeperiods.cfg 中進行了定義,下面會陸續講到。 ?

? ? ? ?notification_interval ? ? ? ? ? 30 ? ? ? ? ? ? #在主機出現異常后,故障一直沒有解決,nagios 再次對使用者發出通知的時間。單位是分鐘
? ? ? ?notification_options ? ? ? ? ? ?d,u,r ? ? ? ? ?#定義主機在什么狀態下可以發送通知給使用者,d 即 down,表示宕機狀態,u 即 unreachable,表示不可到達狀態,r 即 recovery,表示重新恢復狀態。 ?
? ? ? ?contact_groups ? ? ? ? ? ? ? ? ?admins ? ? ? ? #指定聯系人組,這個“admins”在 contacts.cfg 文件中定義。 ?

define service{
? ? ? ?name ? ? ? ? ? ? ? ? ? ? ?local-service ? ?#定義一個服務名稱
? ? ? ?use ? ? ? ? ? ? ? ? ? ? ? generic-service ?#引用服務 local-service 的屬性信息,local-service 主機在 templates.cfg 文件中進行了定義
? ? ? ?max_check_attempts ? ? ? ? ? ? 4 ? ? #最大檢測 4 次,為了確定服務最終狀態 ? ? ? ? ? ? ?
? ? ? ?normal_check_interval ? ? ? ? ?5 ? ? #每 5 分鐘檢測一次
? ? ? ?retry_check_interval ? ? ? ? ? 1 ? ? #每 1 分鐘重新檢測服務,最終的狀態能被確定 ? ? ?
? ? ? ?}


hosts.cfg文件

此文件默認不存在,需要手動創建,主要用來指定被監控的主機地址及相關屬性信息,比如以下定義的vm1的主機信息:

define host{
? ?use ? ? ? ? ?linux-server
? ?host_name ? ?vm1
? ?alias ? ? ? ?vm1
? ?address ? ? 192.168.56.101
? ?}

......


services.cfg文件

此文件默認不存在,需要手動創建。主要用于定義監控的服務和主機資源,例如監控 HTTP 服務、FTP 服務、主機磁盤空間、主機系統負載等。比如定義監控vm1的http和ftp等服務的配置如下:

define service{
? ?use ? ? ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ?HTTP
? ?check_command ? ?check_http
? ?}

define service{
? ?use ? ? ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ? FTP
? ? ? ?check_command ? ?check_ftp
? ?}

......


nagios.cfg文件

Nagios的主配置文件,包括Nagios日志文件、cfg文件、Nagios用戶,組、lock文件等等Nagios的所有全局設置均在此設置,其中本例需要添加以下設置來指定三個被監控的主機的配置文件的位置:

# Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/vm1.cfg
cfg_file=/usr/local/nagios/etc/objects/vm2.cfg


4. 實例配置


Nagios允許單獨定義某個主機的主機信息和服務配置信息到一個cfg文件中,比如vm1的配置文件如下:vm1.cfg

define host{
? ?use ? ? ? ? ?linux-server
? ?host_name ? ?vm1
? ?alias ? ? ? ?vm1
? ?address ? ? 192.168.56.101
? ?}

define service{
? ?use ? ? ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ?HTTP
? ?check_command ? ?check_http
? ?}

define service{
? ?use ? ? ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ? FTP
? ? ? ?check_command ? ?check_ftp
? ?}
define service{
? ?use ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ?SSH
? ?check_command ? ?check_ssh
? ?}

define service{
? ?use ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ?check-load
? ?check_command ? ?check_nrpe!check_load
? ?}

define service{
? ?use ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ?zombie_procs
? ?check_command ? ?check_nrpe!check_zombie_procs
}
define service{
? ?use ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ?check-users
? ?check_command ? ?check_nrpe!check_users
}
define service{
? ?use ? ?generic-service
? ?host_name ? ?vm1
? ?service_description ? ?total_procs
? ?check_command ? ?check_nrpe!check_total_procs
}

此處定義監控ip地址為192.168.56.101的主機vm1的SSH、FTP等服務信息。



3.8 Nagios啟動運行


1. 驗證配置文件的正確性

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios 提供的這個驗證功能非常有用,如果你的配置文件有語法或配置錯誤,它會顯示出錯的配置文件及在文件中哪一行。檢測結果中的報警信息通常是可以忽略的,因為一般只是建議性的提示。

此處可以利用別名機制來簡化Nagios配置檢測機制:在當前用戶的.bashrc文件下增加別名設置:

alias nagioscheck='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'

使生效:source ./.bashrc


2. 啟動Nagios服務

通過初始化腳本啟動Nagios:

/etc/init.d/nagios start|restart|stop 或者 service nagios start


手動方式啟動Nagios:

通過 Nagios 命令的-d 參數來啟動 nagios 過護進程。

/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cf


4 Nagios性能分析圖標


Nagios 對服務或主機監控的是一個瞬時狀態,有時候系統管理員需要了解主機在一段時間內的性能及服務的響應狀態,并且形成圖表,這就需要通過查看日志數據來分析。但是這種方式不僅煩瑣,而且抽象。為了能更直觀的查看主機運行狀態,這里采用 PNP 來實現此功能。PNP 是一個小巧的開源軟件包,它是基于 PHP 和 Perl 腳本編寫,PNP 可以利用 rrdtool 工具將 Nagios 采集的數據繪制成圖表,然后顯示主機或者服務在一段時間內運行的狀況。以下詳細介紹 PNP 安裝配置流程:

1. 安裝RDDtool:yum install rrdtool

2. 編譯安裝PNP:

下載PNP http://pkgs.fedoraproject.org/repo/pkgs/pnp4nagios/pnp-0.4.14.tar.gz/9dbbf08191a258f6798c9516b3821ff0/

tar zxvf pnp-0.4.14.tar.gz

cd pnp-0.4.14

#通過./configure --help查看configure的選項設置

./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata

#最后一項指明存儲rrd數據文件的目錄

make all

make install

make install-config

make install-init

注解:configure可能出現以下錯誤:

checking for Perl Module Time::HiRes… no
configure: error: Perl Module Time::HiRes not available

解決辦法:安裝相應的模塊:yum install perl-Time-HiRes


3. 配置PNP:

3.1 PNP 配置文件定義

在 PNP 安裝完成后, 默認安裝目錄下回自帶相應的模板配置文件, 因此只需要參考相應的模板文件進行修改即可:

cd /usr/local/nagios/etc/pnp/

cp process_perfdata.cfg-sample process_perfdata.cfg

cp npcd.cfg-sample npcd.cfg

cp rra.cfg-sample rra.cfg

chown -R nagios:nagios /usr/local/nagios/etc/pn



3.2 修改 process_perfdata.cfg 文件

?打開 Nagios 下的 process_perfdata.cfg 文件,修改相關內容。將數字 0 變更為 2 是開啟了日志的調試功能,操作如下:

LOG_FILE = /usr/local/nagios/var/perfdata.log
#
# Loglevel 0=silent 1=normal 2=debug
#
LOG_LEVEL = 2


3.3 修改 Nagios 相關配置文件

  • 增加數據圖標識:修改 templates.cfg,增加一個定義 PNP 的 host 和 service:

    #pnp host set
    define host{
    ? ?name ? ? ? ? ? ?hosts-pnp
    ? ?register ? ? ? ?0
    ? ?action_url ? ? ? ?/nagios/pnp/index.php?host=$HOSTNAME$&srv=_HOST_
    ? ?process_perf_data ? ?1
    ? ?}

    # pnp service set
    define service{
    ? ?name ? ? ? ? ? ? ? ?services-pnp
    ? ?register ? ? ? ? ? ?0
    ? ?action_url ? ? ? ? ? ?/nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
    ? ?process_perf_data ? ? ? ?1
    ? ?}

  • 修改 nagios.cfg

    如果想讓 nagios 將數據輸出,首先要修改 nagios 的主配置文件 nagios.cfg,找到如下幾項,如有注釋的將其去掉。修改后的信息如下:#vim /usr/local/nagios/etc/nagios.cfgprocess_performance_data=1

    host_perfdata_command=process-host-perfdataservice_perfdata_command=process-service-perfdata

  • 修改 commands.cfg

    process-host-perfdata 和 process-service-perfdata 指令聲明了 nagios 輸出哪些值到輸出文件中。 不過這些定義相對簡單,而 PNP 提供了一個 Perl 腳本,非常詳細地定義了一個輸出數據的方法,process_perfdata.pl 其實是 PNP 自帶的一個腳本,這個腳本在 PNP 安裝完成后會自動生成。因此,可以將 process-host-perfdata 和 process-service-perfdata 指令中對應的執行命令的內容替換成此腳本。增加下圖的內容:

    define command{
    ? ?command_name ? ?process-host-perfdata
    ? ?command_line ? ?/usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl -d HOSTPERFDATA

    ? ?}

    define command{
    ? ?command_name ? ?process-service-perfdata
    ? ?command_line ? ?/usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
    ? ?}

  • 修改 hosts.cfg 與 services.cfg(此處為vm1.cfg、vm2.cfg)

    將 hosts-pnp 和 services-pnp 引用到 vm1.cfg 和 vm2.cfg 中,修改后的 vm1.cfg 內容為

    define host{
    ? ?use ? ? ? ? ?linux-server,hosts-pnp
    ? ?host_name ? ?vm1
    ? ?alias ? ? ? ?vm1
    ? ?address ? ? 192.168.56.101
    ? ?}

    define service{
    ? ?use ? ? ? ?generic-service,services-pnp
    ? ?host_name ? ?vm1
    ? ?service_description ? ?HTTP
    ? ?check_command ? ?check_http
    ? ?}

    .......



3.4 查看性能圖標功能

訪問Nagios的Web界面,點擊數據圖標查看相應的性能圖示。


5 利用NRPE擴展Nagios功能


監控linux本地主機時,我們可以直接更改配置文件進行監控,如果需要監控的主機與nagios不在同一機器上,即監控遠程linux主機時,我們需要借助NRPE插件實現。通過在遠程服務器上安裝 NRPE 構件及 Nagios 插件程序來向 Nagios 監控平臺提供該服務器的一些本地情況,如 CPU 負載、內存使用、硬盤使用,服務等。這里將 Nagios 監控平臺稱為 Nagios 服務器 端,而將遠程被監控的服務器稱為 Nagios 客戶端。如下為NRPE原理圖,



5.1 NRPE的組成部分和監測類型


NRPE 總共由兩部分組成:

check_nrpe 插件,位于監控主機上

NRPE daemon,運行在遠程被監控的 Linux 主機上

當監控遠程 Linux/UNIX 主機服務或資源時,工作流程如下:

  • nagios 會運行 check_nrpe 這個插件,并且會告訴它需要檢查什么;

  • check_nrpe 插件會連接到遠程的 NRPE daemon,所用的方式是 SSL;

  • NRPE daemon 會運行相應的 Nagios 插件來執行檢查動作;

  • NPRE daemon 將檢查的結果返回給 check_nrpe 插件,插件將其遞交給 Nagios 做處理。

NRPE daemon 需要 Nagios 插件安裝在遠程的 Linux 主機上,否則 daemon 不能做任何的監控。


NRPE 的檢測類型分為兩種:

直接檢測:檢測的對象是運行 NRPE 的那臺 Linux 主機的本地資源,原理如下:

直接使用 NRPE 插件監控遠程 Linux/UNIX 主機的本地或者私有資源;如 CPU 負載、內存使用、SWAP 空間使用、硬盤等運行狀況。如下為直接檢測工作原理圖,


間接檢測:當運行 Nagios 的監控主機無法訪問到某臺被監控主機,但是運行 NRPE 的機器可以訪問得到的時候,運行 NRPE 的主機就充當一個中間代理,將監控請求發送到被監控對象上。如下為間接檢測圖,



5.2 服務器端安裝配置NRPE


1. 安裝NRPE

tar zxvf nrpe-2.15.tar.gz ; cd nrpe-2.15

./configure

make all

make install-plugin

make install-daemon

make install-daemon-config


2. 定義check_nrpe命令

在文件/usr/local/nagios/etc/objects/commands.cfg后面增加:

# check nrpe
define command{
? ?command_name ? ?check_nrpe
? ?command_line ? ?$USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
? ?}


3. 創建/usr/local/nagios/etc/objects/remotehost.cfg,比如vm1.cfg文件的定義:

host定義示例:

define host{

? ?use linux-server

? ?host_name vm1

? ?address 192.168.56.101

? ?}

Service定義示例:

define service{

? ?use generic-service

? ?service_description Root Partition

? ?check_command check_nrpe!check_disk

? ?}

查看配置文件是否正確:nagioscheck

重新加載配置文件:/etc/init.d/nagios reload


5.3 Linux客戶端安裝NRPE


1. 安裝Nagios插件nagios-plugin

添加 nagios 用戶名,且不允許 nagios 用戶登錄, 此用戶用于與 Nagios 服務器通信所用:

useradd -s /sbin/nolgin nagios

tar zxvf nagios-plugins-1.5.tar.gz ; cd nagios-plugin-1.5

./configure

make && make install


2. 安裝NRPE

tar zxvf nrpe-2.15.tar.gz

cd nrpe-2.15

./configure

make all

make install-plugin

make install-daemon

make install-daemon-config

yum install xinetd

make install-xinetd


3. 配置NRPE

定義被監控的 Linux 主機的對象,監控此主機的 CPU 負載、登錄用戶數、磁盤分區、進程、swap 使用情況等,編輯/usr/local/nagios/etc/nrpe.cfg 文件,示例如下,

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200


4. 定義xinetd服務支持NRPE

修改 only_from 項,增加 Ngaios 服務器的地址,這樣一來服務器與客戶端就可進行 nrpe 會話,監控到 Linux 客戶端相關信息,被監控端也更加容易維護管理:

# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
? ? ? ? ? flags ? ? ? ? ? = REUSE
? ? ? ?socket_type ? ? = stream ? ?
? ?port ? ? ? ?= 5666 ? ?
? ? ? ? ? wait ? ? ? ? ? ?= no
? ? ? ?user ? ? ? ? ? ?= nagios
? ?group ? ? ? ?= nagios
? ? ? ? ? server ? ? ? ? ?= /usr/local/nagios/bin/nrpe
? ? ? ?server_args ? ? = -c /usr/local/nagios/etc/nrpe.cfg --inetd
? ? ? ? ? log_on_failure ?+= USERID
? ? ? ?disable ? ? ? ? = no
? ?only_from ? ? ? = 127.0.0.1 localhost 192.168.56.1
}


5. 定義服務端口

在 Linux 客戶端"/etc/services" 文件增加一行:

nrpe 5666/tcp #NRPE


6. 測試NRPE功能

由于 NRPE 相應的插件已經安裝成功, 這里使用 check_nrpe 命令來驗證是否 nrpe 是否正常運行,如果執行以下命令能夠顯示 NRPE 的具體版本信息,則表示 nrpe 運行正常,加載重啟 xinetd 服務即可:

/usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.15

/etc/init.d/xinetd restart


6 Nagios管理平臺簡介


通過上面所有的軟件及插件的安裝與配置,Nagios 監控系統架構成功的完成了;若想進一步擴展,如監控 Windows 平臺,則需要在 Windowns 系統安裝 NSClient 軟件,并在 Nagios 服務器定義 windows.cfg 等文件,VMware 則需要 Nagios 官網下載相應的插件及模塊文件,并在 Nagios 服務器編輯 command.cfg、hosts.cfg、services.cfg 文件,示例如下,

Window 平臺

vim /usr/local/nagios/etc/monitor/windows.cfg

define host{
? ? ? ?use ? ? ? ? ? ? windows-server,hosts-pnp
? ? ? ?host_name ? ? ? Windowns Server 2003_192 ? ? ?
? ? ? ?alias ? ? ? ? ? Remote win2003 192 ? ? ?
? ? ? ?address ? ? ? ? 192.168.1.192 ?
? ? ? ?}
define service{
? ? ? ?use ? ? ? ? ? ? ? ? ? ? generic-service,services-pnp
? ? ? ?host_name ? ? ? ? ? ? ? Windowns Server 2003_192
? ? ? ?service_description ? ? NSClient++ Version
? ? ? ?check_command ? ? ? ? ? check_nt!CLIENTVERSION
? ? ? ?} ? ? ? ?}
………

VMware 平臺

vim/usr/local/nagios/etc/monitor/commands.cfg

define command{
command_name check_esx3_host_net_usage
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l net -s usage -w $ARG3$ -c $ARG4$
}
define command{
command_name check_esx3_host_runtime_issues
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l runtime -s issues
……


7 Nagios郵件報警功能設置


Nagios的報警系統主要有以下三種方式:
一、聲音報警
二、電子郵件報警
三、手機短訊報警

以下為郵件報警系統的設置過程(以sendmail為郵件服務器)

1. 開啟系統自帶的sendmail服務

/etc/init.d/sendmail start

注解:若未安裝,可:yum install -y sendmail* ; /etc/init.d/sendmail start

測試服務:echo "test" | mail youraddress


2. 配置Nagios報警郵箱

vim /usr/local/nagios/etc/objects/contacts.cfg:

define contact{
? ? ? ?contact_name ? ? ? ? ? ? ? ? ? ?nagiosadmin ? ? ? ? ? ? ; Short name of user
? ? ? ?use ? ? ? ? ? ? ? ? ? ? ? ? ? ? generic-contact ? ? ? ? ; Inherit default values from generic-contact template (defined above)
? ? ? ?alias ? ? ? ? ? ? ? ? ? ? ? ? ? Nagios Admin ? ? ? ? ? ?; Full name of user

? ? ? ?email ? ? ? ? ? ? ? ? ? ? ? ? ? rangochan1989@gmail.com ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
? ? ? ?}


3. 設置報警方式

vim /usr/local/nagios/etc/objects/templates.cfg:

define contact{
? ? ? ?name ? ? ? ? ? ? ? ? ? ? ? ? ? ?generic-contact ? ? ? ? ; The name of this contact template
? ? ? ?service_notification_period ? ? 24x7 ? ? ? ? ? ? ? ? ? ?; service notifications can be sent anytime
? ? ? ?host_notification_period ? ? ? ?24x7 ? ? ? ? ? ? ? ? ? ?; host notifications can be sent anytime
? ? ? ?service_notification_options ? ?w,u,c,r,f,s ? ? ? ? ? ? ; send notifications for all service states, flapping events, and scheduled downtime events
? ? ? ?host_notification_options ? ? ? d,u,r,f,s ? ? ? ? ? ? ? ; send notifications for all host states, flapping events, and scheduled downtime events
? ? ? ?service_notification_commands ? notify-service-by-email ; send service notifications via email
? ? ? ?host_notification_commands ? ? ?notify-host-by-email ? ?; send host notifications via email
? ? ? ?register ? ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ? ? ? ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
? ? ? ?}

注解:此處的notify-service-by-emailnotify-host-by-email是在command.cfg那里定義的,使用默認定義即可。

重新加載配置文件使生效:/etc/init.d/nagios reload

至此完成郵件報警功能設置,可以通過停掉某些服務來測試功能是否正常。


8 總結


通過此篇文章描述了 Nagios 監控管理平臺的工作原理,以及如何在 Linux 平臺部署開源軟件的管理平臺,掌握 Naigos 配置管理,通過外部插件的方式來對服務對象 Windows 、Linux、 Unix 、 VMware 等平臺進行有效的管理與監控,適合運行部門及管理部門的 IT 人員使用,不僅提高了效率同時減少了管理人員未能及時發現問題所帶來的的困繞,也提高了生產的環境的可用性。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——Rango Chen




轉載于:https://blog.51cto.com/rangochen/1388090

總結

以上是生活随笔為你收集整理的Nagios监控系统详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。