这是我在去年学习Paramiko和Redis时开发的系统监控与运维程序:
- 基于Redis pub/sub通信:
1、服务端中定义监控配置模板(包括系统监控指标、监控主机组等)并写入Redis;
2、客户端从Redis中获取模板并根据模板调用插件获取系统监控数据,计算并整理后发布到Redis;
3、服务端订阅(客户端的发布频道)获取监控数据;
4、目前支持Linux下CPU、内存、网卡的监控(系统异常自动处理有待实现); - 基于SSH2协议连接的远程控制(paramiko):
1、支持多线程文件分发和命令批量执行;
2、记录历史操作日志。
环境 | 版本 |
---|---|
操作系统 | Ubuntu 14.04 |
数据库 | Redis 3.0.6 |
开发语言 | Python 2.7.4 |
IDE | PyCharm 2017.1 x64 |
1、安装Redis及python redis模块,以Ubuntu为例:
sudo apt-get install redis-server
sudo pip install redis
2、修改配置文件(一般为/etc/redis/redis.conf):
bind 0.0.0.0
3、启动Redis:
service redis start
4、安装paramiko模块:
sudo pip install paramiko
5、系统监控:
服务端:
python Server/bin/manage.py monitor
客户端:
python Client/bin/manage.py
6、系统运维:
服务端:
python Server/bin/manage.py operate
1、启用系统监控时必须先启动服务端(把监控模板写入Redis)才能启动客户端,否则客户端获取不到监控指标会报错。
2、实现客户端CPU的监控使用sar命令,需要先安装sysstat包:
sudo apt-get install sysstat
3、服务端指定监控指标可修改Server/conf/service.py文件;指定监控组和集群可修改Server/conf/settings.py。
4、客户端启动程序务必在Client/conf/settings.py指定本机ip。
5、由于默认以root用户登录,远程执行命令时默认为客户端root用户的根目录。
6、重新启动程序时出现获取监控数据异常的情况,可以尝试清空redis数据再重新启动服务端程序:
redis-cli
127.0.0.1:6379> flushall