sett/hyperf-tracer
Composer 安装命令:
composer require sett/hyperf-tracer
包简介
A open tracing system implemented for Hyperf or other coroutine framework
关键字:
README 文档
README
介绍
hyperf框架的链路追踪组件,基于官方包改造完成,要求框架版本^2.0,原来的官方包的tag是固定的,并不实用,代码质量堪忧,这个包在原有的基础上做了修改
特点
- 支持自定义tag,通过闭包完全自定义
- 删除了冗余文件,增加代码可读性
使用
- 安装组件
composer require hyperf/tracer
- 安装依赖
如果不是使用的是jaeger作为链路,可以忽略这一步
composer require jonahgeorge/jaeger-client-php
- 发布配置
php bin/hyperf.php vendor:publish sett/hyperf-tracer
- 添加配置
在config/autoload/opentracing.php文件中添加
# 以下配置是组件默认的配置,可以按照自己的需求修改 return [ # 链路驱动 'default' => env('TRACER_DRIVER', 'zipkin'), # 开启/关闭以下追踪 'enable' => [ 'guzzle' => env('TRACER_ENABLE_GUZZLE', true), 'redis' => env('TRACER_ENABLE_REDIS', true), 'db' => env('TRACER_ENABLE_DB', true), 'method' => env('TRACER_ENABLE_METHOD', false), 'exception' => env('TRACER_ENABLE_EXCEPTION', false), ], 'tracer' => [ 'zipkin' => [ 'driver' => Sett\Tracer\Adapter\ZipkinTracerFactory::class, 'app' => [ 'name' => env('APP_NAME', 'skeleton'), 'ipv4' => '127.0.0.1', 'ipv6' => null, 'port' => 9501, ], 'options' => [ 'endpoint_url' => env('ZIPKIN_ENDPOINT_URL', 'http://localhost:9411/api/v2/spans'), 'timeout' => env('ZIPKIN_TIMEOUT', 1), ], 'sampler' => BinarySampler::createAsAlwaysSample(), ], 'jaeger' => [ 'driver' => Sett\Tracer\Adapter\JaegerTracerFactory::class, 'name' => env('APP_NAME', 'skeleton'), 'options' => [ 'sampler' => [ 'type' => SAMPLER_TYPE_CONST, 'param' => true, ], 'local_agent' => [ 'reporting_host' => env('JAEGER_REPORTING_HOST', 'localhost'), 'reporting_port' => env('JAEGER_REPORTING_PORT', 5775), ], 'max_buffer_length' => "1024" ], ], ], 'tags' => [ # 请求外部接口记录 'http_client' => function (Span $span, array $data) { $method = $data['keys']['method'] ?? 'null'; $uri = $data['keys']['uri'] ?? 'null'; $span->setTag("http.url", $uri); $span->setTag("http.method", $method); }, # redis 'redis' => function (Span $span, array $data) { $span->setTag("redis.arguments", Json::encode($data['arguments'])); }, # 数据库 'db' => function (Span $span, array $data) { $span->setTag("db.query", Json::encode($data['arguments'], JSON_UNESCAPED_UNICODE)); }, # 异常记录 'exception' => function (Span $span, \Throwable $throwable) { $span->setTag("exception.class", get_class($throwable)); $span->setTag("exception.code", $throwable->getCode()); $span->setTag("exception.error", $throwable->getMessage()); $span->setTag("exception.trace", $throwable->getTraceAsString()); }, # 外部请求接口时记录的值 'request' => function (Span $span) { $request = Context::get(ServerRequestInterface::class); $span->setTag("http.get.params", Json::encode($request->getQueryParams(), JSON_UNESCAPED_UNICODE)); $span->setTag("http.post.params", Json::encode($request->getParsedBody(), JSON_UNESCAPED_UNICODE)); }, # 记录协程ID 'coroutine' => function (Span $span, array $data) { $span->setTag("coroutine.id", Coroutine::id()); }, # 外部请求接口时记录返回值 'response' => function (Span $span) { /**@var $response ResponseInterface */ $response = Context::get(ResponseInterface::class); $span->setTag("response.status", (string)$response->getStatusCode()); }, ], ]
- 添加中间件
在config/autoload/middlewares.php文件中添加
return [ 'http' => [ \Sett\Tracer\Middleware\TraceMiddleware::class, ], ];
sett/hyperf-tracer 适用场景与选型建议
sett/hyperf-tracer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 386 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 08 月 31 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「zipkin」 「hyperf」 「open-tracing」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 sett/hyperf-tracer 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sett/hyperf-tracer 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 sett/hyperf-tracer 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A simple zipkin implementation for php.
An async event for hyperf.
Symfony Opentracing bundle extension for Zipkin tracers
Zipkin library for laravel
telemetry framework for php
php hyperf xxljob
统计信息
- 总下载量: 386
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 22
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-08-31