Hyperf3.1接入服务器监控

hyperf+metrics+prometheus+Grafana

  • Metrics数据采集器
  • prometheus数据存储与查询
  • Grafana可视化看板工具

安装流程

1、安装metric
composer require hyperf/metric
2、安装prometheus
composer require promphp/prometheus_client_php
3、生成配置文件:config/autoload/metric.php
php bin/hyperf.php vendor:publish hyperf/metric
4、配置config/autoload/metric.php

php 复制代码
<?php

declare(strict_types=1);

use Hyperf\Metric\Adapter\Prometheus\Constants;
use Hyperf\Metric\Adapter\Prometheus\MetricFactory;

use function Hyperf\Support\env;

return [
    // To disable hyperf/metric temporarily, set default driver to noop.
    'default' => env('METRIC_DRIVER', 'prometheus'),
    'use_standalone_process' => env('METRIC_USE_STANDALONE_PROCESS', true),// 是否使用 独立监控进程
    'enable_default_metric' => env('METRIC_ENABLE_DEFAULT_METRIC', true),//是否统计默认指标。默认指标包括内存占用、系统 CPU 负载以及 Swoole Server 指标和 Swoole Coroutine 指标
    'enable_command_metric' => env('METRIC_ENABLE_COMMAND_METRIC', true),
    'default_metric_interval' => env('DEFAULT_METRIC_INTERVAL', 5),//默认指标推送周期,单位为秒
    // only available when use_standalone_process is true
    'buffer_interval' => env('METRIC_BUFFER_INTERVAL', 5),
    'buffer_size' => env('METRIC_BUFFER_SIZE', 200),
    'metric' => [
        'prometheus' => [
            'driver' => MetricFactory::class,
            'mode' => Constants::SCRAPE_MODE,
            'namespace' => env('PROMETHEUS_NAMESPACE', 'skeleton'),
            'redis_config' => env('PROMETHEUS_REDIS_CONFIG', 'default'),
            'redis_prefix' => env('PROMETHEUS_REDIS_PREFIX', 'prometheus:'),
            'redis_gather_key_suffix' => env('PROMETHEUS_REDIS_GATHER_KEY_SUFFIX', ':metric_keys'),
            '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', '9090'),
            'push_interval' => env('PROMETHEUS_PUSH_INTERVAL', 5),
        ],
    ],
];

5、添加中间件config/autoload/middlewares.php

php 复制代码
<?php

declare(strict_types=1);

return [
    'http' => [
        Hyperf\Metric\Middleware\MetricMiddleware::class,//指标采集与上报组件
    ],
];

6、安装prometheus(日志采集)和grafana(面板)
prometheus安装前的目录包含data文件夹和空白的prometheus.yml文件

php 复制代码
#相关docker-compose配置
  grafana:
    # 建议固定版本,不要用 latest
    image: grafana/grafana:13.0.1
    container_name: grafana
    restart: always
    ports:
      - "3000:3000"
    volumes:
      # 数据持久化,防止删容器丢数据
      - ./grafana/data:/var/lib/grafana
    environment:
      # 1. 设置管理员账号(可选,默认 admin)
      GF_SECURITY_ADMIN_USER: admin
      # 2. 设置管理员密码(必填!)
      GF_SECURITY_ADMIN_PASSWORD: admin_password
      # 时区(建议设为上海)
      TZ: Asia/Shanghai
    networks:
      - lnmp-network
  prometheus:
    image:  prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus/data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.enable-lifecycle'  # 允许通过API热重载配置
      - '--storage.tsdb.retention.time=15d' # 数据保留15天
    networks:
      - lnmp-network

7、配置prometheus
prometheus.yml

php 复制代码
# prometheus.yml
global:
  scrape_interval: 15s       # 全局采集间隔
  evaluation_interval: 15s   # 规则评估间隔

# 采集配置
scrape_configs:
  # Hyperf 采集任务
  - job_name: 'skeleton' # 和metric配置的namespace一致
    static_configs:
      - targets: ['php83:9502']   # 用 Hyperf 容器名,确保和你的容器名一致
    metrics_path: '/metrics'       # Hyperf 指标路径

  # Prometheus 自身监控(可选)
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

8、配置grafana

  • Connections->Data sources 点击Add new data source按钮
  • 选择prometheus
  • Name保持默认配置,Connection:http://prometheus:9090http://docker容器名称:9090
  • 点击保存完成prometheus配置
  • 右上角点击Import dashboard 导入grafana.json文件
  • Name使用默认就行,DS_PROMETHEUS选择前面添加的prometheus
  • app_name保持和metric配置的namespace一致
  • 保存完成配置
相关推荐
heimeiyingwang2 小时前
【Prometheus·部署篇】存储与容量规划:本地存储、远程存储与长期保存
prometheus
heimeiyingwang2 小时前
【Prometheus·可视化篇】Grafana 集成:数据源配置与 Dashboard 设计原则
grafana·prometheus
IT界的老黄牛2 小时前
Jenkins 构建卡了 23 天,abort 按钮点了没用
jenkins·maven·prometheus·告警·排查·ci-cd
2601_962097361 天前
GraphQL,Grafana和Dash
python·grafana·数据可视化·graphql·dash
heimeiyingwang2 天前
【Prometheus·告警篇】告警规则:Recording Rules 与 Alerting Rules 最佳实践
prometheus
happymade3 天前
7000 台网络设备批量纳管 & 自动拓扑生成实战——MSRM3 完整操作流程与关键要点复盘
运维·服务器·网络·zabbix·grafana·msrm3
AAA@峥3 天前
从零搭建 Prometheus 完整监控告警体系|Linux 部署 + node_exporter+Grafana 可视化
云原生·grafana·prometheus
liuyicenysabel5 天前
Grafana + Prometheus 分级告警配置设计(P0/P1/P2)
javascript·grafana·prometheus
随遇而安zx5 天前
SpringCloud---可观测性与监控:Actuator / Micrometer / Prometheus / Grafana 深度解析
spring cloud·grafana·prometheus
qq_452396235 天前
第四篇:《Prometheus 深度实战:指标设计、Exporter 开发与服务发现》
服务发现·prometheus