基於Python結合InfluxDB及Grafana圖表實時監控Android系統和應用進程
By: 授客 QQ:1033553122
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