[Hyperf] 在 Hyperf 框架中使用 prometheus + grafana 部署基本的监控
参考: hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示
hyperf文档
本文章记录本人的第一次部署所踩的坑,未深入了解prometheus 和grafana 如有不当的地方请指正,谢谢!
一. 使用docker-compose部署
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存储return [ \Prometheus\Storage\Adapter::class => \Hyperf\Metric\Adapter\Prometheus\RedisStorageFactory::class, ];
在上面的第一篇文章中,老哥说使用
swoole_table
更高效,我还不知道如何使用,有兴趣的老哥可以自己研究一下。增加中间件
在config/autoload/middlewares.php
文件中增加对应的中间件return [ 'http' => [ \Hyperf\Metric\Middleware\MetricMiddleware::class, ], ];
添加
metrics
路由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
文件中增加对应的配置
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
- 配置
datasource
填写容器的IP:端口
- 导入
hyperf
官方的JSON
文件
导入之后需要将默认的 app_name
改成你自己的
如:admin-api
就需要填写admin_api
改成下划线形式
- 查看监控
在Home中你就可以看到了
点进去查看
到此结束,小白第一次配置监控,还有很多东西没弄清楚
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: