评论

收藏

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

开发技术 开发技术 发布于:2021-06-24 09:37 | 阅读数:542 | 评论:0

需求:用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头信息。 DSC0000.jpg Fiddler工具的Auth可以看到客户端发送过来的用户名和密码信息。 DSC0001.jpg Fiddler工具的RAW可以查看详细的消息结构
DSC0002.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 pythonsfzhang131029encoding: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无论对开发人员或者测试人员来说,都是非常有用的工具。






关注下面的标签,发现更多相似文章