監(jiān)控服務(wù)-Zabbix自定義腳本監(jiān)控

一、第一里程:編輯并使用腳本

根據(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)控項選項中。


    顯示圖像
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容