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 监控模板


    Zabbix 用户自定义参数方式监控 Nginx Status_第1张图片

    配置相关的监控项


    Zabbix 用户自定义参数方式监控 Nginx Status_第2张图片

    添加好的监控项
    Zabbix 用户自定义参数方式监控 Nginx Status_第3张图片

    主机关联模板
    Zabbix 用户自定义参数方式监控 Nginx Status_第4张图片

    查看数据


    Zabbix 用户自定义参数方式监控 Nginx Status_第5张图片
  2. 添加触发器
    配置触发条件


    Zabbix 用户自定义参数方式监控 Nginx Status_第6张图片

    告警触发


    Zabbix 用户自定义参数方式监控 Nginx Status_第7张图片

    Zabbix 用户自定义参数方式监控 Nginx Status_第8张图片
  3. 添加图形展示
    配置要展示的相关监控项


    Zabbix 用户自定义参数方式监控 Nginx Status_第9张图片

    查看图形展示


    Zabbix 用户自定义参数方式监控 Nginx Status_第10张图片
  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 的值
Zabbix 用户自定义参数方式监控 Nginx Status_第11张图片

你可能感兴趣的:(Zabbix 用户自定义参数方式监控 Nginx Status)