一、環(huán)境搭建(nginx監(jiān)控)
1拧簸、客戶端配置
(1)安裝nginx
yum install nginx -y
(2)配置nginx
vim /etc/nginx/nginx.conf
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all ;
}
(3)啟動nginx
systemctl start nginx.service
(4)編輯nginx監(jiān)控腳本
vim /etc/zabbix/zabbix_agentd.d/nginx_status.sh
#!/bin/bash
nginx_status_fun(){ #函數(shù)內(nèi)容
NGINX_PORT=$1 #端口劲绪,函數(shù)的第一個參數(shù)是腳本的第二個參數(shù),即腳本的第二個參數(shù)是段端口號
NGINX_COMMAND=$2 #命令盆赤,函數(shù)的第二個參數(shù)是腳本的第三個參數(shù)贾富,即腳本的第三個參數(shù)是命令
nginx_active(){ #獲取nginx_active數(shù)量,以下相同牺六,這是開啟了nginx狀態(tài)但是只能從本機看到
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
nginx_reading(){ #獲取nginx_reading狀態(tài)的數(shù)量
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
nginx_writing(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
nginx_waiting(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
nginx_accepts(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
nginx_handled(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
nginx_requests(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
esac
}
main(){ #主函數(shù)內(nèi)容
case $1 in #分支結(jié)構(gòu)颤枪,用于判斷用戶的輸入而進(jìn)行響應(yīng)的操作
nginx_status) #當(dāng)輸入nginx_status就調(diào)用nginx_status_fun,并傳遞第二和第三個參數(shù)
nginx_status_fun $2 $3;
;;
*) #其他的輸入打印幫助信息
echo $"Usage: $0 {nginx_status key}"
esac #分支結(jié)束符
}
main $1 $2 $3
(5)修改腳本權(quán)限
chmod +x /etc/zabbix/zabbix_agentd.d/nginx_status.sh
(6)編輯zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1 $2 $3
(7)重啟zabbix-agent
systemctl restart zabbix-agent.service
(8)server端測試
zabbix_get -s 192.168.43.101 -p 10050 -k "nginx.status[nginx_status,80,active]"
2淑际、新建模板以及鏈接主機
(1)新建模板或者導(dǎo)入已有的模板
(2)鏈接主機
(面)3畏纲、設(shè)置報警
(1)新建報警媒介
上面的配置相當(dāng)于是配置郵件的發(fā)件人扇住,由于使用的是163郵箱,服務(wù)使用的pop3服務(wù)盗胀,所以可以在163郵箱設(shè)置中查找pop3艘蹋,可以獲取服務(wù)器地址和端口,服務(wù)要確保開啟
smtp電郵填寫要發(fā)送的163郵箱票灰,生產(chǎn)中ssl要勾選簿训,認(rèn)證選擇用戶名和密碼,用戶名是發(fā)送郵件的163箱米间,密碼填寫授權(quán)碼
(2)給用戶綁定報警方式
(3)添加動作
該圖展示的功能為當(dāng)zabbix觸發(fā)下面的這六項都會進(jìn)行發(fā)郵件處理,也可以選擇指定的報警程度膘侮,點擊添加就可屈糊,計算方式就選擇默認(rèn)的或者或,否則郵件不會進(jìn)行發(fā)送
默認(rèn)的標(biāo)題和消息內(nèi)容可以進(jìn)行修改琼了,操作點擊新的逻锐,步驟是用來做分級告警的,持續(xù)時間選擇60雕薪,如果寫0昧诱,調(diào)用的時間就是最上面默認(rèn)操作步驟持續(xù)時間,
分級報警
(面)4所袁、nginx的故障自愈
在使用zabbix監(jiān)控nginx時盏档,nginx故障之后,zabbix只是發(fā)告警給我們燥爷,但是zabbix也可以執(zhí)行遠(yuǎn)程命令蜈亩,運行腳本或者命令,實現(xiàn)nginx的重啟前翎。
(1)server端web界面創(chuàng)建新的動作
(2)開啟zabbix的sudo權(quán)限(將下面的一項加到root下面一行稚配,使用wq!強制保存)
vim /etc/sudoers
zabbix ALL =(ALL) NOPASSWD: ALL
(3)修改zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1·#允許遠(yuǎn)程執(zhí)行命令
UnsafeUserParameters=1 #允許使用一些特殊符號
(4)重啟程序
systemctl restart zabbix-agent.service