razorpay/opencensus-phpopencensus-php是基于官方PHP镜像构建的Docker镜像,预集成了OpenCensus PHP库。OpenCensus是一个开源分布式追踪框架,旨在帮助开发者收集、分析和导出分布式系统中的性能数据。该镜像简化了PHP应用集成分布式追踪的流程,无需手动安装依赖,可直接用于生产或开发环境,支持将追踪数据导出至主流后端系统(如Jaeger、Zipkin、Stackdriver等)。
从Docker Hub拉取最新版本镜像:
bashdocker pull opencensus/php:latest
以Jaeger为导出后端的基本示例:
bashdocker run -d \ --name opencensus-php-example \ -e OPENCENSUS_TRACER_EXPORTER=jaeger \ -e OPENCENSUS_EXPORTER_JAEGER_AGENT_HOST=jaeger-agent \ -e OPENCENSUS_EXPORTER_JAEGER_SERVICE_NAME=php-service \ -e OPENCENSUS_SAMPLER=always_on \ -v $(pwd)/app:/app \ -p 8080:80 \ opencensus/php:latest \ php -S 0.0.0.0:80 /app/index.php
配合Jaeger后端的Docker Compose示例(docker-compose.yml):
yamlversion: '3' services: jaeger: image: jaegertracing/all-in-one:latest ports: - "***:***" # Jaeger UI - "6831:6831/udp" # Jaeger Agent (Thrift compact) environment: - COLLECTOR_ZIPKIN_HOST_PORT=:9411 php-app: image: opencensus/php:latest depends_on: - jaeger environment: - OPENCENSUS_TRACER_EXPORTER=jaeger - OPENCENSUS_EXPORTER_JAEGER_AGENT_HOST=jaeger - OPENCENSUS_EXPORTER_JAEGER_AGENT_PORT=6831 - OPENCENSUS_EXPORTER_JAEGER_SERVICE_NAME=php-app - OPENCENSUS_SAMPLER=probability - OPENCENSUS_SAMPLER_RATE=0.5 # 50%采样率 volumes: - ./app:/app ports: - "8080:80" command: php -S 0.0.0.0:80 /app/index.php
启动服务:
bashdocker-compose up -d
在PHP应用中使用OpenCensus追踪请求(app/index.php):
php<?php require_once __DIR__ . '/vendor/autoload.php'; // 初始化追踪器(镜像已自动配置,无需手动初始化) $tracer = Opencensus\Trace\Tracer::instance(); // 创建根跨度 $span = $tracer->startSpan('php-app-root'); $tracer->inScope($span); try { // 模拟业务逻辑 usleep(***); // 100ms延迟 // 创建子跨度(如数据库调用) $dbSpan = $tracer->startSpan('database-query'); $tracer->inScope($dbSpan); usleep(50000); // 模拟数据库查询耗时 $dbSpan->end(); } finally { $span->end(); // 确保根跨度结束 } echo "Hello, OpenCensus!\n"; ?>
通过环境变量调整镜像行为,常用参数如下:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
OPENCENSUS_TRACER_EXPORTER | 追踪数据导出器类型,可选值:jaeger、zipkin、stackdriver、null | null(不导出数据) |
OPENCENSUS_SAMPLER | 采样策略,可选值:always_on、always_off、probability | always_off |
OPENCENSUS_SAMPLER_RATE | 概率采样率(0.0~1.0),仅当SAMPLER=probability时生效 | 0.01(1%) |
OPENCENSUS_EXPORTER_JAEGER_AGENT_HOST | Jaeger Agent主机地址 | localhost |
OPENCENSUS_EXPORTER_JAEGER_AGENT_PORT | Jaeger Agent端口 | 6831 |
OPENCENSUS_EXPORTER_JAEGER_SERVICE_NAME | 服务名称,用于追踪系统中标识当前服务 | php-service |
OPENCENSUS_EXPORTER_ZIPKIN_ENDPOINT | Zipkin服务端点(如[***]) | - |
OPENCENSUS_EXPORTER_STACKDRIVER_PROJECT_ID | Stackdriver项目ID(仅用于GCP环境) | - |
如需更复杂配置,可挂载自定义opencensus.yaml配置文件至容器/etc/opencensus/目录:
bashdocker run -v $(pwd)/opencensus.yaml:/etc/opencensus/opencensus.yaml ...
配置文件格式参考OpenCensus PHP官方文档。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务