返回顶部
首页 > 资讯 > 后端开发 > Python >性能测试 基于Python结合Influ
  • 879
分享到

性能测试 基于Python结合Influ

性能测试PythonInflu 2023-01-30 22:01:31 879人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

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

基于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,以解决包依赖问题

 

 

 

环境搭建

参考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容器性能数据

 


加群获取更多相关文档

 

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


 

--结束END--

本文标题: 性能测试 基于Python结合Influ

本文链接: https://lsjlt.com/news/179623.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 性能测试 基于Python结合Influ
    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122   实现功能 1 测试环境 1 环境搭建 3 使用前提 3 使用方法 3 ...
    99+
    2023-01-30
    性能测试 Python Influ
  • 基于Android的Web Kit性能对比测试
      一、背景   首先,因为目前的项目是基于JavaScript写的前端页面效果,其终要用在web app上呈现效果,其性能影响后期的产品效果,所以必须对JS写的脚本做一...
    99+
    2022-06-06
    Web 测试 Android
  • Python 基于Python结合pyk
    基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控   By: 授客 QQ:1033553122   1.测试环境 python 3.4   zookeeper-3.4.13.tar.gz 下载地...
    99+
    2023-01-30
    Python pyk
  • 基于Go Int转string几种方式性能测试
    Go语言内置int转string至少有3种方式: fmt.Sprintf("%d",n) strconv.Itoa(n) strconv.FormatInt(n,10) 下...
    99+
    2022-06-07
    性能 int转string GO int 性能测试 测试 string
  • GoFrame基于性能怎么测试grpool使用场景
    今天小编给大家分享一下GoFrame基于性能怎么测试grpool使用场景的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。先说结...
    99+
    2023-07-02
  • GoFrame基于性能测试得知grpool使用场景
    目录前言摘要先说结论测试性能代码运行结果总结前言摘要 之前写了一篇 grpool goroutine池详解 | 协程管理 收到了大家积极的反馈,今天这篇来做一下grpool的性能测试...
    99+
    2024-04-02
  • Golang 函数测试中的性能基准测试
    go 中的性能基准测试衡量函数效率,通过在以 benchmark 开头的函数中编写基准测试代码实现。testing.b 类型提供 resettimer()、stoptimer() 和 n...
    99+
    2024-04-12
    golang 性能基准测试
  • MongoDB性能测试与Python测试代码
    最近参与公司一个项目,计划对在线平台的大规模查询做到快速响应,预估数据总量大概在2-3亿条,数据库并发量大概每秒1500,一年后并发大概3000每秒,经过在Redis和mongodb之间艰难的选择之后,决定...
    99+
    2024-04-02
  • pyLot 基于python的压力测试工
    因为组内的产品是一个供上海甚至全球所有designer使用的网站,所以并发性很高,于是一直存在访问速度不佳的诟病。为了提高访问速度,就需要对该网站的性能进行测试。于是在网上查了并发性测试和自动化测试的工具。 本文讲的是测试页面访问...
    99+
    2023-01-31
    压力测试 pyLot python
  • 基于python的REST框架eve测试
    Eve是一款Python的REST API框架,用于构建和部署高可定制的、全功能的RESTful的Web服务。Eve是一个开源项目,遵循BSD开源协议,已在Python 2.6、2.7以及Python 3.3版本下进行了非常全面的测试。特色...
    99+
    2023-01-31
    框架 测试 python
  • PHP 性能优化:基准测试与性能对比
    php 应用程序性能优化至关重要,通过基准测试和性能对比可识别优化领域。基准测试有助于衡量应用程序性能,可用工具包括 apachebench 和 jmeter。性能对比将优化后的应用程序...
    99+
    2024-05-10
    php 性能优化 apache 并发请求
  • Apache下分析ab性能测试结果
    一直以来我都是用Loadrunner去做性能测试。Loadrunner实际上是一个很重的性能测试工具。他的功能很全面,是一把很好的牛刀。 如果我们只是需要对一个页面做简单的性能测试,使用Loadruner这把牛刀就不是一...
    99+
    2022-06-04
    Apache下分析ab性能测试结果 ab性能测试分析
  • Android下Protobuff框架性能测试结果
      android 下Protobuff常用的框架有三个: protobuff自身,  square出的wire , protostuff   由于protob...
    99+
    2022-06-06
    性能 测试结果 性能测试 测试 Android
  • 性能测试关注点整理总结
    性能测试关注点整理总结作为软件测试人员,我们经常会遇到压力测试、稳定性测试、功能测试、性能测试、兼容性测试等等,有时在工作中潜移默化的就已经在使用这些测试方法中包含的点,但是我们没有太在意去总结梳理,那么每个测试方法的关注点是什么?如:在性...
    99+
    2023-06-03
  • 基于Golang的区块链智能合约测试与验证技巧
    在 go 中测试和验证区块链智能合约涉及以下技巧:单元测试:隔离测试智能合约的各个部分。集成测试:模拟区块链环境,测试与依赖项的交互。安全审计:识别和修复安全漏洞。形式验证:保证合约的特...
    99+
    2024-05-10
    区块链 智能合约 git golang 标准库
  • 浅谈Java基准性能测试之JMH
    目录一、JMH vs JMeter二、JMH基本用法2.1、创建JMH项目2.2、编写基准测试代码2.3、JMH打包、运行2.4、JMH与Springboot三、JMH注解3.1、J...
    99+
    2024-04-02
  • Linux基础命令---ab测试apache性能
    abab指令是apache的性能测试工具,它可以测试当前apache服务器的运行性能,显示每秒中可以处理多少个http请求。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。 1、语法ab&nbs...
    99+
    2023-06-05
  • Python ORM 性能基准测试:比较不同 ORM 框架
    对象关系映射(ORM)框架在 Python 开发中扮演着至关重要的角色,它们通过在对象和关系数据库之间建立桥梁,简化了数据访问和管理。为了评估不同 ORM 框架的性能,本文将针对以下流行框架进行基准测试: SQLAlchemy Peew...
    99+
    2024-03-15
    ORM
  • allure结合python生成测试报告教程
    百度搜索实例 一、代码结构 本案例来自于霍格沃兹测试学院《高薪测试成长图谱》。data.yml为数据管理文件,test_baidudemo.py为测试用例文件,文件结构如下: 创建data/data.yml文件,代...
    99+
    2022-06-02
    allure python 生成测试报告
  • Android客户端性能软件测试小结
      Android手机客户端的性能测试开展近3个月了,期间包括性能监测工具的开发周期和工具的投入使用和优化;客户端性能测试从这里起步,从这里开始。   一般情况,对于新生的产品...
    99+
    2022-06-06
    性能 小结 软件测试 测试 软件 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作