性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

时间:2021-07-18 23:34:29

基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

 

by:授客 QQ:1033553122

实现功能 1

测试环境 1

环境搭建 3

使用前提 3

使用方法 3

运行程序 5

效果展示 6

实现功能

无需在被监控主机上安装代理,一键对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://pypi.org/project/influxdb/#files

下载地址: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

import
winrandom

ImportError: No module named 'winrandom'

VS2010

因操作系统而异,可能需要安装VS2010,以解决包依赖问题

性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

环境搭建

参考CentOS下结合InfluxDB及Grafananux图表实时展示JMeter相关性能数据

grafna 数据源数据库配置:db_目标ip地址

使用方法

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=/sys/fs/cgroup/cpu

cpuacct_path=/sys/fs/cgroup/cpuacct

memory_path=/sys/fs/cgroup/memory

blkio_path=/sys/fs/cgroup/blkio/

#cpu_path=/cgroup/cpu/docker/docker/$CONTAINERID

#cpuacct_path=/cgroup/cpuacct/docker/docker/$CONTAINERID

#memory_path=/cgroup/memory/docker/docker/$CONTAINERID

#blkio_path=/cgroup/blkio/docker/docker/$CONTAINERID

#cpu_path=/cgroup/cpu/docker/d74ac2610ed325498767bc708197148d414bf6a7719f15c013dc2b6460690dd8

#cpuacct_path=/cgroup/cpuacct/docker/d74ac2610ed325498767bc708197148d414bf6a7719f15c013dc2b6460690dd8

#memory_path=/cgroup/memory/docker/d74ac2610ed325498767bc708197148d414bf6a7719f15c013dc2b6460690dd8

#blkio_path=/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


如果ip不需要通过堡垒机访问,那么这个ip必须在
monitor\conf\host_config.conf有对应的配置才会被监控,不想监控则注释;


如果ip需要通过堡垒机访问,那么这个ip必须在 monitor\conf\bastion_host_config.conf 下有对应的配置,且这里必须配置对应堡垒机IP,才会被监控


 

运行程序

数据收集:

python main.py

或者

python main.py 2 20

python main.py 2 10+45+10

python main.py 2
’10
+ 45 + 10’

python main.py 2 20
onecpu netdev enetdev disk paging

python main.py 采集频率(默认1次/s) 采集时间(秒,默认1s) 不监控维度

说明:为了方便,采集时间可以写成加减运算表达式,省去“心算”,方便算术能力不好的人,比如我~~


如果需要设置不监控维度(每个维度之间用逗号相隔,目前仅支持
以下维度),则一定要“显示”的指定采集频率和采集时间

onecpu  不采集单个cpu的性能数据信息

queue   不采集系统负载队列长度和负载均值性能数据信息

proc    不采集任务创建和系统上下文切换信息

mem
    不采集内存性能数据信息

swap
   不采集swap交换统计信息

swapspace 不采集swap空间使用率信息

deviotps 不采集磁盘设备I/O性能数据信息

netdev  不采集网络设备(一般指网卡)的性能数据信息

enetdev 不采集网络设备(一般指网卡)的出错数据信息

disk
   不采集单个磁盘的性能数据信息

paging  不采集分页信息


注意:

1、这里的维度过滤是针对所有待监控目标机的,针对单台机器的过滤项是在这个基础上做的进一步过滤


 


2、如果逻辑CPU个数,磁盘设备,网卡设备过多的情况下,如果不过滤对应指标,可能会因为采集的数据量过大,解析耗时加长,无法及时显示所要的数据(特别是CPU,单台机器有几十个逻辑CPU的情况下,延迟会很严重)。


 


实践测试记录:公司服务器,1秒钟采集一次,采集1个小时,统一加过滤项,如下方式运行


 


python main.py

1 3600  onecpu netdev enetdev
paging


 


44台机器同时采集(总的会开启88个线程),可以做到实时显示


3、docker容器监控,不支持维度过滤,即IO,CPU,内存要么监控,要么不监控


数据清理:

