基於Python結合InfluxDB及Grafana圖表實時監控Android系統和應用進程python
By: 授客 QQ:1033553122android
1. 測試環境 git
2. 實現功能 shell
3. 使用前提 網絡
4. 使用方法 測試
influxDB主機配置 spa
monitor_scope.conf監控範圍配置 3d
device_with_package.conf設備和應用包配置 blog
sample_type.conf 配置 flux
運行程序
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.使用前提
一、有adb命令執行權限
二、設備已鏈接
cmd進入AndroidMonitor/adb目錄
執行adb devices -l命令可看到對應設備,則表示設備已鏈接
4.使用方法
AndroidMonitor\conf\influxDB.conf
[INFLUXDB]
influxdb_host = 10.203.25.106
influxdb_port = 8086
AndroidMonitor\conf\monitor_scope.conf
[DEVICE]
choice = 0
[PACKAGE]
choice = 1
配置說明:
choice = 1 監控全部設備(應用包) 0 監控device_and_package.conf配置的設備及對應應用包,目前 PACKAGE節點下的choice配置不起做用,即只監控配置的應用包
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]節點下的「自定義設備標識」不能重複,每一個[設備序列號]下的「自定義軟件包標識不能重複
AndroidMonitor\conf\sample_type.conf
[SAMPLETYPE]
sample_type = cpu,proc_cpu,mem,proc_mem,battery,gfx,net,proc_net
filter =
說明:
sample_type = 須要採集的項目,目前支持採集項目如上,用逗號分隔,大小寫不敏感
filter = 不須要採集的項目,用逗號分隔,大小寫不敏感,沒有則保持爲空
說明:
一、proc_cpu 進程cpu使用率,多cpu處理器的環境下,正常狀況下,計算結果爲 進程單核cpu使用率 x 邏輯cup數,程序運行時,若是獲取邏輯cpu數失敗,則邏輯cpu數設置爲1,即計算結果爲單核cpu使用率
二、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(採集時長/採樣頻率)
注:部分細節未體現
源碼下載: