专栏首页授客的专栏性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程

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

1. 测试环境

2. 实现功能

3. 使用前提

4. 使用方法

influxDB主机配置

monitor_scope.conf监控范围配置

device_with_package.conf设备和应用包配置

sample_type.conf 配置

运行程序

grafana图表配置

数据源配置

Dashboard变量配置

Dashboard Pannel配置参考

效果展示

1.测试环境

python 3.4

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

2.实现功能

基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程,支持同时对台设备,多个应用进程(基于android应用包)进行监控,支持cpu,内存,电量,网络,进程cpu,进程内存占用,进程网络收发,gfx帧率,丢帧数据信息采集。

3.使用前提

1、有adb命令执行权限

2、设备已连接

cmd进入AndroidMonitor/adb目录

执行adb devices -l命令可看到对应设备,则表示设备已连接

4.使用方法

influxDB主机配置

AndroidMonitor\conf\influxDB.conf

[INFLUXDB]

influxdb_host = 10.203.25.106

influxdb_port = 8086

monitor_scope.conf监控范围配置

AndroidMonitor\conf\monitor_scope.conf

[DEVICE]

choice = 0

[PACKAGE]

choice = 1

配置说明:

choice = 1 监控所有设备(应用包) 0 监控device_and_package.conf配置的设备及对应应用包,目前 PACKAGE节点下的choice配置不起作用,即只监控配置的应用包

device_with_package.conf设备和应用包配置

AndroidMonitor\conf\device_with_package.conf

[DEVICE]

dev1 = 192.168.192.101:5555

#dev2 = 192.168.242.102:5555

[192.168.192.101:5555]

pkg1 = com.android.calculator2

#pkg2=package:com.android.music

#[192.168.242.102:5555]

#pkg1 = com.android.calculator2

格式说明:

[DEVICE]

自定义设备标识 = 设备序列号

[设备序列号]

自定义软件包标识 = 程序软件包包名

# 代表注释

如果不想监控指定设备(包括对应软件包),用 # 号注释掉设备的“自定义设备标识” 所在行即可,如上;

如果不想监控指定定软件包,用 # 号注释掉软件包“自定义软件包标识” 所在行即可,如上。

设备序列号获取:

软件包包名获取

adb -s 设备序列号 shell "pm list packages | grep 包名模糊查找字符串"

注意:[DEVICE]节点下的“自定义设备标识”不能重复,每个[设备序列号]下的“自定义软件包标识不能重复

sample_type.conf 配置

AndroidMonitor\conf\sample_type.conf

[SAMPLETYPE]

sample_type = cpu,proc_cpu,mem,proc_mem,battery,gfx,net,proc_net

filter =

说明:

sample_type = 需要采集的项目,目前支持采集项目如上,用逗号分隔,大小写不敏感

filter = 不需要采集的项目,用逗号分隔,大小写不敏感,没有则保持为空

说明:

1、proc_cpu 进程cpu使用率,多cpu处理器的环境下,正常情况下,计算结果为 进程单核cpu使用率 x 逻辑cup数,程序运行时,如果获取逻辑cpu数失败,则逻辑cpu数设置为1,即计算结果为单核cpu使用率

2、gfx的采集,需要开启“GPU呈现分析模式” 并设置模式“在adb shell dumpsys gfxinfo中”

fps相关指标说明,计算方法,参考链接:https://www.jianshu.com/p/6c0cfc25b038

运行程序

cd /d AndroidMonitor

python main.py 采集频率(单位 秒) 采集时长

eg:

每5秒采集一次,总共采集120秒

python main.py 4 120

停止监控,关闭cmd窗口即可

注意:

如果(根据配置自动调整后的)采集频率时间间隔大于单次程序采样实际耗时,则处理完成后立即进行下一次采样,忽略采样频率设置,实际采集时长变长,但是采集次数不变 int(采集时长/采样频率)

grafana图表配置

数据源配置

Dashboard变量配置

Dashboard Pannel配置参考

注:部分细节未体现

效果展示

源码下载:

https://gitee.com/ishouke/AndroidMonitor

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 网络基础 记一次HTTPS证书验证测试过程

    说明:采用https的服务器,必须安装数字证书,这个可以是自己制作,也可以想组织申请,区别在于自己颁发的证书,需要客户端验证通过,才可以继续访问(常见的就是浏...

    授客
  • Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`

    授客
  • 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架

    安装教程:http://blog.sina.com.cn/s/blog_13cc013b50102w9am.html

    授客
  • .NET Core采用的全新配置系统[1]: 读取配置数据

    提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我...

    蒋金楠
  • nginx配置二级域名

    zhaoolee
  • Kafka源码分析-配置文件

    作为Class KafkaConfig的伴生类,定义了创建KafkaConfig对象的工厂方法:

    扫帚的影子
  • LeetCode 929. 独特的电子邮件地址

    例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名。

    Michael阿明
  • Linux下加载光驱

    今天在更新VMWare Workstation的时候需要进行加载光驱的操作,也就顺便看了看

    idealclover
  • 年会攻略第1弹:人人点赞的年会,从前期预热开始!

    每周都有一个令人极度振奋嘴角疯狂上扬的日子。 毫无疑问,那就是—— ? 当我今儿个哼着小曲走在上班路上的时候,突然遇到了设计师宁腻同学。 她毫不留情的打碎了...

    腾讯乐享
  • SpringCloud组件:Eureka高可用集群部署

    我们在之前的章节SpringCloud组件:搭建Eureka服务注册中心学习到了单个服务注册中心的创建,不过单模式的部署方式在实战中确实不太提倡,因为有很多种原...

    恒宇少年

扫码关注云+社区

领取腾讯云代金券