热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Grafana+InfluxdbAndroid性能监控部署

目录前言一、前提准备二、安装Grafana三、安装Influxdb四、Grafana添加Influxdb数据源五、Shell脚本写入数据到Influxdb前言你是否为了数据可视化,

目录
  • 前言
  • 一、前提准备
  • 二、安装 Grafana
  • 三、安装 Influxdb
  • 四、Grafana 添加 Influxdb 数据源
  • 五、Shell 脚本写入数据到 Influxdb

前言

你是否为了数据可视化,还在做execl图表呢?你是否为了数据可视化,还在忙着造***呢(Highcharts,Echarts)?你是否.....算了,算了,还是来看看 Grafana 这一款开源的可视化套件吧。这真是像极了广告????????????????????????
Grafana 是一款开源时间序列分析和可视化工具,可以与多种数据库结合然后可视化数据展示并及时通知。具体特点还是查看grafana官网

  通篇下来只有工具的安装以及 Android 某应用 cpu 信息采集。看着这标题“Android性能监控部署”...好吧,我承认有点标题党了。重点主要还是想实现一下从安卓设备采集的相关数据于 grafana 平台的展示

一、前提准备

本实例在 CentOS 7 虚拟机环境下实践,并通过 docker 进行 grafana+ influxdb 的安装

  1. 确保虚拟机能识别到 Android 设备(若不能识别,查看 VMware USB Arbitration Service 虚拟机USB相关服务是否开启)
  2. 已配置 AndroidSDK 环境
  3. 已安装且配置好 docker 相关环境

二、安装 Grafana

先附上官网 docker 安装 grafana 教程
1.可以先用 docker search grafana 查看 grafana 镜像
2.使用 docker pull grafana/grafana 下拉最新版本镜像
3.以下命令配置运行 grafana

docker run -d -p 3000:3000 --name=grafana -v ~/docker/grafana:/var/lib/grafana grafana/grafana

4.通过 ip:3000 端口访问,出现如下则配置正常
Grafana + Influxdb Android性能监控部署

问题: 楼主在配置完后,网页访问 ip:3000/login 界面不显示登录窗口,无法进入系统
分析: 通过 docker logs -f grafana 发现如下提示, 并查看相关提示文档,才知道是这是权限问题导致

GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migration-from-a-previous-version-of-the-docker-container-to-5-1-or-later
mkdir: cannot create directory '/var/lib/grafana/plugins': Permission denied

解决: 授予权限且重启容器后,正常显示

chmod 777 ~/docker/grafana  授予最高权限
docker restart   重启 grafana 容器

三、安装 Influxdb

参考相关文档:https://docs.docker.com/samples/library/influxdb/
1.通过 docker pull influxdb 下拉最新版
2.生成默认配置文件 docker run --rm influxdb influxd config > ~/docekr/influxdb/influxdb.conf
3.配置运行 influxdb

cd ~/docker/influxdb
# 可通过 influxdb.conf 来修改相关配置, 此处暂不做修改
docker run -d --name=influxdb-last -p 8086:8086  -v $PWD:/var/lib/influxdb -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro influxdb -config /etc/influxdb/influxdb.conf

4.通过 ip:8086 端口访问,出现如下则配置正常
Grafana + Influxdb Android性能监控部署

补充:可以通过如下命令来查看 influxdb 版本及数据库相关操作

docker exec -it influxdb-laste bash 进入docker bash交互模式
cd /user/bin/
./influx 进行 influxdb 数据库交互模式

直接进入 influxdb 数据库交互模式
Grafana + Influxdb Android性能监控部署

四、Grafana 添加 Influxdb 数据源

在添加数据源之前,先造一些数据. Influxdb官网文档: 使用 curl 命令写入数据(当然也可以在交互模式下创建)
1.数据的创建

# 创建 用户名 和 密码
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE USER 'root' WITH PASSWORD 'root' WITH ALL PRIVILEGES"
# 创建 mydb 数据库
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
# 查询数据库
curl -G -XPOST http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"
# 写入数据到 mydb 数据库
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 '
# 查询数据
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"

2.添加 influx 数据源
a.添加数据源,选择 influxDB
Grafana + Influxdb Android性能监控部署
b.填写相关信息
Grafana + Influxdb Android性能监控部署
c.保存测试成功后,在 Home Dashboard -> New Dashboard -> Add Query(也可以选择自定义)
Grafana + Influxdb Android性能监控部署
d.写入数据.设置查询的条件/时间段/以及图表.显示如下

