一、第一里程:編輯并使用腳本
根據(jù)所需監(jiān)控內(nèi)容自行編輯腳本內(nèi)容,并測試成功,例如查看以當(dāng)前nginx狀態(tài)信息編輯腳本如下:
[root@web01 ~]# cat /server/scripts/nginx_status.sh
#!/bin/bash
case "$1" in
active)
curl -s 172.16.1.7/status |awk 'NR==1{print $NF}'
;;
accept)
curl -s 172.16.1.7/status |awk 'NR==3{print $1}'
;;
handle)
curl -s 172.16.1.7/status |awk 'NR==3{print $2}'
;;
request)
curl -s 172.16.1.7/status |awk 'NR==3{print $NF}'
;;
reading)
curl -s 172.16.1.7/status |awk 'NR==4{print $2}'
;;
writing)
curl -s 172.16.1.7/status |awk 'NR==4{print $4}'
;;
waiting)
curl -s 172.16.1.7/status |awk 'NR==4{print $6}'
esac
并測試腳本執(zhí)行成功
root@web01 ~]# sh /server/scripts/nginx_status.sh active
1
[root@web01 ~]# sh /server/scripts/nginx_status.sh accept
3698
[root@web01 ~]# sh /server/scripts/nginx_status.sh handle
3705
[root@web01 ~]# sh /server/scripts/nginx_status.sh request
3715
[root@web01 ~]# sh /server/scripts/nginx_status.sh reading
0
[root@web01 ~]# sh /server/scripts/nginx_status.sh writing
1
[root@web01 ~]# sh /server/scripts/nginx_status.sh waiting
0
注意:這里一定要測試所有傳參都成功,才可以進(jìn)行下一步
話外篇:在這里我們是以nginx七種狀態(tài)信息為例子,若使用相同的例子,必須確保nginx服務(wù)中開啟stub_status;功能,并匹配location,配置如下:
location /status {
stub_status;
}
將此配置放在/etc/nginx/nginx.conf文件下的server模塊下即可,nginx.conf文件內(nèi)容如下:
[root@web01 ~]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
}
location /status {
stub_status;
}
}
include /etc/nginx/conf.d/*.conf;
}
二、第二里程:編輯客戶端自定義監(jiān)控項的配置文件
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_status.conf
UserParameter=nginx.status[*],/bin/sh /server/scripts/nginx_status.sh "$1"
自定義監(jiān)控腳本的格式與通過命令自定義監(jiān)控的格式一致,只不過在給自定義監(jiān)控項設(shè)置名稱時需要在后面添加對應(yīng)的變量,在這里通常都是用*號代表所有變量,并用中括號括起,逗號后面接上對應(yīng)的執(zhí)行腳本命令,注意一定要寫腳本的絕對路徑,后面跟上傳參,有一個就一個,有倆個就寫倆個,分別用“”引起。
三、第三里程:重啟客戶端
systemctl restart zabbix-agent.service
四、第四里程:服務(wù)端檢測是否正常接收客戶端數(shù)據(jù)信息
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k nginx.status[active]
1
注意:在配置自定義監(jiān)控腳本時,[*]中的中括號里面的*號,代表腳本所需的所有傳參,因此在客戶端發(fā)送及獲取數(shù)據(jù)時,不能以*號代替所有傳參,必須一個一個變量填寫,如上圖所示
五、web頁面配置
-
第一步:在配置中找到對應(yīng)的模板,給該腳本監(jiān)控項設(shè)置應(yīng)用集。
找到對應(yīng)模板
創(chuàng)建應(yīng)用集
應(yīng)用集命名并添加 - 第二步:創(chuàng)建監(jiān)控項,注意這里創(chuàng)建監(jiān)控項時一定要根據(jù)監(jiān)控項的變量個數(shù),來決定寫多少個監(jiān)控項,例如監(jiān)控nginx的狀態(tài)信息,一共在腳本中設(shè)定了7個變量,那么就需要添加7個監(jiān)控項,不可用*號代替。
創(chuàng)建監(jiān)控項
創(chuàng)建監(jiān)控項內(nèi)容,其余默認(rèn)即可
PS:創(chuàng)建多個類似相同的監(jiān)控項,可以點擊選中的監(jiān)控項,進(jìn)入后點擊最下方的克隆即可 - 第三步:創(chuàng)建觸發(fā)器,根據(jù)實際情況決定,是否需要報警,如不需要可不設(shè)置,例如當(dāng)nginx等待響應(yīng)數(shù)據(jù)大于10時,發(fā)出一般嚴(yán)重報警,可按以下配置。
創(chuàng)建監(jiān)控項
添加監(jiān)控項
添加監(jiān)控項及內(nèi)容詳解請見:http://www.itdecent.cn/p/ec86683cc9a9
最終顯示結(jié)果 -
第四步:創(chuàng)建圖形,用來直觀感受收集的數(shù)據(jù)信息
創(chuàng)建圖形
添加圖形
這里需要注意的就是將需要圖形化展示的監(jiān)控項逐一添加到監(jiān)控項選項中。
顯示圖像










