shopware/opentelemetry

Shopware 的 OpenTelemetry 自动打点

0.1.5 2024-08-13 12:51 UTC

This package is auto-updated.

Last update: 2024-09-11 14:49:30 UTC


README

要求

  • ext-opentelemetry PHP 扩展
  • 可选:ext-grpc 当使用 gRPC 导出器时

安装

composer require shopware/opentelemetry

配置

使用以下环境变量启用 open telemetry

OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_SERVICE_NAME=shopware # or any other name

此扩展可以通过以下方式禁用

OTEL_PHP_DISABLED_INSTRUMENTATIONS=shopware

您需要配置导出器以将数据发送到收集器。

以下是一个使用 OTLP over gRPC 的示例

OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

您还需要安装以下 composer 包: open-telemetry/transport-grpcopen-telemetry/exporter-otlp

启用 Shopware 自定义跟踪

要启用 Shopware 的跟踪,您需要添加以下配置

# config/packages/opentelemetry.yaml

shopware:
    profiler:
        integrations:
            - OpenTelemetry

添加自定义跨度

这些跨度与所有分析器(Symfony Profiler bar、Tideways 等)一起工作,并且不仅限于 OpenTelemetry。

use Shopware\Core\Profiling\Profiler;

$value = Profiler::trace('<name>', function () {
    return $myFunction();
});

将日志转发到 OpenTelemetry

您可以使用以下配置将日志转发到 OpenTelemetry

# config/packages/opentelemetry.yaml

monolog:
    handlers:
        main:
            type: service
            id: monolog.handler.open_telemetry
        elasticsearch:
            type: service
            id: monolog.handler.open_telemetry

将指标传输到 OpenTelemetry

您可以使用以下配置启用 OpenTelemetry 指标传输

# config/packages/opentelemetry.yaml
open_telemetry_shopware:
  metrics:
    enabled: true
    namespace: 'io.opentelemetry.contrib.php.shopware' # or your custom namespace

请注意,OpenTelemetry SDK 必须配置为将指标发送到收集器。它使用相同的环境变量进行配置。示例配置可能如下所示

OTEL_SERVICE_NAME=shopware
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_METRICS_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta

时间配置

OpenTelemetry PHP SDK 不支持指标的累积存储。由于 PHP 进程寿命短暂,最好使用 delta 时间性发射指标,并在接收端聚合它们。遗憾的是,在撰写本文时,OpenTelemetry Collector 不支持将 delta 时间性指标转换为累积指标。该功能处于开发中,进度可以通过以下链接跟踪 这里

同时,可以通过手动实现聚合或使用可以与 delta 时间性一起工作的指标后端来处理此问题。我们已成功与 DataDog 进行了测试。

一些链接