(五)go-kit 利用prometheus和grafana实现 API监控

前言

我们的服务上线了,除了从日志可以查看一些运行情况外,其实现在服务接口对于我们来说是一个黑盒,我们不知道每个服务接口的延时,被调用次数等等指标的运行情况,我们更需要历史的指标数据知道我们的系统瓶颈在哪,然后对应去做相关的优化,如果想实时知道这些指标,就需要我们的api监控。
本文代码地址地址: github地址

metric插件

这里在/cell/register/middleware/metrics.go里面实现一个中间件用来在main函数里面后面装饰IUserService接口,同时这里实现IUserService的几个方法

开放Prometheus指标采集接口

在transport.go中新增用于Prometheus轮循拉取监控指标的代码,开放API接口/metrics。

r.Path("/metrics").Handler(promhttp.Handler())

修改main.go

创建指标采集对象:请求次数采集和请求延时采集

fieldKeys := []string{"method"}
requestCount := kitprometheus.NewCounterFrom(stdprometheus.CounterOpts{
	Namespace: "raysonxin",
	Subsystem: "arithmetic_service",
	Name:      "request_count",
	Help:      "Number of requests received.",
}, fieldKeys)

requestLatency := kitprometheus.NewSummaryFrom(stdprometheus.SummaryOpts{
	Namespace: "raysonxin",
	Subsystem: "arithemetic_service",
	Name:      "request_latency",
	Help:      "Total duration of requests in microseconds.",
}, fieldKeys)

使用Metrics方法对Service对象进行封装:

svc = Metrics(requestCount, requestLatency)(svc)

在上一篇文章的基础上启动register服务即可

运行监控

1.首先在/cells目录下,运行docker-compose -f docker/docker-compose-prometheus.yml up -d用docker启动prometheus和grafana的相关环境,如果想停止使用命令sudo docker-compose -f docker/docker-compose.yml stop
2. 登录Grafana:通过浏览器访问localhost:3000,使用用户名admin和yml配置的密码password登录;
3. 创建数据源:点击create your first datasource,选择Prometheus,配置HTTP.URL(建议设置为http://[IP]:[port],不要使用localhost),最后保存成功。
4. 创建Dashboard:点击create your first dashboard,点击Title下拉菜单中的Edit,即可进入如下界面,可以选择Metric选项下拉发现会有很多可以供我们选择的指标监控,选择一个就可以展现在dashboard上面
5. 然后不停访问

localhost:8000/user/1

刷新下grafana就可以看到接口调用的相关选择指标监控了,这里其实我们还可以根据自己的业务场景去自定义监控指标。

你可能感兴趣的:(go-kit微服务成渣之路)