使用zenoss监控nignx

配置nginx开启stub_status模块
结果为:
后台获取数据的脚本:
#!/usr/bin/env python
from optparse import OptionParser
import sys
import httplib
import re

class NginxStatsPlugin:
    def __init__(self, host, port, ssl, url):
        self.host = host
        self.port = port
        self.ssl = ssl
        self.url = url

    def run(self):
        metrics = {}

        if self.ssl:
            conn = httplib.HTTPSConnection(self.host, self.port)
        else:
            conn = httplib.HTTPConnection(self.host, self.port)

        try:
            conn.request('GET', self.url)
            response = conn.getresponse()
            if response.status != 200:
                print 'Server replied: %d %s to action GET %s' % (
                        response.status, response.reason, self.url)
                sys.exit(1)
            data = response.read()

            line_regex = re.compile(r'^([^:]+): (.+)$')
            datalist=data.split("\n")
            for line in datalist:
                if datalist.index(line)==0:
                    match = line_regex.search(line)
                    if not match: continue
                    name, value = match.groups()
                    if name == 'Active connections':
                        metrics['ActiveConnections'] = value
                elif datalist.index(line)==2:
                    linelist=line.split("")
                    if len(linelist)==3:
                        metrics['Server']=linelist[0]
                        metrics['Accepts']=linelist[1]
                        metrics['HandledRequests']=linelist[2]
                elif datalist.index(line)==3:
                    linelist=line.split("")
                    for i in linelist:
                        match = line_regex.search(i)
                        if not match: continue
                        name, value = match.groups()
                        if name == 'Reading':
                            metrics['Reading'] = value
                        if name == 'Writing':
                            metrics['Writing'] = value
                        if name == 'Waiting':
                            metrics['Waiting'] = value
                        
        except SystemExit:
            sys.exit(1)
        except Exception, e:
            print str(e)
            sys.exit(1)

        if not metrics:
            print "no metrics were returned"
            sys.exit(1)

        print "STATUS OK|%s" % (' '.join([ "%s=%s" % (m[0],m[1]) \
            for m in metrics.items() ]))

if __name__ == "__main__":
    parser = OptionParser()
    parser.add_option('-H', '--host', dest='host',
        help='Hostname of Nginx server')
    parser.add_option('-p', '--port', dest='port',
        type='int', default=80,
        help='Port of Nginx server')
    parser.add_option('-s', '--ssl', dest='ssl',
        action='store_true', default=False,
        help='Use HTTPS for the connection')
    parser.add_option('-u', '--url', dest='url',
        default='/server-status?auto',
        help='Relative URL of server status page')
    options, args = parser.parse_args()

    if not options.host:
        print "You must specify the host parameter."
        sys.exit(1)

    cmd = NginxStatsPlugin(
        options.host, options.port, options.ssl, options.url)
    cmd.run()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值