做者博文地址:https://www.cnblogs.com/liu-shuai/php
1、簡介
Nagios是一款開源的免費網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警,第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。
Nagios是一個監視系統運行狀態和網絡信息的監視系統。Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。
Nagios可運行在Linux/Unix平臺之上,同時提供一個可選的基於瀏覽器的WEB界面以方便系統管理人員查看網絡狀態,各類系統問題,以及日誌等等。
Nagios 能夠監控的功能有:
監控網絡服務(SMTP、POP三、HTTP、PING等);
監控主機資源(處理器負荷、磁盤利用率等);
簡單地插件設計使得用戶能夠方便地擴展本身服務的檢測方法;
當服務或主機問題產生與解決時將告警發送給聯繫人(經過EMail、短信、用戶定義方式);
能夠定義一些處理程序,使之可以在服務或者主機發生故障時起到預防做用;
自動的日誌滾動功能;
可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等;
Nagios-plugins
nagios-plugins是nagios官方提供的一套插件程序,nagios監控主機的功能其實都是經過執行插件程序來實現的。
nagios自己並無監控的功能,全部的監控是由插件完成的,插件將監控的結果返回給nagios,nagios分析這些結果以web的方式展示給咱們,同時提供相應的報警功能。
全部的這些插件是一些實現特定功能的可執行程序,默認安裝的路徑是/usr/local/nagios/libexec,能夠本身查看。
2、工做流程
NRPE
NRPE是一款用來監控被控端主機資源的工具,沒有它,nagios將沒法對被控端服務器的主機資源進行監控!
NRPE總共由兩部分組成:
check_nrpe 插件,位於在監控主機上
NRPE daemon,運行在遠程的linux主機上(一般就是被監控機)
nagios監控遠程linux主機的服務或者資源的通常過程:
1.nagios 會運行 check_nrpe 這個插件,告訴它要檢查什麼;
2.check_nrpe 插件會鏈接到遠程的 NRPE daemon ,所用的方式是SSL;
3.NRPE daemon 會運行相應的 nagios 插件來執行檢查;
4.NRPE daemon 將檢查的結果返回給 check_nrpe 插件,插件將其遞交給 nagios 作處理。
Nagios 根據插件返回來的值,來判斷監控對象的狀態,並經過 web 顯示出來,以供管理員及時發現故障。
Nagios能夠識別4種狀態返回信息:
0 (OK) 表示狀態正常/綠色;
1 (WARNING) 表示出現警告/黃色;
2 (CRITICAL) 表示出現很是嚴重的錯誤/紅色;
3 (UNKNOWN) 表示未知錯誤/深黃色。
3、準備環境
Nagios 版本 主機名 IP 運行服務
Server CentOS 6.7 CenttOS-01 192.168.0.41 Nginx + Php + Nagios + Nagios-plugins + Nrpe
Client CentOS 6.7 CenttOS-02 192.168.0.42 Nagios-plugins + Nrpe
4、開始安裝
軟件版本
nagios-4.1.1.tar.gz
nagios-plugins-2.0.3.tar.gz
nrpe-2.15.tar.gz
Nagios 服務端
一、建立用戶
[root@CentOS-01 ~]# useradd nagios -s /sbin/nologin
二、安裝依賴
[root@CentOS-01 ~]# yum install -y gcc-* glibc glibc-common gd gd-devel openssl-devel httpd-tools unzip \
perl perl-devel perl-Params-Validate perl-Math-Calc-Units perl-Regexp-Common perl-Class-Accessor perl-Config-Tiny \
perl-Nagios-Plugin.noarch perl-FCGI* perl-IO*
三、編譯安裝NAGIOS
[root@CentOS-01 ~]# cd /usr/local/src/nagios/soft/
[root@CentOS-01 soft]# tar fx nagios-4.1.1.tar.gz
[root@CentOS-01 soft]# cd nagios-4.1.1
[root@CentOS-01 nagios-4.1.1]# ./configure --prefix=/usr/local/nagios
[root@CentOS-01 nagios-4.1.1]# make all
[root@CentOS-01 nagios-4.1.1]# make install
[root@CentOS-01 nagios-4.1.1]# make install-init ## 安裝NAGIOS啓動管理腳本
[root@CentOS-01 nagios-4.1.1]# make install-commandmode ## NAGIOS 目錄賦權
[root@CentOS-01 nagios-4.1.1]# make install-config ## 生成 NAGIOS 全部配置文件
[root@CentOS-01 nagios]# ls /usr/local/nagios/
bin etc libexec sbin share var
bin 可執行程序目錄
etc 配置文件目錄
libexec 插件所在目錄
sbin CGI文件所在目錄(執行外部命令所需文件)
share web 頁面文件目錄
var 日誌文件、鎖文件目錄
四、安裝插件 nagios-plugins
[root@CentOS-01 ~]# cd /usr/local/src/nagios/soft/
[root@CentOS-01 soft]# tar fx nagios-plugins-2.0.3.tar.gz
[root@CentOS-01 soft]# cd nagios-plugins-2.0.3
[root@CentOS-01 nagios-plugins-2.0.3]# ./configure --prefix=/usr/local/nagios
[root@CentOS-01 nagios-plugins-2.0.3]# make && make install
[root@CentOS-01 nagios]# ls /usr/local/nagios/libexec
五、安裝組件 NRPE
[root@CentOS-01 ~]# cd /usr/local/src/nagios/soft/
[root@CentOS-01 soft]# tar fx nrpe-2.15.tar.gz
[root@CentOS-01 soft]# cd nrpe-2.15
[root@CentOS-01 nrpe-2.15]# ./configure --prefix=/usr/local/nagios
[root@CentOS-01 nrpe-2.15]# make && make install
[root@CentOS-01 nrpe-2.15]# ls /usr/local/nagios/libexec/check_nrpe
/usr/local/nagios/libexec/check_nrpe
六、配置 NAGIOS WEB 界面
[root@CentOS-01 nagios]# cd /usr/local/nginx/conf/
[root@CentOS-01 conf]# mkdir conf.d
[root@CentOS-01 conf]# cd conf.d/
[root@CentOS-01 conf.d]# htpasswd -bc /usr/local/nagios/etc/htpasswd.pwd nagios nagios_test
[root@CentOS-01 conf.d]# cat nagios.conf
server {
listen 80;
server_name nagios.test.com;
root /usr/local/nagios/share/;
index index.php index.html;
access_log logs/nagios_access.log;
error_log logs/nagios_error.log;
## WEB 訪問限制
auth_basic "Nagios Access";
auth_basic_user_file /usr/local/nagios/etc/htpasswd.pwd;
## 用戶訪問限制
location / {
allow *.*.*.*/24;
allow *.*.*.0/24;
deny all;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nagios/share$fastcgi_script_name;
include fastcgi_params;
}
location /nagios {
alias /usr/local/nagios/share/;
}
location /cgi-bin/ {
alias /usr/local/nagios/sbin/;
}
location /stylesheets {
gzip off;
alias /usr/local/nagios/share/stylesheets;
}
location /pub {
gzip off;
alias /usr/local/nagios/share/docs;
}
location ~ .*\.(cgi|pl)?$ {
gzip off;
root /usr/local/nagios/sbin;
rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
fastcgi_pass unix:/usr/local/nagios/perl-fcgi/perl-fcgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.cgi;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param HTTP_ACCEPT_LANGUAGE zh_CN;
include fastcgi_params;
fastcgi_read_timeout 60;
}
}
[root@CentOS-01 conf.d]# service nginxd restart
[root@CentOS-01 conf.d]# service php-fpm restart
七、更改 NAGIOS WEB 頁面佈局
[root@CentOS-01 nagios]# cd /usr/local/src/nagios/soft/
[root@CentOS-01 soft]# cp vautour_style.zip /usr/local/nagios/share/
[root@CentOS-01 soft]# cp -r perl-fcgi /usr/local/nagios/
[root@CentOS-01 soft]# cd /usr/local/nagios/
[root@CentOS-01 nagios]# mkdir ./sbin/cgi-bin && cp ./sbin/*.cgi ./sbin/cgi-bin/
[root@CentOS-01 nagios]# cd share/
[root@CentOS-01 share]# unzip vautour_style.zip
[root@CentOS-01 share]# service nginxd restart
5、配置監控本機資源
一、NAGIOS 配置文件說明
[root@CentOS-01 soft]# cd /usr/local/nagios/etc/
[root@CentOS-01 etc]# ls
cgi.cfg htpasswd.pwd nagios.cfg objects resource.cfg
cgi.cfg 控制CGI訪問的配置文件
nagios.cfg NAGIOS主配置文件
resource.cfg NAGIOS資源配置文件,又稱變量文件.在該文件中定義變量,以便於其餘配置文件調用。
objects 模板配置文件目錄
[root@CentOS-01 etc]# ls objects
commands.cfg contacts.cfg localhost.cfg printer.cfg switch.cfg templates.cfg timeperiods.cfg windows.cfg
commands.cfg 命令定義配置文件,其中定義的命令能夠被其餘配置文件引用
contacts.cfg 定義聯繫人和聯繫人組的配置文件
localhost.cfg 定義監控本地主機的配置文件
printer.cfg 定義監控打印機的一個配置文件模板,默認沒有啓用此文件
switch.cfg 定義監控交換機的一個配置文件模板,默認沒有啓用此文件
templates.cfg 定義主機和服務的一個模板配置文件,能夠在其餘配置文件中引用
timeperiods.cfg 定義Nagios 監控時間段的配置文件
windows.cfg 監控Windows 主機的一個配置文件模板,默認沒有啓用此文件
二、配置文件之間的關係
在nagios的配置過程當中涉及到的幾個定義有:主機、主機組,服務、服務組,聯繫人、聯繫人組,監控時間,監控命令等,從這些定義能夠看出,nagios各個配置文件之間是互爲關聯,彼此引用的。
成功配置出一臺nagios監控系統,必需要弄清楚每一個配置文件之間依賴與被依賴的關係,最重要的有四點:
a: 定義監控哪些主機、主機組、服務和服務組;
b: 定義這個監控要用什麼命令實現;
c: 定義監控的時間段;
d: 定義主機或服務出現問題時要通知的聯繫人和聯繫人組.
爲了能更清楚的說明問題,同時也爲了維護方便,建議將nagios各個定義對象建立獨立的配置文件:
建立hosts.cfg文件來定義主機和主機組
建立services.cfg文件來定義服務
用默認的contacts.cfg文件來定義聯繫人和聯繫人組
用默認的commands.cfg文件來定義命令
用默認的timeperiods.cfg來定義監控時間段
用默認的templates.cfg文件做爲資源引用文件
三、配置監控本機
[root@CentOS-01 nagios]# cd /usr/local/nagios/etc/objects/
[root@CentOS-01 objects]# vim templates.cfg
###################### 定義郵件聯繫人 #####################
### 定義默認郵件聯繫人模板
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
register 0
}
#########################################################
# 定義主機模板
#########################################################
define host{
name generic-host
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_interval 1 # 檢查時間間隔
retry_interval 2 # 重試檢查時間間隔
max_check_attempts 2 # 最大檢查次數(發現主機故障時,檢查多少次纔會通知聯繫人異常)
notification_interval 30 # 再次發出通知的時間間隔
notification_period 24x7 # 通知時間段
notification_options d,u,r # 通知選項(d:宕機;u:未知;r:恢復)
contact_groups admins # 通知的聯繫人
register 0 # DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
define host{
name linux-server
use generic-host ## 引用上邊定義的 generic-host 模板
check_command check-host-alive
process_perf_data 1
register 0
}
#########################################################
# 定義服務模板
#########################################################
define service{
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 1
retry_check_interval 2
contact_groups admins
notification_options w,u,c,r
notification_interval 360
notification_period 24x7
register 0
}
####################################################
## 針對不一樣部門制定不一樣模板策略
####################################################
### 定義'DSP'組監控策略
define service {
name generic-service-dsp
use generic-service ## 引用上邊定義的 generic-service 模板
contact_groups admins,adminsdsp
process_perf_data 1
register 0
}
####################################################
# 定義本機資源模板
####################################################
define service {
name generic-load-service
use generic-service
service_description Current Load
check_command check_nrpe!check_load
register 0
}
define service {
name generic-mem-service
use generic-service
service_description MEM Useage
check_command check_nrpe!check_mem
register 0
}
define service {
name generic-swap-service
use generic-service
service_description Swap Useage
check_command check_nrpe!check_swap
register 0
}
define service {
name generic-disk-service
use generic-service
service_description Disk Partition
check_command check_nrpe!check_disk
register 0
}
define service {
name generic-iostat-service
use generic-service
service_description Disk Iostat
check_command check_nrpe!check_iostat
register 0
}
[root@CentOS-01 objects]# vim contacts.cfg
##################################################
### ******* 定義聯繫人 *******
##################################################
### Default
define contact{
contact_name nagiosadmin
use generic-contact ## 引用 templates.cfg 中定義的 generic-contact 模板
alias Nagios Admin
email yw@test.com
}
##################################################
### 定義不一樣組郵件聯繫人
##################################################
### OPS
define contact{
contact_name nagios-ops
use generic-contact
alias Ops
email yw@test.com ## 定義聯繫人郵箱,多個逗號分隔.
}
#############################################
### ******* 定義聯繫人組 *******
#############################################
############### 定義默認郵件聯繫人組 ################
### Defalut Contactgroup ###
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}
############### 定義不一樣組郵件聯繫人組 ###############
### OPS
define contactgroup{
contactgroup_name adminsops
alias OpsGroups
members nagios-ops
}
[root@CentOS-01 objects]# vim hosts.cfg
#########################################
# HOST DEFINITION
#########################################
###定義本機策略
#host:CentOS-01 |ip:192.168.101.181 |group:localhost
define host {
use linux-server ## 引用 templates.cfg 中定義的 linux-server 模板
host_name CentOS-01 ## 主機名(隨意)
alias 192.168.101.181 ## 別名(隨意)
address 192.168.101.181 ## IP地址
contact_groups admins ## 聯繫人組名. 引用 contacts.cfg 中定義的默認聯繫人組
}
define hostgroup {
hostgroup_name localhost
alias localhost
members CentOS-01 ## 要跟 host_name 一致
}
[root@CentOS-01 objects]# mkdir /usr/local/nagios/services/192.168.101.181 -p
[root@CentOS-01 objects]# cd /usr/local/nagios/services/192.168.101.181
[root@CentOS-01 192.168.101.181]# ls
disk.cfg iostat.cfg load.cfg mem.cfg swap.cfg
[root@CentOS-01 192.168.101.181]# cat disk.cfg
####################################
# SERVICE DEFINITION
####################################
define service {
use generic-disk-service ## 引用 templates.cfg 中定義的 generic-disk-service 模板
host_name CentOS-01 ## 要跟 hosts.cfg 中定義的 host_name 一致
}
[root@CentOS-01 192.168.101.181]# cat iostat.cfg
####################################
# SERVICE DEFINITION
####################################
define service {
use generic-iostat-service ## 引用 templates.cfg 中定義的 generic-iostat-service 模板
host_name CentOS-01 ## 要跟 hosts.cfg 中定義的 host_name 一致
}
[root@CentOS-01 192.168.101.181]# cat load.cfg
####################################
# SERVICE DEFINITION
####################################
define service {
use generic-load-service ## 引用 templates.cfg 中定義的 generic-load-service 模板
host_name CentOS-01 ## 要跟 hosts.cfg 中定義的 host_name 一致
}
[root@CentOS-01 192.168.101.181]# cat mem.cfg
###################################
# SERVICE DEFINITION
###################################
define service {
use generic-mem-service ## 引用 templates.cfg 中定義的 generic-mem-service 模板
host_name CentOS-01 ## 要跟 hosts.cfg 中定義的 host_name 一致
}
[root@CentOS-01 192.168.101.181]# cat swap.cfg
##################################
# SERVICE DEFINITION
##################################
define service {
use generic-swap-service ## 引用 templates.cfg 中定義的 generic-swap-service 模板
host_name CentOS-01 ## 要跟 hosts.cfg 中定義的 host_name 一致
}
[root@CentOS-01 192.168.101.181]# cd /usr/local/nagios/etc/objects
[root@CentOS-01 objects]# vim ../nagios.cfg
.......
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.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/hosts.cfg
cfg_dir=/usr/local/nagios/services/192.168.101.181
.......
vim /usr/local/nagios/etc/nrpe.cfg
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=192.168.101.181
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
command[check_load]=/usr/local/nagios/libexec/check_load -w 12,8,5 -c 25,20,15
command[check_mem]=/usr/local/nagios/libexec/check_memory -w 10% -c 3%
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
command[check_iostat]=/usr/local/nagios/libexec/check_iostat -w 10 -c 15
command[check_disk]=/usr/local/nagios/libexec/check_disk.sh
[root@CentOS-01 nagios]# cp check_disk.sh check_memory check_iostat /usr/local/nagios/libexec/
[root@CentOS-01 nagios]# chmod 755 /usr/local/nagios/libexec/{check_disk.sh,check_memory,check_iostat}
[root@CentOS-01 nagios]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
[root@CentOS-01 nagios]# service nagios restarthtml