zabbix管理七之监控nginx性能

zabbix管理七之监控nginx性能python



说明:
nginx

    使用zabbix监控nginx,首先nginx须要配置ngx_statusweb

    在编译安装nginx时须要使用--with-http_stub_status_module参数shell

    在nginx的配置文件nginx.conf里添加以下:
vim

        location /nginx_status {
             stub_status on;
             access_log off;
             allow 127.0.0.1;
             allow 27.115.xxx.xxx;
             allow 211.95.xxx.xxx;
             deny all;
        }

wKioL1anLNvRabO2AABSggHogBk371.png


注意1:bash

访问:服务器

http://localhost/nginx_status

会看到这样的信息:并发

Active connections: 291
server accepts handled requests
  16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106

其含义很容易理解:curl

  • 第一行ide

    • 当前的活跃链接数:291

  • 第二行

    • 服务器已接受的链接数:16630948(accepted connection #)

    • 服务器已处理的链接数:16630948(handled connection #)

    • 服务器已处理的请求:31070465(能够算出,平均每一个链接有 1.8 个请求)(handled connection #)

  • 第三行

    • Reading – Nginx 读取的请求头次数为 6;

    • Writting – Nginx 读取请求体、处理请求并发送响应给客户端的次数为 179;

    • Waiting – 当前活动的长链接数:106。

Nginx 官方的解释以下:

  • active connections – number of all open connections

  • server accepts handled requests – nginx accepted 16630948 connections, handled 16630948 connections (no one was closed just it was accepted), and handles 31070465 requests (1.8 requests per connection)

  • reading – nginx reads request header

  • writing – nginx reads request body, processes request, or writes response to a client

  • waiting – keep-alive connections, actually it is active - (reading + writing)


注意2:

    自定义key(键值)参考:http://www.ttlsa.com/zabbix/zabbix-user-parameters/





方法一:使用shell实现:

    zabbix客户端:

cd /root/scripts

vim ngx_status.sh
#!/bin/bash
# Description:zabbix监控nginx性能以及进程状态
# Note:此脚本须要配置在被监控端
 
HOST="192.168.1.92"
PORT="80"
 
# 检测nginx性能
function active {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
$1

chmod +x /root/scripts/ngx_status.sh
##将自定义的UserParameter加入配置文件,而后重启agentd
vim /opt/zabbix/etc/zabbix_agentd.conf
添加:
UserParameter=nginx[*],/root/scripts/ngx_status.sh $1

/etc/init.d/zabbix_agentd restart
##服务端:
##zabbix_get测试:
[root@localhost ~]# /opt/zabbix/bin/zabbix_get  -s 192.168.1.92 -k nginx[requests]
43232




方法二:使用python实现:

    zabbix客户端:

cd /root/scripts

vim ngx_status.py
#!/usr/bin/env python
#encoding:utf-8

import sys
import requests

r = requests.get('http://192.168.1.92/nginx_status')
statusList = r.text.split()

def connections():
    connections = statusList[2]
    print connections

def accepts():
    accepts = statusList[7]
    print accepts

def handled():
    handled = statusList[8]
    print handled

def requests():
    requests = statusList[9]
    print requests

def Reading():
    Reading = statusList[11]
    print Reading

def Writing():
    Writing = statusList[13]
    print Writing

def Waiting():
    Waiting = statusList[15]
    print Waiting

fun_name = eval(sys.argv[1])        #将字符串类型转换为函数类型
fun_name()

chmod +x /root/scripts/ngx_status.sh
##将自定义的UserParameter加入配置文件,而后重启agentd
vim /opt/zabbix/etc/zabbix_agentd.conf
添加:
UserParameter=nginx[*],/root/scripts/ngx_status.sh $1

/etc/init.d/zabbix_agentd restart
#服务端:
##zabbix_get测试:
[root@localhost ~]# /opt/zabbix/bin/zabbix_get  -s 192.168.1.92 -k nginx[requests]
43232





最后在zabbix的web界面操做:

    建立模板--->建立分组--->建立监控项--->建立触发器--->建立图形

wKioL1anN-fzuKycAAE_KJg12J4801.png


注:

    附件有一个模板

相关文章
相关标签/搜索