1、准备工作
测试场景:阿里轻量应用服务器(Ubuntu 18.04)部署go应用,利用Grapha和Prometheus进行监测。在本地Windows环境下使用SSH访问Linux服务器的浏览器页面来查看监测结果。 需要提前安装的有:
- Linux环境GO安装
- Linux环境下docker和docker-compose的安装
- Linux环境下Grafana的安装
检测使用的go应用采用的是下面某位大佬写的example github.com/scotwells/p…,不过该项目中有些部分需要进行修改:
- prometheus.Handler()在最新的prometheus版本中不再使用了,可以使用promhttp.Handler();
- 在建议将prometheus.yaml中的'docker.for.mac.localhost:9009'改为'服务器公网ip:9009',以防出现prometheus无法获取指标数据的情况。
项目配置:
- docker-compose.yaml
grafana:
image: grafana/grafana:latest
ports:
- 3000:3000
volumes:
- ./.docker/grafana:/var/lib/grafana
prometheus:
image: prom/prometheus:latest
ports:
- 9090:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
该yaml文件中规定了grafana和prometheus,其中的端口需要注意一下,在后面验证应用是否被正常监测的时候需要使用。
2、监测实验流程
-
运行main.go
$ go run job-processor/main.go -
启动grafana和prometheus
$ cd job-processor $ docker-compose up
在多次测试的时候,可能出现3030端口已被使用的情况,可以将grafana的服务停止之后再运行即可(service grafana-server stop)
- 在windows端使用Grafana查看监测结果
首先需要通过ssh来访问Linux端的浏览器页面:
ssh username@remote_address -L 127.0.0.1:8888:服务器ip:3030
8888是本地端口,3030是服务器上的Grafana的端口,username是服务器用户名,remote_address是服务器IP,进行上一步之后就可以在Windows的浏览器中通过http://127.0.0.1:8888 来访问Grafana查看监测数据情况。同理也可以查看prometheus的web界面
3、可能出现的问题
(1)not writeable,Permission denied
在docker-compose up的时候可能会出现以下情况
解决办法是先找到user的id:
id -u
在docker-compose.yaml做如下修改:
grafana:
image: grafana/grafana:latest
ports:
- 3000:3000
user: "0"
volumes:
- ./.docker/grafana:/var/lib/grafana
(2)grafana没有数据显示
在进行实验的时候,访问http://127.0.0.1:8888 很可能就出现没有数据的情况,可以进行如下几个排查的思路:
- 查看Grafana时间是否一致
- 查看数据源是否有数据
在调整了时间之后还是无法获取数据的时候,需要看看数据源也就是prometheus是否监测到了数据,主要方法可以首先查看9090端口的matrics有无log输出来判断是否有数据监测到了。
如果正常则会有以下输出结果:
- 查看prometheus的web页面查看监听是否成功
如果state一般是up的话,基本上Grafana就可以显示数据了。如果state是Done的话,可以通过Error信息排查,在我的实验过程中出现了connect: connection refused的情况,通过将prometheus.yaml中改为公网IP之后得到了解决。可以参考博客blog.csdn.net/feikillyou/…