脚本宝典收集整理的这篇文章主要介绍了

hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

1.为什么要接入服务监控

先上图看看效果:
QQ截图20191230145357.png

微服务治理的一个核心需求便是服务可观察性,从图上可以很直观的看到我们想要监控的服务器的各项自定义指标.而且支持自定义扩展图表,十分的方便,满足后期更多的需求.

2.如何接入

先使用docker-compose 安装prometheus和grafana服务,docker-compose.yml 如下:

version: '3'  networks:     monitor:         driver: bridge  services:     prometheus:         image: prom/prometheus         container_name: prometheus         hostname: prometheus         restart: always         volumes:             - /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml             #- /home/prometheus/node_down.yml:/etc/prometheus/node_down.yml         ports:             - "9090:9090"         networks:             - monitor      grafana:         image: grafana/grafana         container_name: grafana         hostname: grafana         restart: always         ports:             - "3000:3000"         networks:             - monitor      node-exporter:         image: prom/node-exporter         container_name: node-exporter         hostname: node-exporter         restart: always         ports:             - "9100:9100"         networks:             - monitor             

hyperf的配置如官方所描述:

安装

通过 Composer 安装组件


composer require hyperf/metric

配置 Prometheus


使用 Prometheus 时,在配置文件中的 /config/autoload/metric.php ,增加 Prometheus 的具体配置。

use HyperfMetricAdapterPrometheusConstants;  return [     'default' => env('TELEMETRY_DRIVER', 'prometheus'),     'use_standalone_process' => env('TELEMETRY_USE_STANDALONE_PROCESS', true),     'enable_default_metric' => env('TELEMETRY_ENABLE_DEFAULT_TELEMETRY', true),     'default_metric_interval' => env('DEFAULT_METRIC_INTERVAL', 5),     'metric' => [         'prometheus' => [             'driver' => HyperfMetricAdapterPrometheusMetricFactory::class,             'mode' => Constants::SCRAPE_MODE,             'namespace' => env('APP_NAME', 'skeleton'),             'scrape_host' => env('PROMETHEUS_SCRAPE_HOST', '0.0.0.0'),             'scrape_port' => env('PROMETHEUS_SCRAPE_PORT', '9502'),             'scrape_path' => env('PROMETHEUS_SCRAPE_PATH', '/metrics'),             'push_host' => env('PROMETHEUS_PUSH_HOST', '0.0.0.0'),             'push_port' => env('PROMETHEUS_PUSH_PORT', '9091'),             'push_interval' => env('PROMETHEUS_PUSH_INTERVAL', 5),         ],     ], ];  

3.运行使用

运行docker-compose.yml的服务 docker-compose up,启动hyperf,
访问http://ip:3000/ 访问grafana的图像界面如下:
账号密码填入admin进入,
QQ截图20191230153302.png

进入主界面,得先添加数据库才能保存对应数据,点击数据库,添加数据库,添加prometheus,填写对应地址后保存
hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示-脚本宝典
hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示-脚本宝典
image.png

进入后点击如图所示,添加对应的指标
hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示-脚本宝典
hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示-脚本宝典
hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示-脚本宝典
metric指标输入hyperf的默认名称skeleteon,会提示hyperf默认提交的数据字段,选中你需要的,图表会马上显示当前数据指标,根据相关提示保存就能实现监控数据指标了。

image.png

4.高级进阶

hyperf默认的metric组件的监听器linster监控的数据可能并不能满足我们全方位的需要,可以对其进行改造,输出更多样化的统计指标(具体请阅读源码自行理解,这里不展开说.)。如果需要
收集http的运行参数,比如访问ip或者耗时等,得在中间件进行扩展,
先在配置文件中的 /config/autoload/middleware.php中添加

return [     'http' => [          HyperfMetricMiddlewareMetricMiddleware::class,     ], ]; 

动手在MetricMiddleware的process方法扩展你自己想要的数据指标代码吧!

注意

由于中间件会影响程序执行速度,通过测试,直接在中间件将数据写入prometheus严重影响执行效率。故可以通过写入到swoole_table的高性能内存,再从定时器写入prometheus,并发性能测试结果反映,这办法对性能影响极低,并且满足日常监控的需求!

性能测试


以下是测试数据对比:
image.png

image.png

image.png

image.png

结果显而易见,使用高性能内存+异步处理才能更高效的去监控整个系统。

总结

以上是脚本宝典为你收集整理的

hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示

全部内容,希望文章能够帮你解决

hyperf利用prometheus接入服务监控,使用grafana实现数据的实时监控显示

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过