一、第一里程:編輯并使用腳本
根據(jù)所需監(jiān)控內容自行編輯腳本內容硬霍,并測試成功帜慢,例如查看以當前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
注意:這里一定要測試所有傳參都成功,才可以進行下一步
話外篇:在這里我們是以nginx七種狀態(tài)信息為例子唯卖,若使用相同的例子粱玲,必須確保nginx服務中開啟stub_status;功能,并匹配location拜轨,配置如下:
location /status {
stub_status;
}
將此配置放在/etc/nginx/nginx.conf文件下的server模塊下即可抽减,nginx.conf文件內容如下:
[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)控項設置名稱時需要在后面添加對應的變量卵沉,在這里通常都是用*號代表所有變量,并用中括號括起堪嫂,逗號后面接上對應的執(zhí)行腳本命令偎箫,注意一定要寫腳本的絕對路徑,后面跟上傳參皆串,有一個就一個淹办,有倆個就寫倆個,分別用“”引起恶复。
三怜森、第三里程:重啟客戶端
systemctl restart zabbix-agent.service
四速挑、第四里程:服務端檢測是否正常接收客戶端數(shù)據(jù)信息
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k nginx.status[active]
1
注意:在配置自定義監(jiān)控腳本時,[*]中的中括號里面的*號副硅,代表腳本所需的所有傳參姥宝,因此在客戶端發(fā)送及獲取數(shù)據(jù)時,不能以*號代替所有傳參恐疲,必須一個一個變量填寫腊满,如上圖所示
五、web頁面配置
-
第一步:在配置中找到對應的模板培己,給該腳本監(jiān)控項設置應用集碳蛋。
- 第二步:創(chuàng)建監(jiān)控項,注意這里創(chuàng)建監(jiān)控項時一定要根據(jù)監(jiān)控項的變量個數(shù)省咨,來決定寫多少個監(jiān)控項肃弟,例如監(jiān)控nginx的狀態(tài)信息,一共在腳本中設定了7個變量零蓉,那么就需要添加7個監(jiān)控項笤受,不可用*號代替。
PS:創(chuàng)建多個類似相同的監(jiān)控項箩兽,可以點擊選中的監(jiān)控項,進入后點擊最下方的克隆即可 - 第三步:創(chuàng)建觸發(fā)器紊册,根據(jù)實際情況決定比肄,是否需要報警,如不需要可不設置囊陡,例如當nginx等待響應數(shù)據(jù)大于10時芳绩,發(fā)出一般嚴重報警,可按以下配置撞反。
添加監(jiān)控項及內容詳解請見:http://www.reibang.com/p/ec86683cc9a9
-
第四步:創(chuàng)建圖形妥色,用來直觀感受收集的數(shù)據(jù)信息
這里需要注意的就是將需要圖形化展示的監(jiān)控項逐一添加到監(jiān)控項選項中。