Zabbix 用户自定义参数方式监控 Nginx Status

  1. 配置 nginx 开启 nginx status 功能
# vim /etc/nginx/conf.d/status.conf
server {
    listen       81 default_server;
    server_name  _;
    location / {
        stub_status on;
        allow 127.0.0.1;
        deny all;
    }
}

# systemctl reload nginx

# curl 127.0.0.1:81/nginx_status
Active connections: 2 
server accepts handled requests
 185 185 5993 
Reading: 0 Writing: 1 Waiting: 1
  1. 编写符合 zabbix 用户自定义参数(UserParameter) 格式要求的脚本
# vim /etc/zabbix/zabbix_agentd.d/get_nginx_status.py
# coding: utf-8

import requests
import sys


def get_status_data():
    url = 'http://127.0.0.1:81/nginx_status'
    req = requests.get(url)
    data = req.text.split('\n')
    return data


if __name__ == "__main__":
    args = " active | accepts | handled | requests | reading | writing | waiting"
    line_data = get_status_data()
    if len(sys.argv) == 2:
        if sys.argv[1] == 'active':
            print line_data[0].split(':')[1]
        elif sys.argv[1] == 'accepts':
            print line_data[2].split()[0]
        elif sys.argv[1] == 'handled':
            print line_data[2].split()[1]
        elif sys.argv[1] == 'requests':
            print line_data[2].split()[2]
        elif sys.argv[1] == 'reading':
            print line_data[3].split(' ')[1]
        elif sys.argv[1] == 'writing':
            print line_data[3].split(' ')[3]
        elif sys.argv[1] == 'waiting':
            print line_data[3].split(' ')[5]
        else:
            print "Usage: " + sys.argv[0] + args
    else:
        print "Usage: " + sys.argv[0] + args

# python get_nginx_status.py active
 1 
  1. zabbix_agentd.conf 中跟 zabbix UserParameter 相关的配置项
# egrep "^Include|^UnsafeUserParameters" /etc/zabbix/zabbix_agentd.conf 
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
  1. 配置 nginx status 的 UserParameter
# vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx.status[*],/usr/bin/python /etc/zabbix/zabbix_agentd.d/get_nginx_status.py $1
# systemctl restart zabbix-agent
  1. 在 zabbix server 上测试 UserParameter 是否配置正确
# zabbix_get -s 192.168.1.254 -p 10050 -k nginx.status[active]
 6
  1. 配置 zabbix web 端的监控项
    配置 nginx status 监控模板



    配置相关的监控项



    添加好的监控项

    主机关联模板

    查看数据


  2. 添加触发器
    配置触发条件



    告警触发



  3. 添加图形展示
    配置要展示的相关监控项



    查看图形展示


  4. Zabbix 用户自定义参数方式执行流程:

zabbix web 监控项 nginx.status[active] --> UserParameter=nginx.status[active] --> /usr/bin/python /etc/zabbix/zabbix_agentd.d/get_nginx_status.py active --> 取得 active 的值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容