После того, как отправил, уже не смог отредактировать. С аттрибутами есть небольшой нюанс: нужно в рамках настроек PHP указывать opentelemetry.attr_hooks_enabled = On в php.ini
#[WithSpan] // <- Магия происходит тут из-за хуков
public function index(Request $request)
{
return UserResource::collection(
User::with(['media'])
->paginate($request->input('per_page', 15))
->withQueryString()
);
}
Ну и обязательно установить env (Как пример, отправляем данные в локальный прокси коллектор по-средством http/json)
Там так же будет автоматический трейсинг запросов во-вне и к базам данных. И, что самое главное, можно оставлять всю такую же чистоту кода, за счет того, что не нужно контролировать спаны самостоятельно. Их теперь контролирует автохук в рамках пекл-расширения для пхп. Больше информации про хук тут: PHP
Дополнительно, за счет того что это OpenTelemetry, мы получаем более продвинутую схему для получения метрик из приложений, из-за push-policy: нам не нужно бояться, что данные потеряются при сетапах своих "prometheus-adapters", которые или в кеше хранить или где-нибудь еще.
Ну а еще данные из логов добавляется к спанам в качестве аттрибутов
Мы используем сетап вместе с SigNoz + Tail-Based Sample. Из очевидных минусов: нужно добавлять памяти самому приложению (пока данные собираются, они хранятся в приложении и чего-то весят) и нужно много памяти в коллекторе, но это вопрос именно хвостового семплирования.
Ну а главным плюсом здесь я считаю то, что нет необходимости раздувать код приложения созданием спанов, что выглядит весьма ненативно для PHP.
После того, как отправил, уже не смог отредактировать. С аттрибутами есть небольшой нюанс: нужно в рамках настроек PHP указывать
opentelemetry.attr_hooks_enabled = On
вphp.ini
Немного оффтопный комментарий, по использованию OpenTelemetry+PHP+Laravel:
Для версии PHP 8.4 в пеклах лежит хорошая версия OpenTelemetry (
pecl install opentelemetry
или если alpine:apk add php84-opentelemetry
)Далее мы просто добавляем в проект зависимостью: (composer.json)
И можно использовать магию аннотаций в проекте:
Ну и обязательно установить env (Как пример, отправляем данные в локальный прокси коллектор по-средством http/json)
Там так же будет автоматический трейсинг запросов во-вне и к базам данных. И, что самое главное, можно оставлять всю такую же чистоту кода, за счет того, что не нужно контролировать спаны самостоятельно. Их теперь контролирует автохук в рамках пекл-расширения для пхп. Больше информации про хук тут: PHP
Дополнительно, за счет того что это OpenTelemetry, мы получаем более продвинутую схему для получения метрик из приложений, из-за push-policy: нам не нужно бояться, что данные потеряются при сетапах своих "prometheus-adapters", которые или в кеше хранить или где-нибудь еще.
Ну а еще данные из логов добавляется к спанам в качестве аттрибутов
Мы используем сетап вместе с SigNoz + Tail-Based Sample.
Из очевидных минусов: нужно добавлять памяти самому приложению (пока данные собираются, они хранятся в приложении и чего-то весят) и нужно много памяти в коллекторе, но это вопрос именно хвостового семплирования.
Ну а главным плюсом здесь я считаю то, что нет необходимости раздувать код приложения созданием спанов, что выглядит весьма ненативно для PHP.