Search
Write a publication
Pull to refresh

Comments 2

Немного оффтопный комментарий, по использованию OpenTelemetry+PHP+Laravel:

Для версии PHP 8.4 в пеклах лежит хорошая версия OpenTelemetry (pecl install opentelemetry или если alpine: apk add php84-opentelemetry)

Далее мы просто добавляем в проект зависимостью: (composer.json)

        "open-telemetry/exporter-otlp": "^1.2",
        "open-telemetry/opentelemetry-auto-guzzle": "^1.0",
        "open-telemetry/opentelemetry-auto-laravel": "^1.0",
        "open-telemetry/opentelemetry-logger-monolog": "^1.0",
        "open-telemetry/sdk": "^1.2",
        "open-telemetry/sem-conv": "^1.30",

И можно использовать магию аннотаций в проекте:

#[WithSpan] // <- Магия происходит тут из-за хуков
public function index(Request $request)
{
    return UserResource::collection(
        User::with(['media'])
            ->paginate($request->input('per_page', 15))
            ->withQueryString()
    );
}

Ну и обязательно установить env (Как пример, отправляем данные в локальный прокси коллектор по-средством http/json)

OTEL_PHP_AUTOLOAD_ENABLED="true"
OTEL_SERVICE_NAME=Laravel
OTEL_EXPORTER_OTLP_PROTOCOL=http/json
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.collector
OTEL_PROPAGATORS=baggage,tracecontext
OTEL_TRACES_EXPORTER=otlp
OTEL_METRICS_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlp
OTEL_RESOURCE_ATTRIBUTES="service.name=Laravel,service.namespace=demo,service.version=1.0,deployment.environment=development"

Там так же будет автоматический трейсинг запросов во-вне и к базам данных. И, что самое главное, можно оставлять всю такую же чистоту кода, за счет того, что не нужно контролировать спаны самостоятельно. Их теперь контролирует автохук в рамках пекл-расширения для пхп. Больше информации про хук тут: PHP

Дополнительно, за счет того что это OpenTelemetry, мы получаем более продвинутую схему для получения метрик из приложений, из-за push-policy: нам не нужно бояться, что данные потеряются при сетапах своих "prometheus-adapters", которые или в кеше хранить или где-нибудь еще.

Ну а еще данные из логов добавляется к спанам в качестве аттрибутов

Мы используем сетап вместе с SigNoz + Tail-Based Sample.
Из очевидных минусов: нужно добавлять памяти самому приложению (пока данные собираются, они хранятся в приложении и чего-то весят) и нужно много памяти в коллекторе, но это вопрос именно хвостового семплирования.

Ну а главным плюсом здесь я считаю то, что нет необходимости раздувать код приложения созданием спанов, что выглядит весьма ненативно для PHP.

После того, как отправил, уже не смог отредактировать. С аттрибутами есть небольшой нюанс: нужно в рамках настроек PHP указывать opentelemetry.attr_hooks_enabled = On в php.ini

Sign up to leave a comment.

Articles