您的位置:首页 > 编程语言 > Python开发

使用Python开发类Nagios监控软件

2016-03-18 12:30 330 查看
知识点:

1、 使用redis发布\订阅功能做服务器和客户端的通信通道

2、 利用面向对象思想开发监控模板

3、 时间监控项目插件化,允许用户自行开发监控插件

监控类型

基础监控
硬件、网络信息

系统监控
内存、硬盘、网络流量、IO、CPU

应用监控 Mysql

业务监控  模拟并监控业务逻辑、网站访问质量

监控模式

主动监控——服务器主动向客户端轮询状态

1、 适用于中小型网络、或者是不能装客户端的网络设备

2、 给服务器造成的开销压力比较大

3、 轮询延迟

被动监控——客户端主动向服务器定期汇报状态

1、 适用于大型网络系统,设备较多

2、 可扩展性强、可定制性强

3、 需要装客户端,客户端更新、升级问题

需求分析:

1、 每个客户端需要监控的服务不同

2、 每个服务的监控间隔不同

3、 允许模板的形式批量修改监控指标

4、 不同设备的监控阀值不同

5、 可自定最近N分钟内……指标超过阀值

6、 报警策略、报警等级、报警自动升级。报警的时候不能总报给管理员,如果很多台机器出了问题,那么就要先给报警中心,报警中心对报警信息进行分级,然后把重要的报给管理员,这一点非常重要。

7、 历史数据的存储和优化

8、 跨机房、区域代理服务器

分享:小米自主研发的监控系统,规定在一秒钟内取出来历史的数据(RD2)。

类似股票走势来做,那么就会造成数据失真。相对于历史的数据用户更希望拿到过去的整体信息,而不是精确的数据。这么做的话就可以减少数据存储的空间,那么在进行索引的时候就会很快。做到数据失真要用到如下代码实现:

data = {

'real':[(324,14132154548),(324,14132154548),(324,14132154548),(324,14132154548),(324,14132154548)]2880

'10':[(324,14132154548),(324,14132154548),(324,14132154548)]2880

'30':[(324,14132154548),(324,14132154548),(324,14132154548)]2880

}

就是每来一个数据,咱们就对字典进行优化,对其他的数据存储到硬盘里就行了。算下来每台机器五年的数据大概就是500兆,所以这样就大大解决了数据信息过大导致索引时间过长的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: