Python运维三十六式:用Python写一个简单的监控系统

市面上有很多开源的监控系统:Cacti、nagios、zabbix。感觉都不符合我的需求,为什么不自己做一个呢

Python两个小时徒手撸了一个简易的监控系统,给大家分享一下,希望能对大家有所启发

首先数据库建表

建立一个数据库“falcon”,建表语句如下:

首先我们设计一个web服务,实现如下功能:

  1. 完成监控页面展示
  2. 接受POST提交上来的数据
  3. 提供json数据GET接口

目录结构如下:

flask_web.py

这个template页面是我抄的highstock的示例,mon.html

简单起见我们只展示mem_usage信息到页面上

web展示页面完成了,运行起来:

Python flask_web.py 监听在8888端口上

我们需要做一个agent来采集数据,并上传数据库

moniItems.py

nohup python moniItems.py >/dev/null 2>&1 & 运行起来

访问 http://51reboot.com:8888 就可以看到我们的监控数据了:效果图如下

chart

欢迎加入运维开发技术分享QQ群:365534424;数百位业内高手和同行在等你交流

文章分类 分享PPT, 后端, 运维开发
3 comments on “Python运维三十六式:用Python写一个简单的监控系统
  1. 匿名说道:

    看楼主的date方法,每次都是把全部的数据都取出来,然后在页面展示出来,感觉这样会有性能问题,有没有专门的绘图工具来处理,比如rddtool

    • auxten说道:

      这个简单的系统的数据采集和展示是分开的,rrdtool不适合较为灵活的数据展示。在实际的项目中,数据一般是存储在Hbase集群中,数据展示会按照展示的日期range进行获取,并进行一定的数据合并,当然,有时还需要有离线的数据老化合并系统,将较为久远的数据进行合并优化

  2. killniu说道:

    问一个问题,怎么才能显示实时的数据,像这样的
    http://www.highcharts.com/stock/demo/dynamic-update
    多谢

1 Pings/Trackbacks 对 "Python运维三十六式:用Python写一个简单的监控系统"

发表评论

电子邮件地址不会被公开。

在线交流

数百位业内高手和同行在等你交流
Reboot运维开发分享