zoukankan      html  css  js  c++  java
  • 利用redis的订阅和发布来实现实时监控的一个DEMO(Python版本)

           redis的list类型有个很好的特性,就是每次添加元素后会返回当前list的长度,利用这个特点,我们可以监控它的长度,比如我们的key是用户注册的IP地址,list中存放的是已经在此IP地址上注册的用户的ID,当用户数超过1000的时候来发一个告警,而redis的订阅和发布功能就能帮你很轻松地实现通知监控程序。

    第一步,下载需要的软件:

        redis:  http://redis.googlecode.com/files/redis-2.6.14.tar.gz

        redis-py:  https://github.com/andymccurdy/redis-py/archive/master.zip

    第二步,编写客户端client.py:

    #!/usr/bin/env python
    #coding=utf-8
    import redis

    if __name__ == "__main__":

        rc = redis.Redis(host='10.250.2.18',port=6379,db=0,password='master123')
        ip_addr = "192.168.1.100"
        for i in xrange(500):
            count = rc.lpush("ip:192.168.1.100",i)
            if count > 1000:
                rc.publish("count_alarm", count)
                rc.publish('ip_alarm', ip_addr)

               


    如果没有设置redis的密码,可以删除password属性【默认没有配置】

    第三步,编写服务端 server.py:

    #!/usr/bin/env python
    #coding=utf-8

    import redis

    rc = redis.Redis(host='10.250.2.18',port=6379,db=0,password='master123')
    ps = rc.pubsub()
    ps.subscribe(['count_alarm', 'ip_alarm'])  #订阅两个频道,分别是count_alarm ip_alarm


    for item in ps.listen():


        if item['type'] == 'message':
            print item['channel'] , item['data'] # 此处就可以做和监控相关的事了,比如发邮件通知、短信通知或者IM通知等等


    第四步,查看效果

    运行server.py:

    python server.py

    运行client.py:

    python client.py

    client.py会马上结束,而server.py会一直监听,一个简单的DEMO就做好了


  • 相关阅读:
    Windows7下面手把手教你安装Django
    windows系统下Python环境的搭建
    PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点
    结构化程序设计 ?
    编译性语言、解释性语言和脚本语言
    在linux中关闭防火墙
    Linux下Apache服务的查看和启动
    AWS中,如果使用了ELB,出现outofservice
    亚马逊的PuTTY连接AWS出现network error connection refused,终极解决方案。
    9.Node.js 包管理器npm
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3228803.html
Copyright © 2011-2022 走看看