您好,登錄后才能下訂單哦!
Nagios官網:https://www.nagios.org/
nagios重狀態和結果,支持告警,沒有數據歷史,不用數據庫,不成圖像,不支持web配置,也可以自己開發腳本定制個性化的監控,支持多插件。
監控日志:log_file=/var/log/nagios/nagios.log
Web訪問原因:/etc/httpd/conf.d/nagios.conf
yum nagios默認路徑/etc/nagios,同時httpd、php被作為依賴安裝
yum install -y nagios-plugins #監控其它主機的插件
yum install -y nagios nagios-plugins-all #在/usr/lib/nagios/plugins下載一些關于監控命令的包,這樣才會有狀態
本機監控信息文件:/etc/nagios/objects/localhost.cfg
nagios-plugins-nrpe #用于和被監控別的主機通信,如監控負載,磁盤情況
nrpe #用來生成/etc/nagios/nrpe.cfg,監控本機和其它機器,也用于遠程通信
nagios -v /etc/nagios/nagios.cfg #檢測nagios.cfg是否正確
下載sendmail,并啟動
告警試發郵件: mail -s "test" 463245818@qq.com
配置服務端:192.168.134.141
cd /usr/local/src/
wgethttp://www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm
rpm -ivh epel-release-6-8_32.noarch.rpm
yum install -y nagios nagios-plugins nagios-plugins-allnrpe nagios-plugins-nrpe #安裝很多依賴包httpd、php
htpasswd -c /etc/nagios/passwd nagiosadmin #在web登陸是需要的賬號、密碼
nagios -v /etc/nagios/nagios.cfg #檢查nagios配置文件
/etc/init.d/httpd start
/etc/init.d/nagios start #默認監控本機
通過web查看nagios
http://192.168.134.141/nagios/
客戶端(監控其它機器):192.168.134.132
首先在被監控機器操作:192.168.134.132
cd /usr/local/src/
wgethttp://www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm
rpm -ivh epel-release-6-8_32.noarch.rpm
yum install -y nagios nagios-plugins nagios-plugins-allnrpe nagios-plugins-nrpe
vim /etc/nagios/nrpe.cfg
#找到并修改
allowed_hosts=127.0.0.1,192.168.134.135,192,168.134.141 #允許被誰監控
dont_blame_nrpe=1 #1為允許,0為不允許
#然后在服務端添加被監控的主機信息
vim /etc/nagios/conf.d/192.168.132.cfg
#添加內容
define host{
use linux-server #應用linux-server的屬性,templates.cfg有定義
host_name web1 #主機名
alias 134.132 #主機別名
address 192.168.134.132 #被監控的主機地址,可為IP,也可是域名
}
define service{
use generic-service
host_name 192.168.134.132
service_description check_ping
check_command check_ping!100.0,20%!200.0,50%
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.134.132
service_description check_ssh
check_command check_ssh
max_check_attempts 5 ;當nagios檢測到問題時,一共嘗試檢測5次都有問題才會告警,如果該數值為1,那么檢測到問題立即告警
normal_check_interval 1 ;重新檢測的時間間隔,單位是分鐘,默認是3分鐘
notification_interval 60;在服務出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你認為,所有的事件只需要一次通知就夠>了,可以把這里的選項設為0。
}
define service{
use generic-service
host_name 192.168.134.132
service_description check_http
check_command check_http
max_check_attempts 5
normal_check_interval 1
}
nagios -v /etc/nagios/nagios.cfg
/etc/init.d/nagios restart
以上幾個服務不依賴于客戶端nrpe服務,在自己電腦上可以使用ping或者telnet探測遠程任何一臺機器是否存活,是否開啟某個端口或服務。而當我們想要檢測客戶端的某個具體服務的情況時,就需要借助于nrpe了,比如想知道客戶端機器的負載或者磁盤使用情況
check_nrpe和nrpe daemon的工作原理
繼續添加服務:客戶端負載和磁盤使用情況,
首先在服務端:192.168.134.141
編輯服務端的命令文件和客戶端文件
vim /etc/nagios/objects/commands.cfg
#增加
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe-H $HOSTADDRESS$ -c $ARG1$
}
vim /etc/nagios/conf.d/192.168.132.cfg
#增加
define service{
use generic-service
host_name 192.168.134.141
service_description check_load
check_command check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.134.132
service_description check_disk_sda1
check_command check_nrpe!check_sda1
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.134.132
service_description check_disk_sda3
check_command check_nrpe!check_sda3
max_check_attempts 5
normal_check_interval 1
}
說明:check_nrpe!check_load:這里的check_nrpe就是在命令文件commands.cfg定義的,check_load是遠程主機上的一個檢測腳本,在/usr/lib/nagios/plugins這個文件下
客戶端操作:192.168.134.132
vim /etc/nagios/nrpe.cfg
#搜索check_load,這行就是在服務端上要執行的腳本,可以手動執行試試
把check_hda1更改一下:check_hda1改為check_sda1,/dev/hda1改為/dev/sda1
#因為本機沒有had盤,只有sda1
在添加一行
command[check_sda3]=/usr/lib/nagios/plugins/check_disk-w 20% -c 10% -p /dev/sda3
在客戶端啟動nrpe:/etc/init.d/nrpe start #用于和服務端通信
在服務端重啟nagios:/etc/init.d/nagios restart
5、服務端配置告警
vim /etc/nagios/objects/contacts.cfg
#添加內容
define contact{
contact_name David ;聯系人名稱
use generic-contact ;引用templates.cfg定義
alias 12 ;聯系人名稱
email 463245818@qq.com ;聯系人郵箱
}
define contact{
contact_name Nance
use generic-contact
alias 13
email 463245818@qq.com
}
define contactgroup{
contactgroup_name common ;組名稱
alias 112
members David,Nance ;組成員
}
#然后打開
vim /etc/nagios/conf.d/192.168.134.132.cfg
#在比較重要的服務增加
define service{
use generic-service
host_name 192.168.134.132
service_description check_load
check_command check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
contact_groups common
notifications_enabled 1
notification_period 24x7
notification_options w,u,c,r
}
#其中
notifications_enabled 1 ;是否開啟提醒功能。1為開啟,0為禁用。一般,這個選項會在主配置文件(nagios.cfg)中定義,效果相同。
notification_period 24x7 ;發送提醒的時間段。非常重要的主機(服務)我定義為7×24,一般的主機(服務)就定義為上班時間。如果不在定義的時間段內,無論什么問題發生,都不>會發送提醒。
notification_options:w,u,c,r ;這個是service的狀態。w為waning, u為unknown, c為critical, r為recover(恢復了),類似的還有一個 host對應的狀態:d,u,r d = 狀態為DOWN, u = 狀態為UNREACHABLE, r = 狀態恢復為OK,需要加入到host的定義配置里。
下載網址:https://sourceforge.net/
環境在源碼安裝好的lamp
排錯查看日志
cat /usr/local/apache2/logs/error_log
cat /usr/local/nagios/var/nagios.log
打開apache的配置文件httpd.conf,找到4個,讓它允許訪問、支持php解析、默認php、ServerName
先創建nagios用戶
useradd -s /sbin/nologin nagios
mkdir /usr/local/nagios
chown nagios:nagios /usr/local/nagios/
對于nrpe的版本下載v2.15,check_nrpe可以和nrpe daemon通信
V3.0.1自己感覺很多不足,check_nrpe和nrpe daemon不能通信,編譯的參數也不同,3.0.1可以用make查看參數
有錯誤看日志
cd /usr/local/src
yum install -y unzip #編譯nagios需要的包
#這里使用nagios4..x在安裝pnp4nagios存在不兼容問題所以建議下載nagios3.x
wget http://nchc.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.5.1/nagios-3.5.1.tar.gz
wget http://nchc.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.2.1/nagios-4.2.1.tar.gz
wget https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz#_ga=1.74695893.656335937.1476780657
wgethttp://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar -zxvf nagios-3.5.1.tar.gz
cd nagios
./configure --prefix=/usr/local/nagios
make all #編譯主程序
make install #對主程序,CGI以及HTML網頁進行安裝
make install-init #在/etc/rc.d/init.d目錄產生nagios啟動腳本
make install-commandmode #安裝和配置外部命令對nagios主路徑操作的權限。(這里所謂的外部命令主要是指apache通過CGI來對nagios的進行的操作,用戶通過web以執行CGI程序腳本的方式來對nagios的檢測結果進行讀取和調用)
make install-config #將會在/usr/local/nagios/etc這個nagios編譯安裝的主配置路徑下安裝示例配置模板
cd /usr/local/src
tar -zxvf nagios-plugins-2.1.2.tar.gz
cd nagios-plugins-2.1.2
./configure --prefix=/usr/local/nagios #在/usr/local/nagios生成libexec目錄,都是檢測腳本
make install
基本安裝完成,現在配置apache,讓它可以用web界面訪問
vim /usr/local/apache2/conf/httpd.conf
#添加一行
Include conf/extra/nagios.conf
#修改主和組
User nagios
Group nagios
然后創建nagios.conf文件
cp/usr/local/src/nagios/sample-config/httpd.conf/usr/local/apache2/conf/extra/nagios.conf
/usr/local/apache2/bin/htpasswd -c/usr/local/nagios/etc/htpasswd.users nagiosadmin #創建一個用戶,用于后臺訪問nagios
/usr/local/apache2/bin/apachectl start
/etc/init.d/nagios start
http://192.168.134.141/nagios/ #通過ip訪問nagios,點擊Services
狀態:
w :Warming 警告
u: Unknown 未知
c: Critical 危險
p: Pending 待定
r: Recovery 狀態已回復值OK
yum install -y openssl openssl-devel #./configure需要的包
cd /usr/local/src/
tar -zxvf nrpe-2.15.tar.gz
cd nrpe-2.15
./configure
make all
make install-plugin #安裝nrpe插件check-nrpe
要想在被監控的主機安裝nrpe,首先要在被監控主機刪安裝nagios插件
useradd -s /sbin/nologin nagios
cd /usr/local/src
wget https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz#_ga=1.74695893.656335937.1476780657
wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar -zxvf nagios-plugins-2.1.2.tar.gz
cd nagios-plugins-2.1.2
./configure --prefix=/usr/local/nagios--with-nagios-user=nagios --with-nagios-group=nagios #在/usr/local/nagios生成libexec目錄,都是檢測腳本
make install
ls /usr/local/nagios/ #查看一下,共有三個目錄
yum install -y openssl openssl-devel #./configure需要的包
tar -zxvf nrpe-2.15.tar.gz
cd nrpe-2.15
./configure --enable-command-args #如果要給nrpe傳遞參數,在安裝配置加上該參數
make all
make install-plugin #安裝nrpe插件check_nrpe
make install-daemon #安裝nrpe命令/usr/local/nagios/bin/nrpe
make install-daemon-config #安裝nrpe配置文件nrpe.cfg
#跳過 版本為v3.0.1 操作這步makeinstall-config #安裝nrpe配置文件nrpe.cfg
允許被別的主機監控,并自制命令
vim /usr/local/nagios/etc/nrpe.cfg
#修改
allowed_hosts=127.0.0.1,192.168.134.132
dont_blame_nrpe=1
command[check_sda1]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/sda1
command[check_sda3]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/sda3
/usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d #啟動nrpe服務
上面選項的解釋
# -c <config_file> = Name of configfile to use
#-d = Run as a standalone daemon
/usr/local/nagios/libexec/check_nrpe -H127.0.0.1 #檢查本機check_nrpe和nrpe daemon通信是否正常
停止nrpe服務可以殺死它的pid
ps -aux|grep nrpe #查看pid
#把/usr/local/nagios/include下的文件讀入nagios.cfg
vim /usr/local/nagios/etc/nagios.cfg
#添加一行
cfg_dir=/usr/local/nagios/include
#定義check_nrpe
vim/usr/local/nagios/etc/objects/commands.cfg
#添加內容
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe-H $HOSTADDRESS$ -c $ARG1$
}
#監控遠程服務
vim/usr/local/nagios/include/192.168.134.141.cfg
#添加內容
define host{
use linux-server
host_name 192.168.134.141
alias 134.141
address 192.168.134.141
}
define service{
use generic-service
host_name 192.168.134.141
service_description check_ping
check_command check_ping!100.0,20%!200.0,50%
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.134.141
service_description check_ssh
check_command check_ssh
max_check_attempts 5 ;當nagios檢測到問題時,一共嘗試檢測5次都有問題才會告警,如果該數值為1,那么檢測到問題立即告警
normal_check_interval 1 ;重新檢測的時間間隔,單位是分鐘,默認是3分鐘
notification_interval 60;在服務出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你認為,所有的事件只需要一次通知就夠>了,可以把這里的選項設為0。
}
define service{
use generic-service
host_name 192.168.134.141
service_description check_http
check_command check_http
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.134.141
service_description check_load
check_command check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.134.141
service_description check_disk_sda1
check_command check_nrpe!check_sda1
max_check_attempts 5
normal_check_interval 1
}
define service{
use generic-service
host_name 192.168.134.141
service_description check_disk_sda3
check_command check_nrpe!check_sda3
max_check_attempts 5
normal_check_interval 1
}
/usr/local/nagios/libexec/check_nrpe -H 192.168.134.132 #檢查本機check_nrpe和遠程機器的nrpedaemon通信是否正常
/etc/init.d/nagios restart
/etc/init.d/httpd restart
http://192.168.134.132/nagios/ #可以監控遠程機器的cpu,磁盤使用
實驗在云主機測試成功
利用sendEmail發送郵件配置告警
利用sendEmail登陸一個郵箱,給別的郵箱發郵件,速度快,不延遲
服務端(119.29.186.209)
安裝sendEmail
cd /usr/local/src/
wgethttp://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar -zxvf sendEmail-v1.56.tar.gz
cd sendEmail-v1.56
cp sendEmail /usr/local/bin/
測試發送郵件(成功測試)
sendEmail -t 463245818@qq.com -f14718177839@163.com -s smtp.163.com -u "gaojing" -xu m14718177839@163.com -xp20190214fang -m zhunbe i
選項解釋:
-t 表示接收者郵箱
-f 表示發送者郵箱
-s 表示SMTP服務器的域名或者ip
-u 表示郵件的主題
-xu 表示郵箱的用戶名
-xp 表示郵箱SMTP驗證的密碼(這個不是163的登陸密碼,而是SMTP服務的密碼,也就是客戶端授權密碼)
-m 表示郵箱的內容
-cc 表示抄送
-bcc 表示暗抄送
vim/usr/local/nagios/etc/objects/commands.cfg
#修改notify-host-by-email和notify-service-by-email
# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf"%b" "***** Nagios *****\n\nNotification Type:$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress:$HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" |/usr/local/bin/sendEmail -f 14718177839@163.com -t $CONTACTEMAIL$ -ssmtp.163.com -l /var/log/sendEmail -xu m14718177839 -xp 20190214fang -u"** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -m"`/usr/bin/printf "%b" "\n***** Nagios*****\n\nNotification Type: $NOTIFICATIONTYPE$ \nHost: $HOSTNAME$\nState:$HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\nDate/Time:$LONGDATETIME$\n"`"
}
# 'notify-service-by-email' commanddefinition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf"%b" "***** Nagios *****\n\nNotification Type:$NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress:$HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditionalInfo:\n\n$SERVICEOUTPUT$\n" | /usr/local/bin/sendEmail -f14718177839@163.com -t $CONTACTEMAIL$ -s smtp.163.com -l /var/log/sendEmail -xum14718177839 -xp 20190214fang -u "** $NOTIFICATIONTYPE$ Service Alert:$SERVICEDESC$ is $SERVICESTATE$ **" -m "`/usr/bin/printf"%b" "\n***** Nagios *****\n\nNotification Type:$NOTIFICATIONTYPE$ \nService: $SERVICEDESC$\nHost: $HOSTNAME$\nState:$SERVICESTATE$\nAddress:$HOSTADDRESS$\nInfo:$SERVICEOUTPUT$\nDate/Time:$LONGDATETIME$\n"`"
}
vim/usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name da
use generic-contact
alias da
# service_notification_period 24x7
# host_notification_period 24x7
# service_notification_options w,u,c
# host_notification_options d,u
# service_notification_commands notify-service-by-email
# host_notification_commands notify-host-by-email
email 463245818@qq.com
}
define contact{
contact_name fang
use generic-contact
alias fang
email 237600604@qq.com
}
define contactgroup{
contactgroup_name ops
alias ops
members da,fang
}
vim /usr/local/nagios/include/xiaojun.cfg
define service{
use generic-service
host_name 115.28.76.154
service_description check_ssh
check_command check_ssh
max_check_attempts 5 ;當nagios檢測到問題時,一共嘗試檢測5次都有問題才會告警,如果該數值為1,那么檢測到問題立即告警
normal_check_interval 1 ;重新檢測的時間間隔,單位是分鐘,默認是3分鐘
notification_interval 60;在服務出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你認為,所有的事件只需要一次通知就夠>了,可以把這里的選項設為0。
}
define service{
use generic-service
host_name 115.28.76.154
service_description check_http
check_command check_http
max_check_attempts 1
normal_check_interval 1
notification_interval 1
contact_groups ops
notifications_enabled 1
notification_period 24x7
notification_options w,u,c,r
}
#其中
notifications_enabled 1 ;是否開啟提醒功能。1為開啟,0為禁用。一般,這個選項會在主配置文件(nagios.cfg)中定義,效果相同。
notification_period 24x7 ;發送提醒的時間段。非常重要的主機(服務)我定義為7×24,一般的主機(服務)就定義為上班時間。如果不在定義的時間段內,無論什么問題發生,都不>會發送提醒。
notification_options:w,u,c,r ;這個是service的狀態。w為waning, u為unknown, c為critical, r為recover(恢復了),類似的還有一個 host對應的狀態:d,u,r d = 狀態為DOWN, u = 狀態為UNREACHABLE, r = 狀態恢復為OK,需要加入到host的定義配置里。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。