使用zabbix監控Nginx服務
1.開啟nginx狀态監控
1.安裝nginx
[root@192_168_81_220 ~]# yum -y install nginx
2.開啟狀态監控頁面
[root@192_168_81_220 ~]# vim /etc/nginx/nginx.conf
location /nginx_status {
stub_status;
}
3.重啟nginx
[root@192_168_81_220 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@192_168_81_220 ~]# systemctl start nginx
4.訪問
[root@192_168_81_220 ~]# curl 192.168.81.220/nginx_status
Active connections: 1
server accepts handled requests
4 4 9
Reading: 0 Writing: 1 Waiting: 0
2.nginx監控狀态值詳解
Active connections: 1 //當前活躍的連接數,當前有多少個連接訪問我
accepts 4 //nginx啟動到現在共接收了多少個請求
handled 4 //nginx啟動到現在共處理了多少個請求
requests //總的http請求數
Reading: 0 //當前讀取的連接請求頭數
Writing: 1 //當前響應客戶端請求數
Waiting: 0 //當前的等待請求數
writing waiting的值要等于Active connections的值
3.利用zabbix監控nginx狀态值
思路:
1.首先編寫獲取值的腳本,由于是web頁面,因此可以通過curl命令來抓取
2.腳本裡面可以定義函數,每一個值對應一個函數,最後在使用case判斷傳參進來的$1與那個函數匹配,匹配正确則執行函數
3.定義傳參形式的監控項key,這樣就可以定義一個key值,寫不同的$1就可以了
3.1.編寫獲取監控值腳本
腳本編寫思路:首先将curl命令獲取的數據保存到一個文件中,然後定義當前時間和文件時間的變量,進行比較,如果當前時間比文件時間大于60s,則把curl命令的文件進行删除,重新curl獲取數據并導入到文件中,最後通過定義各種狀态的函數,函數裡面主要就是通過文件把狀态值獲取到,再通過case進行判斷要傳那個參數,最後執行對應參數的命令獲取監控值
最後監測進程是否存活可以通過ps查到進程然後通過wc -l獲取數量,最後echo這個值,然後創建觸發器,最新值等于0就表示進程不存在
1.編寫腳本
[root@192_168_81_220 ~]# cd /etc/zabbix/scripts/
[root@192_168_81_220 scripts]# vim tcp_zabbix.sh
#!/bin/bash
#這是一個簡單的監控nginx狀态值的腳本
#20201030 ---jxl
comm_para=$1
cachefile=/tmp/nginx_status.txt
port=80
cmd="/usr/bin/curl 127.0.0.1:$port/nginx_status"
file_time=`stat -c %Y $cachefile`
now_time=`date %s`
rm_file=$(($now_time - $file_time))
if [ ! -f $cachefile ];then
$cmd > $cachefile 2>/dev/null
fi
if [ $rm_file -gt 60 ];then
rm -rf $cachefile
fi
if [ ! -f $cachefile ];then
$cmd > $cachefile 2>/dev/null
fi
active() {
cat $cachefile | awk '/Active/{print $NF}'
exit 0;
}
accepts() {
cat /tmp/nginx_status.txt | awk '{if(NR==3){print $1}}'
exit 0;
}
handled(){
cat /tmp/nginx_status.txt | awk '{if(NR==3){print $2}}'
exit 0;
}
requests(){
cat /tmp/nginx_status.txt | awk '{if(NR==3){print $3}}'
exit 0;
}
reading() {
cat /tmp/nginx_status.txt | awk '{if(NR==4){print $2}}'
exit 0;
}
writing() {
cat /tmp/nginx_status.txt | awk '{if(NR==4){print $4}}'
exit 0;
}
waiting() {
cat /tmp/nginx_status.txt | awk '{if(NR==4){print $6}}'
exit 0;
}
check() {
nginx_pro_count=`ps aux | grep nginx | grep -v grep | grep -v nginx_status.sh | wc -l`
echo $nginx_pro_count
}
case "$comm_para" in
active)
active
;;
accepts)
accepts
;;
handled)
handled
;;
requests)
requests
;;
reading)
reading
;;
writing)
writing
;;
waiting)
waiting
;;
check)
check
;;
*)
echo "invalid status"
exit 2;
esac
2.給執行權限并測試
[root@192_168_81_220 scripts]# chmod a x tcp_zabbix.sh
[root@192_168_81_220 scripts]# sh tcp_zabbix.sh active
3.2.編寫自定義監控項配置文件
1.寫配置文件
[root@192_168_81_220 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@192_168_81_220 zabbix_agentd.d]# vim nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/scripts/nginx_status.sh $1
2.重啟
[root@192_168_81_220 zabbix_agentd.d]# systemctl restart zabbix-agent
3.用zabbix_server測試監控key
[root@zabbix-server ~]# zabbix_get -s 192.168.81.220 -k nginx_status[active]
1
[root@zabbix-server ~]# zabbix_get -s 192.168.81.220 -k nginx_status[check]
4
成功
3.3.創建監控模闆
3.3.1.點擊配置—模闆—創建模闆
3.3.2.填寫模闆信息
名稱:nginx status template
3.3.3.創建應用集
名稱:nginx status
3.3.4.創建監控項
名稱:Nginx status active
鍵值:nginx_status[active]
更新間隔:60s,因為腳本裡面的判斷時間就是60s
應用集選擇:nginx status
其他監控項配置一緻,隻是參數key值不一樣
所有監控項key值
nginx_status[active]
nginx_status[accepts]
nginx_status[handled]
nginx_status[requests]
nginx_status[reading]
nginx_status[writing]
nginx_status[waiting]
nginx_status[check]
所有監控項創建完成
3.3.5.創建觸發器
對監控狀态值可以不做觸發器,但是要對nginx進程做觸發器
點擊創建觸發器
填寫觸發器信息
名稱:nginx進程不存在
嚴重性:嚴重
表達式:{nginx status template:nginx_status[check].last()}=0
觸發器條件設置
3.3.6.創建圖形
點擊創建圖形
名稱:nginx狀态監控
把所有nginx監控項都選上,最後點擊添加
3.3.7.模闆創建完成
4.監控主機應用nginx監控模闆
192.168.81.220為例,192.168.81.230配置一樣
點擊配置—主機—模闆—選擇模闆—添加
點擊更新
192.168.81.230在鍊接模闆之前要把腳本和配置文件全部scp過去
[root@192_168_81_220 ~]# scp /etc/zabbix/scripts/nginx_status.sh [email protected]:/etc/zabbix/scripts/nginx_status.sh
[root@192_168_81_220 ~]# scp /etc/zabbix/zabbix_agentd.d/nginx_status.conf [email protected]:/etc/zabbix/zabbix_agentd.d/
[root@192_168_81_220 ~]# ssh [email protected] "systemctl restart zabbix-agent"
5.查看最新數據
點擊監測—最新數據
已經有值
6.觸發nginx進程存在并告警
[root@192_168_81_220 ~]# systemctl stop nginx
[root@192_168_81_220 ~]# ps aux | grep nginx | grep -v grep | grep -v nginx_status.sh | wc -l
0
坐等報警即可
儀表盤顯示
報警短信
7.利用grafana生成nginx狀态監控圖形
7.1.創建圖形
點擊創建圖形
選擇條形圖
選擇完圖形後點擊edit兩次即可添加監控項
7.2.添加監控項
點擊add query—填寫監控信息
Group:知識點管理平台
Host:$host
Application:nginx status
Item:Nginx status accepts
所有監控項都是這麼添加,點擊add query就可以了
7.3.設置圖形名稱
7.4.保存圖形
7.5.查看圖形
在右上角可以設置時間
————————————————
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!