继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python脚本监控线上AMQ Number of Pending Messages数量

holdtom
关注TA
已关注
手记 1885
粉丝 240
获赞 992


需求:用python脚本统计线上AMQ的Number of Pending Messages数量,当达到10的时候发送Email报警邮件

脚本实现逻辑如下:

1)用户名密码登陆到WEB页面

2)获取WEB页面的源代码

3)用正则表达式匹配AMQ的Number of Pending Messages值

4)判断是否达到报警阀值

5)如果达到报警阀值,发送Email报警邮件

在登陆AMQ页面的时候用Fiddler工具(www.fiddler2.com)查看HTTP请求的详细过程。

Fiddler工具的Headers可以查看HTTP请求的Header头信息。

145224456.jpg

Fiddler工具的Auth可以看到客户端发送过来的用户名和密码信息。

145525205.jpg

Fiddler工具的RAW可以查看详细的消息结构 

150238274.jpg

在Headers头中看到的信息Authorization: Basic YWRtaW46YWRtaW5AdGNsdWI= 红色的部分其实是HTTP认证的用户名和密码,是通过base64加密的,在python通过base64可以解密出用户名和密码,和Auth里面看到的一致。

>>> import base64

>>> s = 'YWRtaW46YWRtaW5AdGNsdWI='

>>> import tab

>>> import base64   

>>> s = 'YWRtaW46YWRtaW5AdGNsdWI='

>>> print base64.b64

>>> print base64.b64decode(s)

admin:admin@tclub

在Python脚本中,发送http请求的时候把fiddler分析出来的这个“Authorization: Basic YWRtaW46YWRtaW4=”加上就OK了,就是把用户名密码转换成base64加到header头里面。

#!/usr/bin/env python

#sfzhang131029

#encoding:utf-8

import re

import os

import sys

import time

import base64

import urllib2

date = time.strftime('%Y-%m%d-%H:%M')

login_url = 'http://192.168.1.244:8161/admin/xml/queues.jsp'

req = urllib2.Request(login_url)

Username = 'admin'

Password = 'admin@tclub'

max_size = 0

#把用户名密码转换成Base64编码

base64_info = base64.encodestring(

                '%s:%s' % (Username, Password))[:-1]

print base64_info

auth_header =  "Basic %s" % base64_info

#把Fiddler分析出来"Authorization: Basic YWRtaW46YWRtaW5AdGNsdWI="添加到HTTP请求头里面

req.add_header("Authorization", auth_header)

try:

    handle = urllib2.urlopen(req)

except IOError, e:

    print "your username or password is wrong"

    sys.exit(1)

html = handle.read()

#用正则表达匹配AMQ"Number of Pending Messages"数值

r1 = r'size="[0-9]*"'

size_list = re.findall(r1,html)

#print size_list

#找出size最大值

for i in size_list:

    tmp = int(i.split('=')[1].replace('"',''))

    if tmp > max_size:

        max_size = tmp

print max_size

mail_CMD = "echo '%s The number of apache amq entry connections is more then %d' and check! |mail -s 'Apache amq alarm' zhangshifeng@tclub.cn" % (date,max_size)

#用if判断如果超出阀值,则发送报警邮件

if max_size < 10:

    print "%s The apache amq is ok!" % date

else:

    print  "%s The number of apache amq entry connections is more then %d and check!" % (date,max_size)

    os.system(mail_CMD)

总结:Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。

©著作权归作者所有:来自51CTO博客作者sfzhang的原创作品,如需转载,请注明出处,否则将追究法律责任

BasicAuthenticationpython脚本Python编程


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP