Python学习day08 分布式监控系统开发实战

#Created on 2017年01月10日

第一课 作业 19minutes
审计开发
用户可登录和操作指定机器,机器组
用户可通过不同的远程帐号登录远程主机:
在选择主机后可选择收号登录,如Root或其他

作业二:
Select代码作业,加注释

课程说明:
1.使用Redis发布、订阅功能做服务器和客户端通信通道
2.利用面向对象思想开发监控模板
3.实现监控项目插件,允许用户自行开发监控插件


第二课 分布式监控开发需求设计 76minutes

使用Python开发类似Nagios监控软件

C/S架构(大型架构)
降低服务器压力
可监控更多内容
SNMP(中小型)
只监控常用CPU/内存/流量等信息
服务器主动发起,增加服务器负载

C/S架构监控需求:
1.每客户端监控服务不同
2.每服务监控间隔不同
3.允许模板的形式批量修改监控指标
4.对不同设备监控阈值不同
5.报警设置(可自定义最近时间内,hit\max\avg\last\...指标超出阀值)
6.事件策略,报警等级,报警自动升级
7.历史数据存储、优化(Zabbix数据库优化问题,大数据会导致软件运行缓慢)
8.跨机房、区域代理服务器

5分钟监控一次,每机器20个监控指标,1000台机器
1000*20=20000 5分钟
20000*12 =240000 一小时
24W * 24 =576 0000 一天

数据显示 按分钟,天,周,年显示----如何优化
按每分钟存数据
按每天存数据
按每周存数据
按每月存数据

分布式部署(代理服务器)

 

#Created on 2017年01月11日
第三课 Redis的使用 27minutes

twisted---一个封闭了Socket的包,用Epoll实现

Redis --nonesql,用于缓存数据
Key:Value方式存取数据

set key values EX times 添加数据
get key 获取数据
lpush 数据放前面
rpuch 数据放后面
lrange 提取数据

Redis正常数据存取到内存中,一旦终止,数据会消失
save将内存数据存取到硬盘中
del 删除


第四课 Redis订阅和发布功能 40minutes
第五课 Redis订阅和发布功能2 5minutes

下载Redis Linux
可通过Redis Agent连接Server

客户端写入Redis,服务器端从Redis取数据
客户端将数据发给服务器,服务器再写入Redis,加入自己的时间
----需要看视频并自己测试
#! -*- coding:utf-8 -*-
import sys,os,re,time
import redis

class main():
def __init__(self):
self.__conn = redis.Redis(host = '127.0.0.1')
self.chan_sub = 'fm104'
self.chan_pub = 'fm104'

def get(self,key):
return self.__conn.get(key)

def set(self,key,value):
self.__conn.set(key,value)

def public(self,msg):
self.__conn.public(self.chan_pub,msg)
return True

def subscribe(self):
pub = self.__conn.pubsub() # 打开收音机
pub.pubscrbe(self.chan_sub) #订阅频道
pub.parse_response() #接收信息
return pub

if __name__ == '__main__':
main = main()

 

#Created on 2017年01月14日---这两课要多听,不是很明白
第六课 设计监控项和监控模板 75minutes

模板形式监控CPU和内存

插件放在客户端
服务器端放配置 信息和模板

 

第七课 将主机监控信息提存处理 64minutes

同级目录下的文件无法导入其他目录的模块,需要将根目录放到环境变量中

加环境变量:
#global_setting.py

import os,sys
base_dir = op.path.dirname(os.path.dirname(__file__))
sys.path.append(base_dir

服务器端启动后将所有配置放到Redis中,可以做个轮循,有修改就自动覆盖
用户端再来取的时候直接拿就可以

 

#Created on 2017年01月15日
第八课 客户端监控服务并提交数据到服务器 80minutes

由主进程负责线程的运行,随时监控服务间隔,到哪个监控了,启一个线程,
当线程完成后,关闭线程。

 

原文地址:https://www.cnblogs.com/syother/p/6738632.html