python
dropDB.py

根据提示,可删除单个数据库,或者一次性删除所有数据库的数据

效果展示

性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

加群获取更多相关文档

性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

源码获取地址:https://gitee.com/ishouke/PMonitor

性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据的更多相关文章

  1. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...

  2. 性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程

    基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程   By: 授客 QQ:1033553122     1. 测试环境 2. 实现功能 3. 使用前提 4. ...

  3. 性能测试 CentOS下结合InfluxDB及Grafana图表实时展示JMeter相关性能数据

    CentOS下结合InfluxDB及Grafana图表实时展示JMeter相关性能数据   by:授客 QQ:1033553122 实现功能 1 测试环境 1 环境搭建 2 1.安装influxdb ...

  4. 基于Centos7.4搭建prometheus+grafana+altertManger监控Spring Boot微服务(docker版)

    目的:给我们项目的微服务应用都加上监控告警.在这之前你需要将 Spring Boot Actuator引入 本章主要介绍 如何集成监控告警系统Prometheus 和图形化界面Grafana 如何自定 ...

  5. 性能测试监控:Jmeter +InfluxDB +collectd +Grafana

    虚拟机ip 192.168.180.128 Influxdb Influxdb是一个开源的分布式时序.时间和指标数据库,使用go语言编写,无需外部依赖. 它有三大特性: 时序性(Time Series ...

  6. [工具开发] 分享两个基于Heapster 和 Influxdb 的 Grafana 监控仪表盘模板

    Info Collector: Heapster - /heapster- --metric-resolution=30s- --sink=influxdb:http://influxdb.defau ...

  7. [置顶]
 cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台

    通过cadvisor+influxdb+grafana三者有机结合,打造跨主机容器监控. 优点 1.跨主机监控,可扩展 2.容器自发现 3.历史数据长期保存 4.自定义配置程度高 缺点 1.不能自动隐 ...

  8. docker容器监控:cadvisor+influxdb+grafana

    cadvisor+influxdb+grafana可以实现容器信息获取.存储.显示等容器监控功能,是目前流行的docker监控开源方案. 方案介绍 cadvisor Google开源的用于监控基础设施 ...

  9. pycharm使用docker容器的python解释器,

    上一篇是pycharm调用docker的镜像的python解释器. 此篇介绍pycharm 调用docker的容器的python解释器. 这两个思路还是不一样的,第一个是用pycham界面的选择pyt ...

随机推荐

  1. nyoj133_子序列_离散化_尺取法

    子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 给定一个序列,请你求出该序列的一个连续的子序列,使原串中出现的所有元素皆在该子序列中出现过至少1次. 如2 8 ...

  2. 剑指offer一:二维数组中的查找

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 这是一个顺序二维 ...

  3. https://github.com/akullpp/awesome-java

    java stack https://github.com/akullpp/awesome-java

  4. :nth-child()和:nth-of-type(n)区别

    ele:nth-child(n) 父元素下第n个元素且这个元素为ele ele:nth-of-type(n) 指父元素下第n个ele元素

  5. HTML5 总结-视频-1

    HTML5 视频 视频格式 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG ...

  6. ThinkPHP 模板的包含、渲染、继承

    一.模板包含        <include file="完整模板文件名" />        <include file="./Tpl/default ...

  7. 解决mysql启动时报The server quit without updating PID file 的错误&lpar;转&rpar;

    1.一般是权限问题,把用户和组改为mysql就可以了. chown -R mysql:mysql  /var/lib/mysql 2.在启动mysql时报下列错误 [root@mysqld2 ~]#  ...

  8. 《Python自然语言处理》第二章 学习笔记

    import nltk from nltk.book import * nltk.corpus.gutenberg.fileids() emma = nltk.corpus.gutenberg.wor ...

  9. 树链剖分——模板题hdu3966

    #include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 50005 ]; int he ...

  10. Oracle选择性系统授权

    Selective System Grants 问题: 我只想授予XX用户alter system set user_dump_dest 权限! I want to give users the ab ...