netfly/hyperf-observability 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

netfly/hyperf-observability

Composer 安装命令:

composer require netfly/hyperf-observability

包简介

One-stop observability package for Hyperf with Jaeger tracing, Loki JSON logs and Prometheus metrics.

README 文档

README

Netfly Hyperf Observability 是一个面向 Hyperf/PHP 项目的可观测性 Composer 组件包,覆盖 Jaeger 链路追踪Loki 结构化日志Prometheus 指标采集 三类能力,并提供 Grafana、Loki、Promtail、Prometheus、Jaeger 的本地一键演示环境。

组件支持 AOP 自动埋点手动业务埋点 两种模式。业务项目接入后,可以在低侵入甚至零改造的情况下采集 HTTP、GRPC、MySQL、Redis、MQ 等核心组件的调用链路、结构化日志和监控指标。

能力清单

能力 说明
Jaeger 链路追踪 生成 128-bit TraceID、64-bit SpanID,按父子关系串联 HTTP、GRPC、MySQL、Redis、MQ、业务 span。
Loki 结构化日志 输出 JSON 日志,自动携带 serviceprojectenvtrace_idspan_idcomponent 等字段。
Prometheus 指标 暴露 /metrics 端点,提供 Counter、Histogram、Gauge 类型指标。
AOP 自动埋点 基于 Hyperf AOP 自动拦截 Controller、GRPC、MySQL、Redis、MQ、异步队列调用。
手动埋点 API 提供 TraceHelperMetricHelperLogHelper,用于自定义业务链路、指标和日志。
多项目多环境隔离 所有链路、日志、指标都带 serviceprojectenv 标签。
Grafana 拆分看板 总览、HTTP、GRPC、MySQL、Redis、MQ、日志链路独立看板,避免单页查询过重。
Jaeger + Loki 联动 Loki 日志可通过 trace_id 跳转 Jaeger,Jaeger Trace 可反查同 TraceID 日志。

适用场景

  • Hyperf 微服务项目需要快速补齐链路追踪、日志检索、指标监控。
  • 多项目、多环境部署,需要按 projectenv 隔离观测数据。
  • 需要通过 Jaeger 定位慢链路、异常链路、跨组件调用耗时。
  • 需要通过 Grafana 查看各组件 QPS、错误率、耗时分布、连接池、MQ 堆积。
  • 需要通过 Loki 按 TraceID、组件、错误级别、关键词检索结构化日志。

快速接入

1. 安装 Composer 包

composer require netfly/hyperf-observability
php bin/hyperf.php vendor:publish netfly/hyperf-observability

发布后会生成 Hyperf 配置文件:

config/autoload/observability.php

如果项目没有自动注册 /metrics 路由,可以手动添加:

use Hyperf\HttpServer\Router\Router;
use Netfly\HyperfObservability\Metrics\MetricsController;

Router::get('/metrics', [MetricsController::class, 'index']);

2. 最小环境变量

OBSERVABILITY_ENABLED=true
OBS_SERVICE_NAME=order-service
OBS_PROJECT=mall
OBS_ENV=dev

OBS_TRACE_ENABLED=true
OBS_JAEGER_ENDPOINT=http://jaeger:9411/api/v2/spans
OBS_TRACE_SAMPLE_RATE=1.0

OBS_LOGGING_ENABLED=true
OBS_METRICS_ENABLED=true
OBS_CAPTURE_REQUEST=true
OBS_CAPTURE_RESPONSE=false
OBS_SANITIZE_ENABLED=true

3. 验证接入

启动业务服务后按顺序检查:

curl http://127.0.0.1:9501/metrics

预期能看到类似指标:

hyperf_http_requests_total{service="order-service",project="mall",env="dev",component="http",route="/order",method="GET",status="200"} 1

然后在 Jaeger 查询服务名 order-service,在 Grafana Loki 中查询:

{service="order-service", env="dev"}

本地完整演示

启动 Grafana、Loki、Promtail、Prometheus、Jaeger 和 Hyperf Demo:

docker compose up -d --build

后台持续造数据:

docker compose --profile demo-data up -d demo-loadgen

停止持续造数:

docker compose stop demo-loadgen

服务地址:

服务 地址
Demo API http://localhost:9501
Grafana http://localhost:3000
Jaeger http://localhost:16686
Prometheus http://localhost:9090
Loki http://localhost:3100

Grafana 默认账号密码为 admin / admin,当前演示环境也启用了匿名 Admin 访问。

Demo 路由

路由 说明
GET / 基础健康检查,返回当前 TraceID。
GET /order 正常下单链路,包含 Redis、MySQL、GRPC、MQ、业务 span。
GET /simulate 随机模拟正常、慢 SQL、超时、库存不足、支付失败、MQ 重试。
GET /grpc-demo 模拟 GRPC 调用。
GET /error 触发异常链路和错误日志。
GET /metrics Prometheus 指标暴露端点。

常用查询

Prometheus HTTP QPS:

sum(rate(hyperf_http_requests_total{service="netfly-demo",env="dev"}[5m])) by (route,status)

Prometheus HTTP P99:

histogram_quantile(0.99, sum(rate(hyperf_http_request_duration_seconds_bucket{service="netfly-demo",env="dev"}[5m])) by (le,route))

Loki 按 TraceID 查日志:

{service="netfly-demo", env="dev"} | json | extra_trace_id="TRACE_ID"

Loki 查错误:

{service="netfly-demo", env="dev", level="ERROR"} | json

文档目录

文档 内容
完整配置说明 全局、Tracing、Logging、Metrics、组件、AOP、采集、脱敏配置。
AOP 自动埋点与手动埋点 API 自动埋点范围、手动 span、指标、日志、TraceID 传播。
指标字典与 PromQL 指标命名规则、标签说明、HTTP/GRPC/MySQL/Redis/MQ 指标清单。
Jaeger 链路追踪指南 Jaeger 上报、采样、查询、异常链路、Loki 联动。
Grafana 与 Loki 使用指南 看板、LogQL、TraceID 跳转 Jaeger、Jaeger 反查日志。
Docker 本地演示环境 一键启动、持续造数、服务地址、验证流程。
生产环境建议 采样率、性能、安全、容量、故障排查建议。
验收与排障清单 启动服务、持续造数、指标/日志/链路/Grafana 跳转验收命令。

交付内容

  • Composer 包源码:src/
  • 默认配置:config/observability.php
  • Docker 演示环境:docker-compose.ymldocker/
  • Jaeger 采样配置:docker/jaeger/sampling.json
  • Hyperf Demo 项目:demo/
  • Grafana 拆分看板:docker/grafana/dashboards/
  • 中文使用、配置、部署文档:README.mddocs/

netfly/hyperf-observability 适用场景与选型建议

netfly/hyperf-observability 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 07 月 15 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 netfly/hyperf-observability 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 netfly/hyperf-observability 我们能提供哪些服务?
定制开发 / 二次开发

基于 netfly/hyperf-observability 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-15