一个 activemq 的爬虫脚本

本贴最后更新于 1239 天前,其中的信息可能已经天翻地覆

实现:当“number of pendig messages”的数值超过 100 时,发送钉钉群通知

# encoding=utf-8
import urllib2
import cookielib
from bs4 import BeautifulSoup
import re
import requests
# import urllib
import json
queue_url1 = "http://127.0.0.1:8161/admin/queues.jsp"
queue_url2 = "http://127.0.0.1:8162/admin/queues.jsp"
def MQBrowser(url):
#    login_page = queue_url
    login_page = url
    try:
        cj = cookielib.CookieJar()
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

        opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'),
                             ('Authorization', 'Basic eG1sbHltcTpYTWxpYW5sdW95aW1xISE=')]
        #ata = urllib.urlencode({"user":'xmllymq',"password":'XMlianluoyimq!!'})  
        opener.open(url)
        op = opener.open(login_page)
        data = op.read()
        return data
    except Exception,e:
        print(str(e))


#def get_queue_size_by_name(queue_name):
#    content = MQBrowser(queue_url)
#    soup = BeautifulSoup(''.join(content),'lxml')
#    queue_list = soup.findAll('tbody')[1].findAll('tr')
#    for i in queue_list:
#        queue_info = i.findAll('td')
#        if queue_name == queue_info[0].text.strip():
#            num_pending = queue_info[1].text.strip()
#    return -1


ef dingding(Queue_Name,Num_Pending):

    url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx'
    headers = {
            "Content-Type": "application/json",
            "Chartset": "utf-8"
    }

    # 要发送的文本是json格式
    request_data = {
            "msgtype": "markdown",
             "markdown": {"title": "告警:队列消息积压",
                          "text": "消息队列可能消费异常:\n\n"+"Queue_Name:%s \n\n" %Queue_Name +"Num_Pending:%s \n\n" %Num_Pending
              },
             "at": {
                    "atMobiles": [],
                    "isAtAll": False
              }
    }

    # 把json转变为字符串格式数据
    send_data = json.dumps(request_data)
    # 这个是发送post请求,请求钉钉接口
    response = requests.post(url=url, headers=headers, data=send_data)
    # 讲求成功后返回的数据
    content = response.content.decode()
    # 打印
    # print(content)
  
 def get_queue_size(queue_url):
    content = MQBrowser(queue_url)
    soup = BeautifulSoup(''.join(content),'lxml')
    #li = soup.find('li')
    queue_list = soup.findAll('tbody')[1].findAll('tr')
    queue_dic = {}
    for i in queue_list:
        queue_info = i.findAll('td')
        queue_name = queue_info[0].text.strip()
        num_pending = queue_info[1].text.strip()
        num_consumer = queue_info[2].text.strip()
        num_enqueued = queue_info[3].text.strip()
        num_dequeued = queue_info[4].text.strip()
        queue_dic[queue_name] = [num_pending, num_consumer, num_enqueued, num_dequeued]
        if (int(num_pending.encode("utf-8")) > 100):
           dingding(queue_name,num_pending)
    #print(queue_dic[1][1])


#def get_queue_detail(queue_name):
#    content = MQBrowser("http://127.0.0.1:8161/admin/browse.jsp?JMSDestination=%s" % queue_name)
#    soup = BeautifulSoup(''.join(content),'lxml')


if __name__ == "__main__":
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    #MQBrowser(queue_url)
    get_queue_size(queue_url1)
    get_queue_size(queue_url2)
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    535 引用 • 672 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yp

    现在用 activeMQ 的很少了吧

推荐标签 标签

  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 693 关注
  • 分享

    有什么新发现就分享给大家吧!

    242 引用 • 1746 回帖 • 1 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    15 引用 • 7 回帖 • 7 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 150 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    131 引用 • 3639 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖 • 1 关注
  • V2Ray
    1 引用 • 15 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 2 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖 • 2 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 190 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖 • 2 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 1 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 602 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 96 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    303 引用 • 777 回帖
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 597 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 21 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    108 引用 • 54 回帖 • 1 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 25 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 54 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    1 引用 • 11 回帖
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖 • 1 关注