云飞运行状态监控工具

root 819f4d38b8 redis 3 年 前
config 15520846b8 修改.gitignore文件 4 年 前
monitor_test 6b9bb4dfd0 新增: 云飞监控 4 年 前
src 819f4d38b8 redis 3 年 前
.gitignore f37d86458a 修改.gitignore文件 4 年 前
README.md f394c0b116 修改使用说明 4 年 前
requirements.txt 6b9bb4dfd0 新增: 云飞监控 4 年 前
start.py 57eaf336cc 修复:云飞监控读取配置文件时候当exclude参数不存在时候异常报错的问题 4 年 前

README.md

yufei_supervisord

云飞监控: 

	主程序:负责每分钟自动读取配置文件,将监控目录下符合要求的文件自动加入supervisor
	异常警告事件监控脚本:supervisor程序异常中止时候自动发送异常警告消息到redis中
	内置监控程序:
		redis监控:监控redis运行
		钉钉推送:从redis中获取信息,并自动推送到钉钉
		系统监控:监控服务器运行状态,内存,磁盘,每间隔1秒,自动存储到redis中

	配置文件:
		配置文件采用 ymal格式的文本文件
		development_env    测试环境配置文件目录
		production_env     正式环境配置文件目录

		两个目录中的文件名称和格式都一致,如下

            monitor.yml   负责配置指定监控目录配置
                格式如下:
                    # 所监控的目录名称,目录下所有符合 filter 和 exclude规则的文件都自动加入supervisord管理器中
                    '/root/project/yufei_supervisord/monitor_test':
                      # 需要后台执行的python脚本的解释器绝对路径
                      name: '本地测试'    # 此参数必须存在
                      executable: '/root/project/yufei_supervisord/venv/bin/python'    # 此参数必须存在
                      filter:  # 只匹配.py *.monitor.py后缀的文件, 此参数必须存在
                        - '*.py'
                        - '*.monitor.py'
                      exclude:    # 排除以__, ex_开头的文件, 此参数为可选,可以不需要
                        - '__*'
                        - 'ex_*'
            redis.yml
                负责配置redis相关配置
                格式如下:
                    connection:
                      host: '127.0.0.1'
                      port: 6379
                      db: 6
                      password: null      # 没有密码填写 null

            dingding.yml
                负责配置钉钉机器配置
                格式如下:
                    webhook: 'https://oapi.dingtalk.com/robot/send?access_token=11532b3909549951f493087e873ae603fda52011940da33c2a33992a4674bb20'
                    secret: 'SECf2d2b723c60120b1dcd66da866423e33977d1bda555124b00505067e8282b1e2'


使用方法:
1. 首先需要安装redis数据库,

配置文件存在/etc/redis.conf
redis-server 可执行程序需要放在 /usr/bin  目录下面, 例如:
	ln -s /usr/local/redis/bin/redis-server /usr/bin

如果已有redis,则需要停止已有redis,云飞监控将托管redis,负责监控redis的运行状态与异常自动重启

    redis负责存储需要推送到钉钉的消息
    redis库采用 默认采用6号数据库

    key名              数据类型   描述信息                                                                             需要跟随主题同时发送的系统监控信息。
    yf_dingding          list    负责存储需要发送到钉钉的消息信息 储存内容为json.dump后的对象 {'content': '消息主体', 'monitor_list': ['disk', 'memory']}
    yf_sys_monitor       hash    负责储存系统监控信息,其中 disk key名 表示 磁盘监控信息, memory key名 表示 内存监控信息

2. 在python虚拟环境中安装依赖库
3. 配置对应的配置文件
    	development_env    测试环境配置文件目录
        production_env     正式环境配置文件目录
4. 查看使用帮助 python start.py --help
4. 使用刚才配置好的虚拟环境中的python运行start.py 启动监控
5. 需要推送到钉钉群的其他程序
	其他程序如果需要推送钉钉群,只需要将需要推送的消息按照指定格式存入redis,即可实时推送。
	content : 消息主题
        monitor_list: 表示发送钉钉消息时候,自动获取对应的系统监控信息, 不需要的话可以填写 空列表 []
				  disk 表示磁盘信息
				  memory 表示内存信息
	例如:
		content = {'content': '消息主体', 'monitor_list': ['disk', 'memory']}
		data = json.dumps(content)
		con = redis.Redis(host=host, port=port, db=db, password=password, decode_responses=True)
		con.rpush('yf_dingding', data)

	decode_responses=True 一定要开!!!!!