博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用redis的订阅和发布来实现实时监控的一个DEMO(Python版本)
阅读量:5110 次
发布时间:2019-06-13

本文共 1206 字,大约阅读时间需要 4 分钟。

       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就做好了

 

转载于:https://www.cnblogs.com/jiangu66/p/3228803.html

你可能感兴趣的文章
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
C#网络爬虫
查看>>
CentOS 6及7 丢失root密码解决方案
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
用PowerShell脚本删除SharePoint 的 Page中的WebPart
查看>>
VMware网络设置
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
工作中的优化之数字键盘优化
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
shell之文本过滤(grep)
查看>>
【BZOJ-2142】礼物 拓展Lucas定理
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
jQuery Mobile笔记
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
vue组件之间的引用
查看>>
【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash
查看>>
Linux目录规范和含义(转)
查看>>