目录
本实例在 CentOS 7 虚拟机环境下实践,并通过 docker 进行 grafana+ influxdb 的安装
先附上官网 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-latermkdir: cannot create directory '/var/lib/grafana/plugins': Permission denied
解决: 授予权限且重启容器后,正常显示
chmod 777 ~/docker/grafana 授予最高权限docker restart <container id> 重启 grafana 容器
参考相关文档: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 数据库交互模式
在添加数据源之前,先造一些数据. 官网文档: 使用 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
这里以抖音(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/bashpname=抖音pkg=com.ss.android.ugc.awemenum=5curl -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/tmpadb shell chmod 777 /data/local/tmp/busybox# adb shell export bbox=/data/local/tmp/busybox