for i in $(seq 1 3 200);
do curl -i -s -XPOST 'http://localhost:8086/write?db=mydb' --data-binary "cpu_load_short,host=server01,region=us-west value=0.$i" >/dev/null&& sleep 1;
done

Grafana + Influxdb Android性能监控部署


问题: 填写相关信息后,点击 "保存并测试" 按钮后,出现 Network Error: Bad Gateway(502)
Grafana + Influxdb Android性能监控部署
分析: 通过 docker logs -f grafana 发现如下提示.查找相关资料,防火墙导致无法连接到 influxdb

2019/07/01 17:46:56 http: proxy error: dial tcp 192.168.1.104:8086: connect: no route to host

解决: 将该端口添加到防火墙开放端口列表中

# 查看所有打开的端口
firewall-cmd --zOne=public --list-all
# 添加端口(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zOne=public --add-port=8086/tcp --permanent
# 更新防火墙规则
firewall-cmd --reload

五、Shell 脚本写入数据到 Influxdb

这里以抖音(com.ss.android.ugc.aweme)为例。在采集 cpu 数据之前,先补充一下 android 相关的知识点. 因 android 版本预置的命令太过精简, 以下通过 busybox 工具(下载路径)来实现相关操作.
1.首先使用 ps 命令获取相关进程

adb shell /data/local/tmp/busybox ps -ef | grep com.ss.android.ugc.aweme | head -n 1|cut -d " " -f 1

2.然后使用 top 工具监听以上进程的 cpu 信息

# 22502 进程信息
adb shell /data/local/tmp/busybox top -d 1 -b | grep "^22502"
# cpu 信息
adb shell /data/local/tmp/busybox top -d 1 -b | awk '/^22502/{print $8}'

3.curl 命令 写入数据到 influxdb
可使用官方模板: https://grafana.com/dashboards

# 创建数据库
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE Android"
# 写入数据模板
curl -i -XPOST 'http://localhost:8086/write?db=Android' --data-binary  "cpu,user=zzw,app=抖音 value=53"

4.shell 脚本串联

#!/bin/bash

pname=抖音
pkg=com.ss.android.ugc.aweme
num=5
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE Android"
pid=$(adb shell /data/local/tmp/busybox ps -ef | grep  $pkg | head -n 1|cut -d " " -f 1)
for i in $(seq $num);do
    cpu=$(adb shell /data/local/tmp/busybox top -d 1 -n 1 -b | grep $pid|awk '{print $7}');
    echo $i $cpu;
  curl -s -i -XPOST 'http://localhost:8086/write?db=Android' --data-binary  "cpu,user=zzw,app=$pname value=$cpu >/dev/null;
done;

最后效果显示如下:
Grafana + Influxdb Android性能监控部署


注: 需对应android cpu指令集下载, 以下为 busybox 在 android 上的使用方法

# 查看 CPU 信息,busybox 官网下载对应的版本
adb shell cat /proc/cpuinfo
# Busybox 配置
adb push busybox /data/local/tmp
adb shell chmod 777 /data/local/tmp/busybox
# adb shell export bbox=/data/local/tmp/busybox

推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • STM32与FPGA的对比及学习建议
    本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 本文介绍了Foundation框架中一些常用的结构体和类,包括表示范围作用的NSRange结构体的创建方式,处理几何图形的数据类型NSPoint和NSSize,以及由点和大小复合而成的矩形数据类型NSRect。同时还介绍了创建这些数据类型的方法,以及字符串类NSString的使用方法。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
  • scrcpy通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备。它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需要任何ro ... [详细]
  • 一、新建登录名1.在登录名右侧的文本框中输入新建的管理员账号名称;2.一对单选按钮组中,选择SqlServer身份验证,并输入登录密码;3.勾选强制实施密码策略复选框;(密码策略一 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 使用Docker安装和运行Nexus
    本文介绍了使用Docker安装和运行Nexus的方法,包括docker-compose.yml配置和启动时可能出现的权限问题解决方法。同时提供了登录控制台验证安装的地址和登录信息。 ... [详细]
  • 容器管理与容器监控influxDB
    容器管理与容器监控-influxDB什么是influxDBinfluxDB安装(1)下载镜像(2)创建容器(3 ... [详细]
author-avatar
甜心左田轩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有