基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据
by:授客 QQ:1033553122
实现功能
测试环境
环境搭建
使用前提
使用方法
运行程序
效果展示
实现功能
无需在被监控主机上安装代理,一键对Linux远程服务器不同主机执行性能监控、性能数据采集命令,并实时展示
支持跨堡垒机收集实时性能数据(注:定制化开发,非通用)
支持docker容器(因为程序实现是从docker容器内部获取性能数据,所以目前仅支持 CPU,内存,I/O)
使用前提
可以用Xshell等工具远程连接Linux主机
Linux主机支持sar命令
dokcer容器内部挂载了docker容器自身的cgroup系统
注:目前不支持嵌套cgroup下子cgroup的性能数据监控
测试环境
Win7 64位
Python 3.4.0
CentOS 6 64位(内核版本2.6.32-642.el6.x86_64)
influxdb-1.5.2.x86_64.rpm
网盘下载地址:
https://pan.baidu.com/s/1jAbY4xz5gvzoXxLHesQ-PA
grafana-5.1.2-1.x86_64.rpm
下载地址:
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.3-1.x86_64.rpm
下载地址:https://pan.baidu.com/s/1wtnPH-iYxaXc6FnL1i0ZVg
influxdb-5.0.0-py2.py3-none-any.whl
下载地址:
下载地址:https://pan.baidu.com/s/1DQ0HGYNg2a2-VnRSBdPHmg
paramiko 1.15.2
下载地址:
https://pypi.python.org/pypi/paramiko/1.15.2
https://pan.baidu.com/s/1i4SJ1CL
cryptography-1.0-cp34-none-win_amd64.whl
(如果paramiko可以正常安装完,则不需要安装该类库)
下载地址:
https://pypi.python.org/pypi/cryptography/1.0
https://pan.baidu.com/s/1jIRBJvg
安装好后,找到nt.py(本例中路径为:
Lib\site-packages\pycrypto-2.6.1-py3.4-win-amd64.egg\Crypto\Random\OSRNG\nt.py),修改
import winrandom
为
from Crypto.Random.OSRNG import winrandom
如下
#import winrandom
from Crypto.Random.OSRNG import winrandom
以解决ImportError: No module named 'winrandom'错误
说明:具体文件路径可能还得根据实际报错情况来确定,如下
............(略)
"D:\Program Files\python33\lib\site-packages\Crypto\Random\OSRNG\nt.py", line 28, in <module>
import winrandom
ImportError: No module named 'winrandom'
VS2010
因操作系统而异,可能需要安装VS2010,以解决包依赖问题
环境搭建
参考CentOS下结合InfluxDB及Grafananux图表实时展示JMeter相关性能数据
使用方法
influxDB主机配置
monitor\conf\influxDB.conf
[INFLUXDB]
influxdb_host = 10.203.25.106
influxdb_port = 8086
主机登录信息配置
(用于远程ssh登录)
monitor\conf\host_config.conf
[10.203.36.1]
host = 10.203.36.1
username = xxxx
password = xxxx
port = 22
remark = 鉴权微服务
[10.203.36.33]
host = 10.203.36.33
username = xxxx
password = xxxx
port = 22
remark = 发货微服务
[10.202.27.5]
host = 10.202.27.5
username = xxxx
password = xxxx
port = 22
remark = 堡垒机
[10.202.27.6]
host = 10.202.27.6
username = xxxx
password = xxxx
port = 22
remark = 堡垒机
说明:
[需要监控的Linux服务器IP]
host = 需要监控的Linux服务器IP
username = 远程登录用户名
password = 用户密码
port = 22
remark = 补充说明
堡垒机-目标机配置
bastion_host_config.conf
[10.202.27.5]
ip1 = 10.203.33.18
ip2 = 10.203.33.19
ip3 = 10.203.33.20
[10.202.27.6]
ip4 = 10.203.33.21
ip5 = 10.203.32.49
ip6 = 10.203.33.4
说明:
[堡垒机ip]
自定义名称 = 需要通过堡垒机访问的目标ip
注意:不同堡垒机节点下的目标ip不能重复
堡垒机连接目标机,账号密码,登录用户选取等信息配置
monitor\conf\account.conf
[ACCOUNT]
user_id = 01367522
pwd = xxx
login_user_choice = 1
dokcer容器cpu, cpuacct,memory,blkio系统路径配置
[CGROUPPATH]
cpu_path=http://www.likecs.com/sys/fs/cgroup/cpu
cpuacct_path=http://www.likecs.com/sys/fs/cgroup/cpuacct
memory_path=http://www.likecs.com/sys/fs/cgroup/memory
blkio_path=http://www.likecs.com/sys/fs/cgroup/blkio/
#cpu_path=http://www.likecs.com/cgroup/cpu/docker/docker/$CONTAINERID
#cpuacct_path=http://www.likecs.com/cgroup/cpuacct/docker/docker/$CONTAINERID
#memory_path=http://www.likecs.com/cgroup/memory/docker/docker/$CONTAINERID
#blkio_path=http://www.likecs.com/cgroup/blkio/docker/docker/$CONTAINERID
#cpu_path=http://www.likecs.com/cgroup/cpu/docker/d74ac2610ed325498767bc708197148d414bf6a7719f15c013dc2b6460690dd8
#cpuacct_path=http://www.likecs.com/cgroup/cpuacct/docker/d74ac2610ed325498767bc708197148d414bf6a7719f15c013dc2b6460690dd8
#memory_path=http://www.likecs.com/cgroup/memory/docker/d74ac2610ed325498767bc708197148d414bf6a7719f15c013dc2b6460690dd8
#blkio_path=http://www.likecs.com/cgroup/blkio/docker/d74ac2610ed325498767bc708197148d414bf6a7719f15c013dc2b6460690dd8
说明:
系统路径支持简单的参数化,目前仅支持容器ID(大写的$CONTAINERID),如上
一次仅支持一组配置
配置单台目标机器上不要采集的性能指标维度(可选)
monitor\conf\host_filter.conf
[HOSTFILTER]
10.203.36.1 = onecpu, disk
#10.203.36.33 =
10.203.36.4 =
[HOSTFILTER]
待监控目标ip = 指标维度1, 指标维度2, 维度之间用逗号分隔
维度说明:
onecpu 不采集单个cpu的性能数据信息
queue 不采集系统负载队列长度和负载均值性能数据信息
proc 不采集任务创建和系统上下文切换信息
mem 不采集内存性能数据信息
swap 不采集swap交换统计信息
swapspace 不采集swap空间使用率信息
deviotps 不采集磁盘设备I/O性能数据信息
netdev 不采集网络设备(一般指网卡)的性能数据信息
enetdev 不采集网络设备(一般指网卡)的出错数据信息
disk 不采集单个磁盘的性能数据信息
paging 不采集分页信息
如果不需要过滤,可不配置,或者如上 设置ip等于空,或者用 #注释
待监控主机配置
monitor\conf\target_host_for_monitor.conf
# #代表注释
10.203.36.1
10.203.36.33
# 堡垒机
10.202.27.5
# 需要通过堡垒机访问的目标ip
ip1 = 10.203.33.18
注意:
1、每一行代表需要监控的ip