Grafana + Influxdb Android性能监控部署

目录

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

简介

一、前提准备

本实例在 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 端口访问,出现如下则配置正常

问题: 楼主在配置完后,网页访问 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 <container id>  重启 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 端口访问,出现如下则配置正常

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

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

直接进入 influxdb 数据库交互模式

四、Grafana 添加 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

b.填写相关信息

c.保存测试成功后,在 Home Dashboard -> New Dashboard -> Add Query(也可以选择自定义)

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



问题: 填写相关信息后,点击 "保存并测试" 按钮后,出现 Network Error: Bad Gateway(502)

分析: 通过 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 $8}');
    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;

最后效果显示如下:



注: 需对应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

原文地址:https://www.cnblogs.com/zeo-to-one/p/11153759.html

时间: 2024-10-18 11:07:06

Grafana + Influxdb Android性能监控部署的相关文章

Android性能监控

Android性能监控 一.搭建Android性能测试环境,参见<Android性能测试之Monkey使用>中内容. 二.启动Android虚拟机,可以通过eclipse启动,也可以通过命令启动: 1.通过android list avd命令查看已创建的虚拟机: 2.通过命令emulator @name启动虚拟机: 三.内存采集 1.通过dumpsys来取值,可以看到所有进程的内存信息,命令如下: adb shell dumpsys meminfo 2.查看详细的内存信息,命令如下: adb

使用ddmlib实现android 性能监控

使用ddmlib实现android 性能监控 原理: cpu adb shell dumpsys cpuinfo packageName memory adb shell dumpsys meminfo packageName 流量 cat /proc/uid_stat/uidxxx/tcp_rcv cat /proc/uid_stat/uidxxx/tcp_snd 其中 uid的获得通过 adb shell dumpsys package packageName 取得 userId=(\d+)

建立Heapster Influxdb Grafana集群性能监控平台

依赖于kubenets dns服务地址:https://note.youdao.com/web/#/file/WEB42cf75c02ae113136ff664f3f137cb67/note/WEB0eec19f3667471969b3354b7128fda9c/ 图形化展示度量指标的实现需要集成k8s的另外一个Addons组件: Heapster .Heapster原生支持K8s(v1.0.6及以后版本)和 CoreOS ,并且支持多种存储后端,比如: InfluxDB . ElasticSe

asp.net core api网关 实时性能监控

asp.net core api网关 实时性能监控 使用InfluxDB.Grafana Dockerfile 运行 InfluxDB.Grafana influxdb: image: influxdb ports: - "8086:8086" - "8083:8083" environment: - INFLUXDB_DB=TogetherAppMetricsDB - INFLUXDB_ADMIN_ENABLED=true - INFLUXDB_ADMIN_USE

监控宝服务性能监控配置(完整版)

继上篇监控宝服务器监控后,此篇博文详细记录下项目中对常用服务监控的配置不熟 服务器监控可参考:http://blog.51cto.com/kaliarch/2044977 监控宝服务性能监控配置(完整版) 一.目的 2 二.理论基础 2 2.1 相关理论 2 2.2 监控项目 2 三.服务性能监控部署 2 3.1 Nginx 服务性能监控 2 3.2 Apache 服务性能监控 6 3.3 Mysql 服务性能监控 9 3.4 IIS 服务性能监控 14 3.5 Tomcat 服务性能监控 16

collectd+influxDB+grafana搭建性能监控平台

collectd+influxDB+grafana搭建性能监控平台 前言 InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常适合存储指标.事件.分析等数据:键值时间数据库性能还不错 collectd 是C 语言写的一个系统性能采集工具 Grafana 是纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表.显示图表等.V3.0以上版本支持zabbix 数据库,可以非常方便直接由zabbix_agent 采集数据. 1 环境信息 测试环境174,175

使用 Grafana、collectd 和 InfluxDB 打造现代监控系统

使用 Grafana.collectd 和 InfluxDB 打造现代监控系统 先给小伙伴们秀一下由grafana画出的监控效果图 想打造 New Relic 那样漂亮的实时监控系统我们只需要 InfluxDB/collectd/Grafana 这三个工具,这三个工具的关系是这样的: 采集数据(collectd)-> 存储数据(influxdb) -> 显示数据(grafana) InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常适合存储指标.事件.分析等数据,看版本号(v0

【监控】使用 Grafana、collectd 和 InfluxDB 打造现代监控系统

参考资料:Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器:http://www.oschina.net/p/grafana 使用 Grafana.collectd 和 InfluxDB 打造现代监控系统:https://linux.cn/article-5252-1.html collectd监控性能联合influxdb grafana打造metric收集系统:http://www.tuicool.com/articles/ErmIVnb 使用 Grafana+c

基于InfluxDB+Grafana打造大数据监控利器--转

这是一个大数据爆发的时代.面对信息的激流.多元化数据的涌现,我们在获取.存储.传输.理解.分析.应用.维护大数据时,无疑需要一种便捷的信息交流通道,以便快速.有效.准确地理解和驾驭这个过程.本文将通过时序数据库(InfluxDB)+Grafana的实践,来介绍如何将数据便捷地展现出来. 一.InfluxDB 开源的分布式时序.时间和指标数据库,使用Go语言编写,无需外部依赖.其中,时间序列数据库是数据格式里包含Timestamp字段的数据,比如某一时间用户上网流量.通话详单等.但是,有什么数据不