話不多說,下面開始,nagios具體的介紹,可以搜一下,這篇文章為作者在實際操作中整理出來的,~如果不想在線看,可以下載文檔,請點擊文檔下載
環境準備
此文檔共用2臺服務器的配置,操作系統均為centOS6.7,安裝用戶都為nagios用戶,所有的安裝都必須基于nagios,當權限不足時,采用sudo的方式,具體信息如下:
IP地址 | 角色 | 安裝用戶 |
---|---|---|
192.168.1.10 | Nagios服務端 | nagios |
192.168.1.11 | 被監控主機 | nagios |
nagios服務端安裝步驟
編譯安裝nagios軟件
安裝需要192.168.1.10服務器預裝cc,glibc,glibc-common,gd,gd-devel,xinetd,openssl-devel等,執行命令:
[nagios@localhost ~]$ rpm -qa | grep **
#依次檢查是否安裝以上軟件,如果沒有安裝則執行命令:
[nagios@localhost ~]$ sudo yum install -y **
依賴部分處理好之后,下面進行nagios的編譯安裝,nagios的下載地址為:nagios官網下載 ,下載好之后,進入防止安裝包的目錄,解壓壓縮包:
[nagios@localhost ~]$ tar zxvf nagios-3.5.0.tar.gz
進入解壓后的目錄: cd /home/nagios/nagios依次執行:
./configure --prefix=/usr/local/nagios
make all
sudo make install
sudo make install-init
make install-commandmode
make install-config
sudo chkconfig --add nagios
sudo chkconfig --level 35 nagios on
最后執行
sudo chkconfig --list nagios
顯示如下結果:
[圖片上傳失敗...(image-d2a366-1551885373192)]
下面來驗證nagios是否被安裝:
切換到目錄/usr/local/nagios/下,查看目錄結構如下:
[圖片上傳失敗...(image-699daa-1551885373192)]
如果以上目錄都存在,說明程序已經被安裝到服務器中,各個目錄的作用為:
目錄 | 作用 |
---|---|
bin | 可執行程序所在目錄 |
etc | 配置文件所在目錄 |
libexec | 外部插件所存放的目錄 |
sbin | Nagios CGI文件所在目錄,也就是執行外部命令所需文件所在的目錄 |
share | 網頁文件存放目錄 |
var | 日志,lock文件目錄 |
安裝nagios插件
nagios插件下載地址為:官網下載解壓安裝包:
tar zxvf nagios-plugins-2.0.1.tar.gz
進入解壓目錄:
[nagios@localhost ~]$ cd nagios-plugins-2.0.1
[nagios@localhost nagios-plugins-2.0.1]$ pwd
/home/nagios/nagios-plugins-2.0.1 #解壓路徑
分別執行命令:
./configure --prefix=/usr/local/nagios
make
sudo make install
安裝apache和php
安裝apache
nagios提供了web頁面,可以觀看被監控的資源狀態,所以需安裝apache與php來支持此項功能,那么首,查看操作系統是否自帶了apache,如果有就刪除掉:
[nagios@localhost nagios-plugins-2.0.1]$ rpm -qa | grep httpd
httpd-tools-2.2.15-45.el6.centos.x86_64
httpd-2.2.15-45.el6.centos.x86_64
#刪除自帶的apache
[nagios@localhost nagios-plugins-2.0.1]$ sudo rpm -e --nodeps httpd
下載apache安裝包 官網下載 解壓下載的安裝包并安裝:
#創建文件夾,存到執行腳本配置文件等
sudo mkdir /usr/local/apache2
#解壓安裝包
tar zxvf httpd-2.2.23.tar.gz
#進入安裝路徑
cd httpd-2.2.23
#配置值向目錄,通第一條命令的目錄
./configure --prefix=/usr/local/apache2
#編譯
make
#安裝
sudo make install
安裝php
php安裝包下載地址:官網下載,下載后執行以下命令:
#解壓安裝包
tar zxvf php-5.4.10.tar.gz
#創建文件夾,存到執行腳本配置文件等
sudo mkdir /usr/local/php
#進入解壓之后的目錄
cd php-5.4.10
#配置指向目錄
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
執行最后一條語句時,出現如下錯誤:
[圖片上傳失敗...(image-391ebf-1551885373192)]
說明沒有安裝libxml2和libxml2-devel,安裝即可:
#已經存在libxml2,說明只安裝libxml2-devel即可
[nagios@localhost php-5.4.10]$ rpm -qa libxml2
libxml2-2.7.6-20.el6.x86_64
#安裝libxml2-devel
sudo yum install -y libxml2-devel
執行成功,接續執行:
#編譯
make
#安裝
make install
最后將安裝目錄下的php.ini-production文件,拷貝至/usr/local/php/lib/下并命名為php.ini
sudo cp php.ini-production /usr/local/php/lib/php.ini
配置apache
編輯apache的配置文件httpd.conf
sudo vim /usr/local/apache2/conf/httpd.conf
找到:
User daemon
Group daemon
修改為:
Group nagios
找到:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
修改為:
<IfModule dir_module>
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
</IfModule>
為了增加用戶的訪問權限,在此文件中增加以下配置:
#setting for magion
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>
創建apache目錄驗證文件
在上面的配置中,指定了權限驗證文件/usr/local/nagios/etc/htpasswd,下面來創建這個文件,最后的nagios是用戶名,輸入命令后,需要手工輸入密碼:
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nagios
最后啟動apache服務:
sudo /usr/local/apache2/bin/apachectl start
訪問地址http://yourserver/nagios
[圖片上傳失敗...(image-20e1f0-1551885373192)]
輸入用戶名密碼
[圖片上傳失敗...(image-2491da-1551885373192)]
出現上述頁面,即apache安裝成功
配置nagios server
默認情況下,nagios沒有做任何配置,那么下面介紹一些主要配置文件和如何配置服務,配置文件主要在目錄: /usr/local/nagios/etc/
[圖片上傳失敗...(image-823eed-1551885373192)]
nagios的配置文件,是相互聯系的,搞清楚具體的配置,就可以弄清楚他們之間的依賴:
- templates.cfg
nagios主要用于監控主機資源以及服務,在nagios配置中稱為對象,為了不必重復定義一些監控對象,nagios引入了一個模板配置文件,將一些共性的屬性定義成模板,以便于多次引用,這就是templates.cfg的作用,具體的含義如下:
#一般的通用配置,下面具體的某種類型配置中,可以引用次配置
define contact{
name generic-contact ; 別名
service_notification_period 24x7 當服務出現異常時,發送通知的時間段,這個時間段"24x7"在timeperiods.cfg文件中定義
host_notification_period 24x7 ;當主機出現異常時,發送通知的時間段,這個時間段"24x7"在timeperiods.cfg文件中定義
service_notification_options w,u,c,r,f,s ; 什么級別的通知(針對主機),會被發送出去(w:warn|u:unknow|c:criticle緊急狀態|r:recover恢復狀態|d:宕機),f,s含義還沒查到
host_notification_options d,u,r,f,s ;什么級別的警告(針對服務)會被通知出去
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文件中定義
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
}
define host{
name generic-host ; 主機名稱,這里的主機名,并不是直接對應到真正機器的主機名 ; 乃是對應到在主機配置文件里所設定的主機名
notifications_enabled 1 ; Host notifications are enabled 主機啟動通知,1已啟用,0為啟用
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data 其值可以為0或1,其作用為是否啟用Nagios的數據輸出功能;如果將此項賦值為1,那么Nagios就會將收集的數據寫入某個文件中,以備提取
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
notification_period 24x7 ; Send host notifications at any time 指定“發送通知”的時間段,也就是可以在什么時候發送通知給使用者
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
# 功能同上,只不過這個是針對linux服務器的特殊配置
define host{
name linux-server ; The name of this host template
use generic-host ; This template inherits other values from the generic-host template use表示引用,也就是將主機generic-host的所有屬性引用到linux-server中來; 在nagios配置中,很多情況下會用到引用
check_period 24x7 ; By default, Linux hosts are checked round the clock 這里的check_period告訴nagios檢查主機的時間段
check_interval 5 ; Actively check the host every 5 minutes 對主機的檢查間隔時間,單位/分鐘
retry_interval 1 ; Schedule host check retries at 1 minute intervals cho 重試間隔,單位/分鐘
max_check_attempts 10 ; Check each Linux host 10 times (max) 最大重試此書
check_command check-host-alive ; Default command to check Linux hosts 指定檢查主機狀態的命令,其中“check-host-alive”在commands.cfg文件中定義
notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day 主機故障時,發送通知的時間范圍,其中“workhours”在timeperiods.cfg中進行了定義
; Note that the notification_period variable is being overridden from
; the value that is inherited from the generic-host template!
notification_interval 0 ; Resend notifications every 2 hours 在主機出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間,0代表值通知1次
notification_options d,u,r ; Only send notifications for specific host states 定義主機在什么狀態下可以發送通知給使用者
contact_groups admins ; Notifications get sent to the admins by default 指定聯系人組,這個“admins”在contacts.cfg文件中定義
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
# Generic service definition template - This is NOT a real service, just a template!定義服務的通用配置,下面的可以利用use來引用
define service{
name generic-service ; The 'name' of this service template 為這個服務取一個名字
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service 'freshness'
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
is_volatile 0 ; The service is not volatile
check_period 24x7 ; The service can be checked at any time of the day 告訴nagios檢查服務的時間段
max_check_attempts 3 ; Re-check the service up to 3 times in order to determine its final (hard) state
normal_check_interval 10 ; Check the service every 10 minutes under normal conditions
retry_check_interval 2 ; Re-check the service every two minutes until a hard state can be determined
contact_groups admins ; Notifications get sent out to everyone in the 'admins' group 指定聯系人組
notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events
notification_interval 60 ; Re-notify about service problems every hour
notification_period 24x7 ; Notifications can be sent out at any time
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
#定義一個監控本機的service
define service{
name local-service ; The name of this service template
use generic-service ; Inherit default values from the generic-service definition
max_check_attempts 4 ; Re-check the service up to 4 times in order to determine its final (hard) state
normal_check_interval 5 ; Check the service every 5 minutes under normal conditions
retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
#其余的配置,如打印機,windowServer,交換機的監控這里暫時不介紹
- resource.cfg
這個配置文件只有一行:
$USER1$=/usr/local/nagios/libexec
指定了nagios可執行插件的路徑,這個根據自己的實際路徑來決定.將來配置插件或者自定義插件,會大量用到這個變量
commands.cfg
這個文件是定義一些命令的時候,需要修改的文件,目前不需要修改默認的配置文件,后面章節中會有添加自定義服務,那里會詳細介紹如何修改hosts.cfg文件
這個文件需要手動創建,在/usr/local/nagios/etc/objects目錄下創建,內容如下:
define host{
use linux-server ;引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。
host_name nagios1 ;主機名
alias nagios1 ;主機別名
address 192.168.1.11 ;被監控的主機地址,這個地址可以是ip,也可以是域名。
}
#定義一個主機組
define hostgroup{
hostgroup_name bsmart-servers ;主機組名稱,可以隨意指定。
alias bsmart servers ;主機組別名
members nagios1 ;主機組成員,其中“Nagios-Linux”就是上面定義的主機。
}
- localhost.cfg
這個配置文件是監控nagios server本身的
# 為本機定義一個host,取名為localhost
define host{
use linux-server ; 引用模板配置文件里的內容
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name localhost
alias localhost
address 127.0.0.1
}
#定義主機組,成員只有localhost
define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members localhost ; Comma separated list of hosts that belong to this group
}
#配置文件的其他內容都為利用默認的插件,配置的一些服務,也就是localhost需要監控的一些項目
- services.cfg
這個文件也需要手工創建, 在/usr/local/nagios/etc/objects下創建,主要內容為:
define service{
use local-service ;引用local-service服務的屬性值,local-service在templates.cfg文件中進行了定義。
host_name nagios1 ;指定要監控哪個主機上的服務,“Nagios-Server”在hosts.cfg文件中進行了定義。
service_description check-host-alive ;對監控服務內容的描述,以供維護人員參考。
check_command check-host-alive ;指定檢查的命令。
}
define service{
use local-service
host_name nagios1
service_description Current Load
check_command check_nrpe!check_load
}
define service{
use local-service
host_name nagios1
service_description Check Disk sda1
check_command check_nrpe!check_sda1
}
define service{
use local-service
host_name nagios1
service_description Total Processes
check_command check_nrpe!check_total_procs
}
define service{
use local-service
host_name nagios1
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use local-service
host_name nagios1
service_description Check Zombie Procs
check_command check_nrpe!check_zombie_procs
}
- contacts.cfg
主要配置一些聯系人,聯系人組:
#聯系人
define contact{
contact_name gzd ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)引用generic-contact的屬性信息,其中“generic-contact”在templates.cfg文件中進行定義
alias gzd ; Full name of user
email gzd4215@163.com ;
}
#聯系人組,成員只有gzd
define contactgroup{
contactgroup_name admins
alias admins
members gzd
}
- timeperiods.cfg
時間的定義文件:
#24*7也就是每天
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
# 工作日,工作時間端
define timeperiod{
timeperiod_name workhours
alias Normal Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
#美國的節假日,用不到,可以直接刪除
define timeperiod{
name us-holidays
timeperiod_name us-holidays
alias U.S. Holidays
january 1 00:00-00:00 ; New Years
monday -1 may 00:00-00:00 ; Memorial Day (last Monday in May)
july 4 00:00-00:00 ; Independence Day
monday 1 september 00:00-00:00 ; Labor Day (first Monday in September)
thursday 4 november 00:00-00:00 ; Thanksgiving (4th Thursday in November)
december 25 00:00-00:00 ; Christmas
}
- cgi.cfg
此文件用來控制相關cgi腳本,如果想在nagios的web監控界面執行cgi腳本,例如重啟nagios進程,關閉nagios通知,停止nagios主機檢測等,就需要配置cgi.cfg文件了,由于nagios的web監控界面驗證用戶為nagios,所以只需在cgi.cfg文件中需要修改的配置信息如下:
default_user_name=nagios
authorized_for_system_information=nagiosadmin, nagios
authorized_for_configuration_information=nagiosadmin, nagios
authorized_for_system_commands= nagios
authorized_for_all_services=nagiosadmin, nagios
authorized_for_all_hosts=nagiosadmin, nagios
authorized_for_all_service_commands=nagiosadmin, nagios
authorized_for_all_host_commands=nagiosadmin, nagios
- nagios.cfg
nagios的核心配置文件,所有的配置,需要在此定義,才可以生效.
log_file=/usr/local/nagios/var/nagios.log # 定義nagios日志文件的路徑
cfg_file=/usr/local/nagios/etc/objects/commands.cfg # “cfg_file”變量用來引用對象配置文件,如果有更多的對象配置文件,在這里依次添加即可。
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg # 本機配置文件
cfg_file=/usr/local/nagios/etc/objects/windows.cfg # windows 主機配置文件(不用可以刪掉)
object_cache_file=/usr/local/nagios/var/objects.cache # 該變量用于指定一個“所有對象配置文件”的副本文件,或者叫對象緩沖文件
precached_object_file=/usr/local/nagios/var/objects.precache
resource_file=/usr/local/nagios/etc/resource.cfg # 該變量用于指定nagios資源文件的路徑,可以在nagios.cfg中定義多個資源文件。
status_file=/usr/local/nagios/var/status.dat # 該變量用于定義一個狀態文件,此文件用于保存nagios的當前狀態、注釋和宕機信息等。
status_update_interval=10 # 該變量用于定義狀態文件(即status.dat)的更新時間間隔,單位是秒,最小更新間隔是1秒。
nagios_user=nagios # 該變量指定了Nagios進程使用哪個用戶運行。
nagios_group=nagios # 該變量用于指定Nagios使用哪個用戶組運行。
check_external_commands=1 # 該變量用于設置是否允許nagios在web監控界面運行cgi命令;
# 也就是是否允許nagios在web界面下執行重啟nagios、停止主機/服務檢查等操作;
# “1”為運行,“0”為不允許。
command_check_interval=10s # 該變量用于設置nagios對外部命令檢測的時間間隔,如果指定了一個數字加一個"s"(如10s);
# 那么外部檢測命令的間隔是這個數值以秒為單位的時間間隔;
# 如果沒有用"s",那么外部檢測命令的間隔是以這個數值的“時間單位”的時間間隔。
interval_length=60 # 該變量指定了nagios的時間單位,默認值是60秒,也就是1分鐘 # 即在nagios配置中所有的時間單位都是分鐘。
最后驗證配置文件是正確:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果出現以下內容,則驗證成功:
[圖片上傳失敗...(image-3e4265-1551885373192)]
nagios的啟動,停止操作
啟動主要有三種方式:
#指定配置文件啟動
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
#初始化腳本啟動
/etc/init.d/nagios start
#利用服務啟動
service nagios start
重啟:
#初始化腳本重啟
/etc/init.d/nagios reload
或者
/etc/init.d/nagios restart
#利用服務啟動
service nagios restart
#可以通過web監控頁的 "Process Info" -> "Restart the Nagios process"來重啟nagios
停止
#初始化腳本重啟
/etc/init.d/nagios stop
#利用服務啟動
service nagios stop
#可以通過web監控頁的 "Process Info" -> "Shutdown the Nagios process"來停止nagios
啟動nagios后,登錄web頁面,點擊左側菜單"hosts",可以看到我們在上面定義的主機"localhost":
[圖片上傳失敗...(image-35349d-1551885373192)]
點擊左側菜單的"service",可以看到監控的服務狀態,如果為PENDING,說明服務等待執行中,稍等一會或者調小運行間隔可縮短等待時間,可以看到,服務的監控狀態均綠色,"OK"狀態,表示正常:
[圖片上傳失敗...(image-a88981-1551885373192)]
至此,nagios Serveer的配置已經完成!
nagios客戶端配置
安裝nagios插件和NRPE
被監控主機上需要安裝NRPE和安裝nagios-plugins-2.0.1.tar.gz
這個插件和nagios server上的插件為同一,安裝方法也一樣:
# mkdir /usr/local/nagios
# tar zxvf nagios-plugins-2.0.1.tar.gz
# cd nagios-plugins-2.0.1
# configure --prefix=/usr/local/nagios
# make && make install
安裝NPRE:
下載請點擊:下載地址!
安裝需SSL庫,運行:sudo yum install -y openssl-devel安裝,安裝后,一次執行以下命令:
#解壓安裝包
tar zxvf nrpe-2.8.1.tar.gz
#進入解壓目錄
cd nrpe-2.8.1
#配置安裝
./configure
#編譯
make all
#安裝check_nrpe插件
make install-plugin
#安裝daemon
make install-daemon
#安裝配置文件
make install-daemon-config
#安裝xinetd
make install-xinetd
安裝好了之后,可以看到多了這個文件:/etc/xinetd.d/nrpe,編輯這個文件:
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
#在這里增加nagios server的ip,空格分割
only_from = 127.0.0.1 192.168.1.10
}
編輯etc/services 文件,增加nrpe服務,增加內容:
nrpe 5666/tcp # nrpe
重啟xinted服務:
service xinetd restart
輸入命令netstat -na | grep :5666,出現:
[圖片上傳失敗...(image-3ce7d-1551885373192)]
則為啟動正常!
配置監控主機nrpe服務
安裝NRPE:
一次執行命令:
tar zxvf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin
以上內容結束,重啟nagios服務!
被監控主機的配置
修改/usr/local/nagios/etc/nrpe.cfg配置文件:
ommand[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_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
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
如上圖,我們在被監控的主機上定義的命令,需要在此配置文件給出!
最后請重啟nagios
PNP4Nagios
PNP4Nagios 是一個用于顯示nagios性能圖表的插件,基于RRDTool日志分析,并以 Kohana(一個 PHP 開發框架)呈現在 Web 端,可以以 Action Url 的形式集成到 Nagios 中,此處的安裝主機均在nagios server機器上安裝
Nagios對服務或主機監控的是一個瞬時狀態,有時候系統管理員如果需要了解主機在一段時間內的性能以及服務的響應狀態,并且形成圖表時,就需要通過查看日志數據來分析,但是這種方式不但繁瑣,而且抽象,可以利用PNP來解決這個問題
安裝PNP
PNP是一個小巧的開源軟件包,它基于PHP和PERL,PNP可以利用rrdtool工具將Nagios采集的數據繪制成相關的圖表,然后顯示主機或者服務在一段時間內的運行狀況
安裝rrdtool
rrdtool是一個生成圖表的工具,下載地址為: 下載地址
以此執行以下命令:
#進入壓縮包所在目錄
cd /home/nagios/
創建配置目錄
sudo mkdir /usr/local/rrdtool
解壓壓縮包,注意這里用tar xvf命令解壓
tar xvf rrdtool-1.4.8.tar.gz
進入解壓包目錄
cd rrdtool-1.4.8
#配置目錄
./configure --prefix=/usr/local/rrdtool
提示需要安裝依賴:perl和fix庫文件:
yum -y install pango*
yum -y install perl*
繼續執行
make
make install
安裝pnp4nagios
tar -xvzf pnp4nagios-0.6.21.tar.gz
cd pnp4nagios-0.6.21
./configure --with-nagios-user=nagios --with-nagios-group-nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool
make all
sudo make install
sudo make install-webconf
make install-config
make install-init
配置PNP
創建配置文件misccommands.cfg, nagios.cfg, rra.cfg, check_all_local_disks.cfg, check_nrpe.cfg, check_nwstat.cfg等
執行命令:
cp misccommands.cfg-sample misccommands.cfg
cp nagios.cfg-sample nagios.cfg
cp rra.cfg-sample rra.cfg
進入pages目錄,創建配置文件web_traffic.cfg
cp web_traffic.cfg-sample web_traffic.cfg
cd ../check_commands
cp check_all_local_disks.cfg-sample check_all_local_disks.cfg
cp check_nrpe.cfg-sample check_nrpe.cfg
cp check_nwstat.cfg-sample check_nwstat.cfg
最后,重啟NPCD服務:
sudo /etc/init.d/npcd restart
修改nagios server配置文件
修改nagios.cfg文件:
sudo vim /usr/local/nagios/etc/nagios.cfg
process_performance_data=0
#修改為
rocess_performance_data=1
#打開注釋
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
修改/usr/local/nagios/etc/objects/commonds.cfg:
增加下面內容:
#ss-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl
修改 /usr/local/nagios/etc/objects/templates.cfg:
添加:
define host {
name hosts-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$
}
define service {
name services-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
}
修改vim /usr/local/nagios/etc/objects/services.cfg:
所有服務引用services-pnp服務,例如:
define service{
use local-service,services-pnp
host_name nagios1
service_description Current Load
check_command check_nrpe!check_load
}
最后,重啟nagios server
配置pnp4nagios虛擬目錄
執行命令: vi /usr/local/apache2/conf/httpd.conf,在文檔末尾添加:
Alias /pnp4nagios "/usr/local/pnp4nagios/share"
<Directory "/usr/local/pnp4nagios/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>
修改之后,重啟apache服務
最后驗證是否安裝正確:
[圖片上傳失敗...(image-34aec3-1551885373192)]
圖標已經出現(途中紅框部分),點擊進去,發現頁面報錯誤:
[圖片上傳失敗...(image-af70d7-1551885373192)]
解決辦法,可以將/usr/local/pnp4nagios/share/ install.php文件刪除即可.
刪除后,重啟點擊圖標,可以看到:
[圖片上傳失敗...(image-59c129-1551885373192)]
以上則安裝成功!
安裝nagiosql
NagiosQL是一個基于Web方式的Nagios配置管理工具,它使用PHP語言開發,可運行在Apache下,后臺使用Mysql數據庫.同時,NagiosQL也是一個開源軟件,Nagios監控配置信息都存放于文件中,配置和修改都需要手工編輯文件,這樣十分不便,尤其當監控的內容增多時,問題就更加明顯.NagiosQL就是一款解決此類問題的軟件,它提供了可視化的配置環境(基于Web方式),以下的所有安裝,均在nagios server上進行
安裝nagiosql
安裝包下載地址:下載請點擊
解壓安裝包:
tar zxvf /home/nagios/nagiosql_311.tar.gz
將解壓包放入nagios目錄下:
mv nagiosql /usr/local/nagios/
建立配置文件目錄:
建立nagiosql導出nagios的配置文件目錄,命令如下:
sudo mkdir -p /etc/nagiosql/{hosts,services,backup,import}
sudo mkdir -p /etc/nagiosql/backup/{hosts,services}
修改httpd.conf:
添加nagiosql的虛擬目錄,文件目錄:
/usr/local/apache2/conf/httpd.conf
添加的內容為:
Alias /nagiosql "/usr/local/nagios/nagiosql/"
<Directory "/usr/local/nagios/nagiosql/">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
最后重啟apache:
sudo /usr/local/apache2/bin/apachectl restart
訪問nagiosql web頁面,地址為訪問地址: http://yourserver/nagiosql
出現異常:
[圖片上傳失敗...(image-a69adc-1551885373192)]
說明php環境沒有安裝gettext,那么下面安裝gettext
進入php解壓包里的目錄: /home/nagios/php-5.4.10/ext/gettext
依次執行命令:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
最后,修改文件/usr/local/php/lib/php.ini,在文件里增加內容:
extension = "gettext.so"
重新打開后,顯示如下則正常:`
[圖片上傳失敗...(image-eece90-1551885373192)]
開始安裝
點擊開始安裝,出現錯誤:"mysql組件未安裝",這個錯誤并不是沒有安裝mysql數據庫造成的,而是因為PHP在安裝時,沒有安裝mysql相關模塊造成的,那么,下面開始說明,如何在php已經安裝的情況下,安裝php-mysql組件:
進入php的解壓目錄:
所有php的版本都要統一的,文檔中都是用的同一PHP:
cd /home/nagios/php-5.4.10/ext/mysql
執行命令:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/ --with-zlib-dir=/usr/local/lib
這里有個問題,通過yum安裝的mysql, "--with-mysql"參數填寫"/usr/"就好,這個初步判斷是由于configure腳本的內容決定的,繼續添寫下級目錄,會報錯找不到mysql頭文件.上述命令執行后,如果報錯信息為:
configure: error: Cannot find libmysqlclient under /usr.
Note that the MySQL client library is not bundled anymore!
解決辦法為執行命令:
ln -s /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so
這個是因為php的在編譯的時候,會去/usr/lib目錄下尋找libmysqlclient,但是mysql默認是將libmysqlclient安裝到了/usr/lib64/mysql/目錄下,所以在這里,為/usr/lib64/mysql/libmysqlclient.so.16在/usr/lib/目錄下創建一個軟連接,這樣,重新運行的命令,就會執行通過.
繼續執行命令:
make
make install
修改php.ini文件
sudo vim /usr/local/php/lib/php.ini
將";extension=php_mysql.dll"修改為extension=mysql.so
將" ;date.timezone = "修改為" date.timezone = Asia/Shanghai"
這里的時區不做修改,在安裝nagiosql的時候,會有可能顯示配置文件已過期!因為時區不一致,導致時間比對出問題,報錯"配置文件已過期"
重啟apache服務:
sudo /usr/local/apache2/bin/apachectl restart
進入web頁面:http://yourserver/nagiosql,點擊"開始安裝",可以看到:
[圖片上傳失敗...(image-b09bdd-1551885373192)]
紅框位置,已經不再報錯,可以繼續往下執行安裝程序了!
mysql的配置
上面的網頁中,點擊"下一步",出現:
[圖片上傳失敗...(image-9f2743-1551885373192)]
填寫上圖紅框中的內容.點擊"下一步":
刪除magiosql安裝目錄
點擊"下一步"之后,出現:
[圖片上傳失敗...(image-96ff17-1551885373192)]
要求刪除安裝目錄,下面采用修改權限的方式來刪除:
chmod 000 /usr/local/nagios/nagiosql/install
刪除后,點擊"完成",會彈出登錄頁面(如下圖),至此,安裝部分結束:
[圖片上傳失敗...(image-8bc543-1551885373192)]
配置nagiosql
填寫用戶名:admin,密碼,登陸進管理頁面:
[圖片上傳失敗...(image-87334d-1551885373192)]
修改nagios相關路徑
[圖片上傳失敗...(image-d8a705-1551885373192)]
點擊左側框的圖標,計入頁面,并填寫紅框內容:
[圖片上傳失敗...(image-1f2be8-1551885373192)]
點擊"保存",提示成功寫入數據庫則完成:
[圖片上傳失敗...(image-f62b64-1551885373192)]
導入nagios配置文件
進入菜單"管理->工具->導入數據",如下圖:
[圖片上傳失敗...(image-d376c2-1551885373192)]
將nagios的全部配置文件導入,選擇所有文件,點擊"導入"按鈕.
繼續進入菜單:"管理 -> 工具 -> Nagios控制":
[圖片上傳失敗...(image-8799df-1551885373192)]
點擊紅框按鈕,完成數據寫入.
其實上面的兩個步驟,第一個是將nagios配置文件的數據寫入到mysql表,而寫第二個步驟,則是將mysql中已經寫好的nagios配置文件數據,寫入到/etc/nagiosql/目錄中,那么,現在來查看/etc/nagiosql/目錄下是否已經寫好了配置文件,如果增加了配置文件,則證明寫入成功,如下圖,文件已經成功寫入:
[圖片上傳失敗...(image-411c84-1551885373192)]
修改nagios主配置文件
主配置文件就是指"nagios.cfg",只不過,在這里是用web界面做修改,進入菜單"管理 -> 工具 -> Nagios配置":
[圖片上傳失敗...(image-4e99bf-1551885373192)]
編輯里面的配置內容:將"cfg_file"開頭的配置注釋掉,加入新的配置,如下:
cfg_dir=/etc/nagiosql/hosts/
cfg_dir=/etc/nagiosql/services/
cfg_file=/etc/nagiosql/commands.cfg
cfg_file=/etc/nagiosql/contactgroups.cfg
cfg_file=/etc/nagiosql/contacts.cfg
cfg_file=/etc/nagiosql/contacttemplates.cfg
cfg_file=/etc/nagiosql/hostdependencies.cfg
cfg_file=/etc/nagiosql/hostescalations.cfg
cfg_file=/etc/nagiosql/hostextinfo.cfg
cfg_file=/etc/nagiosql/hostgroups.cfg
cfg_file=/etc/nagiosql/hosttemplates.cfg
cfg_file=/etc/nagiosql/servicedependencies.cfg
cfg_file=/etc/nagiosql/serviceescalations.cfg
cfg_file=/etc/nagiosql/serviceextinfo.cfg
cfg_file=/etc/nagiosql/servicegroups.cfg
cfg_file=/etc/nagiosql/servicetemplates.cfg
cfg_file=/etc/nagiosql/timeperiods.cfg
修改之后,點擊"保存"
然后, "檢查配置文件"來檢測一下是否有錯誤的地方:
[圖片上傳失敗...(image-e70205-1551885373192)]
點擊后,報錯:
[圖片上傳失敗...(image-45a55d-1551885373192)]
檢查文件目錄"/etc/nagiosql"下,在這個目錄下,里面尋找hosts/hplj2605dn.cfg文件,找到之后發現,里面是一個主機的配置:
[圖片上傳失敗...(image-c279ba-1551885373192)]
看起來是一個惠普打印機的配置,所以覺得這個配置沒有什么用,應該是模板配置文件,所以先嘗試刪除此文件,保險起見,先執行:
mv /etc/nagiosql/hosts/hplj2605dn.cfg /etc/nagiosql/hosts/hplj2605dn.cfg.bak
同樣的,修改這個,同時也必須修改相關依賴文件,比如service的配置文件,所以在此執行命令:
mv /etc/nagiosql/services/imp_hplj2605dn.cfg /etc/nagiosql/services/imp_hplj2605dn.cfg.bak
重新檢測配置文件,發現類似的錯誤,不過,這次的錯誤是" hosts/inksys-srw224p.cfg"造成的,這個是一個路由器的配置,所以和以上的處理方法同樣,刪除或者重名了,以此類推,以同樣的方式來處理"hosts/winserver.cfg",經過對三個配置文件的處理,重新檢測,發現配置文件沒有問題:
[圖片上傳失敗...(image-9a6fe2-1551885373192)]
最后,請點擊:重新啟動nagios的按鈕來重啟nagios!
nagiosql的應用配置
nagiosql的應用配置是配置一些自定義或nagios帶的一些服務,配置菜單在"管理 -> 命令 -> 定義":
[圖片上傳失敗...(image-447688-1551885373192)]
他的主機定義在"管理 -> 監督 -> Host":
[圖片上傳失敗...(image-1c6aa9-1551885373192)]
其中有三個主機,這三個主機的配置文件,已經在之前刪除,所以,這里將這三個主機刪除.刪除按鈕就在右側的刪除圖標
如何自定義服務
因為,在nagios server(10.10.20.243)上已經安裝了mysql,那么下面,準備在此自定義一個查詢mysql服務是否啟動的服務
編寫監控shell腳本
#!/bin/bash
process=`ps -ef |grep mysql|grep -v grep |wc -l`
if [ $process -ne 2 ]
then
echo "OK-mysql已經運行!|mc=1;-;0;"
else
echo "CRITICAL info: 未發現mysql進程|mc=0;-;0;"
fi
編寫完成后,將此腳本check_mysql.sh放入nagios server(10.10.20.243)主機的/usr/local/nagios/libexec/目錄下
定義命令
進入定義命令的菜單,如圖:
[圖片上傳失敗...(image-872765-1551885373192)]
點擊"添加"按鈕.
[圖片上傳失敗...(image-e5bec6-1551885373192)]
填寫完成后,保存.
定義服務
進入定義服務的菜單,如圖:
[圖片上傳失敗...(image-751b28-1551885373192)]
點擊添加按鈕,在頁面內編輯:
[圖片上傳失敗...(image-5e87d9-1551885373192)]
點擊保存,現在看一下服務列表:
[圖片上傳失敗...(image-595800-1551885373192)]
檢查文件并重啟nagios
重啟前,需要進行配置檢查和寫入配置數據等,操作如下圖,一次執行,確保每一步都沒有報錯才可以執行下一步:
[圖片上傳失敗...(image-806621-1551885373192)]
檢查服務是否成功執行
進入http://yourserver/nagios/,點擊左側菜單"services"按鈕:
[圖片上傳失敗...(image-5b8743-1551885373192)]
以上,則定義成功!
沒有更詳細的說明自定義服務的說明和更多的一些例子,因為需要結合pnp4nagios做報表展示,作者只研究出了一個大概和滿足了當下需求,所以為了不誤導大家,并沒有把其他示例和編寫規則寫上去,大家可以先自己去研究一下,篇幅較長,整理過程中可能會出現有問題的地方,希望諒解,編寫不易,轉載請注明出處!