参考: hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示
hyperf文档
本文章记录本人的第一次部署所踩的坑,未深入了解prometheus 和grafana 如有不当的地方请指正,谢谢!
一. 使用docker-compose部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
version: '2'
networks:
monitor:
driver: bridge
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
volumes:
# 将你的prometheus.yml文件放在当前文件同级下,或自定义
- ./prometheus.yml:/etc/prometheus/prometheus.yml
#- /home/prometheus/node_down.yml:/etc/prometheus/node_down.yml
ports:
- "9090:9090"
networks:
monitor:
ipv4_address: 172.18.0.3
grafana:
image: grafana/grafana
container_name: grafana
hostname: grafana
restart: always
volumes:
# 创建 etc目录,data目录存储grafana的数据
- ./etc:/etc/grafana
- ./data:/var/lib/grafana
ports:
- "3000:3000"
networks:
monitor:
ipv4_address: 172.18.0.4
node-exporter:
image: prom/node-exporter
container_name: node-exporter
hostname: node-exporter
restart: always
ports:
- "9100:9100"
networks:
monitor:
ipv4_address: 172.18.0.2
|
注意:为了避免每次docker-compose 启动之后 ip会发生变化,我这里配置了固定IP,请根据个人实际情况配置,或参阅docker相关文档
使用命令docker-compose up
启动容器
二. 项目配置
因为对 prometheus
的不了解,我直接使用hyperf
默认配置
-
引入组件 composer require hyperf/metric
-
发布默认配置文件 php bin/hyperf.php vendor:publish hyperf/metric
-
在config/autoload/dependencies.php
中添加对应的Redis存储
1
2
3
|
return [
\Prometheus\Storage\Adapter::class => \Hyperf\Metric\Adapter\Prometheus\RedisStorageFactory::class,
];
|
在上面的第一篇文章中,老哥说使用swoole_table
更高效,我还不知道如何使用,有兴趣的老哥可以自己研究一下。
- 增加中间件
在
config/autoload/middlewares.php
文件中增加对应的中间件
1
2
3
4
5
|
return [
'http' => [
\Hyperf\Metric\Middleware\MetricMiddleware::class,
],
];
|
1
2
3
4
5
|
Router::get('/metrics', function(){
$registry = Hyperf\Utils\ApplicationContext::getContainer()->get(Prometheus\CollectorRegistry::class);
$renderer = new Prometheus\RenderTextFormat();
return $renderer->render($registry->getMetricFamilySamples());
});
|
这样对项目的配置就完成了
三. prometheus的配置
在 prometheus.yml
文件中增加对应的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
# 注意这里的IP需要填写 node-exporter 容器的ip
static_configs:
- targets: ['172.18.0.2:9100']
- job_name: 'skeleton'
# 这里填写的是宿主机的ip
static_configs:
- targets: ['10.0.75.1:9502']
|
配置完成之后,再次 dokcer-compose up
访问 http://localhost:9090 查看 prometheus
如图所示,node
和 skeleton
都已启动
四. Grafana 配置
上面都配置完了,开始配置 Grafana
打开 http://localhost:3000 默认密码是: admin/admin
- 新建
datasource
左侧边栏 add datasources
选择Prometheus
填写容器的IP:端口
导入之后需要将默认的 app_name
改成你自己的
如:admin-api
就需要填写admin_api
改成下划线形式
点进去查看
到此结束,小白第一次配置监控,还有很多东西没弄清楚