[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
![[Hyperf] 在Hyperf框架中使用prometheus + grafana 部署基本的监控](https://cdn.learnku.com/uploads/images/202003/05/28269/KCN9pbJlBS.png!large)
如图所示,node 和 skeleton 都已启动
四. Grafana 配置
上面都配置完了,开始配置 Grafana
打开 http://localhost:3000 默认密码是: admin/admin
- 新建
datasource
左侧边栏add datasources选择Prometheus
![[Hyperf] 在 Hyperf 框架中使用 prometheus + grafana 部署基本的监控](https://cdn.learnku.com/uploads/images/202003/05/28269/UJygfIos1n.png!large)
- 配置
datasource
![[Hyperf] 在 Hyperf 框架中使用 prometheus + grafana 部署基本的监控](https://cdn.learnku.com/uploads/images/202003/05/28269/egc52EVNmZ.png!large)
填写容器的IP:端口
- 导入
hyperf官方的JSON文件
![[Hyperf] 在 Hyperf 框架中使用 prometheus + grafana 部署基本的监控](https://cdn.learnku.com/uploads/images/202003/05/28269/Aw2cEdBUkx.png!large)
导入之后需要将默认的 app_name改成你自己的
如:admin-api 就需要填写admin_api 改成下划线形式
![[Hyperf] 在 Hyperf 框架中使用 prometheus + grafana 部署基本的监控](https://cdn.learnku.com/uploads/images/202003/05/28269/N9a9SnXRyf.png!large)
- 查看监控
在Home中你就可以看到了
![[Hyperf] 在 Hyperf 框架中使用 prometheus + grafana 部署基本的监控](https://cdn.learnku.com/uploads/images/202003/05/28269/WOELFeGOo9.png!large)
点进去查看
![[Hyperf] 在 Hyperf 框架中使用 prometheus + grafana 部署基本的监控](https://cdn.learnku.com/uploads/images/202003/05/28269/e2PWrRa107.png!large)
到此结束,小白第一次配置监控,还有很多东西没弄清楚
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: