Сетевые рамки¶
Ниже приведены некоторые советы по оснащению веб-приложений инструментами обнаружения.
Интеграционные¶
Если вы используете одну из следующих библиотек, ознакомьтесь с документацией по интеграции:
В противном случае, проверьте, использует ли ваш сервер WSGI или ASGI, и проверьте соответствующую интеграцию.
Захват заголовков запросов и ответов HTTP-сервера¶
Некоторые методы (например,logfire.instrument_fastapi()) позволяют вам передавать capture_headers=True для записи всех запросов и ответов в диапазоне, что обычно является всем, что вам нужно.
Если вы хотите получить больше контроля, есть три переменные среды, которые информируют библиотеку обнаружения OpenTelemetry о запросе на захват и заголовке ответа:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUESTOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSEOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS
Каждое из них принимает список регулярных выражений, разделенных запятыми, которые проверяются на имя заголовка без учета регистра. Первые два определяют, какие заголовки запросов/ответов будут захвачены и добавлены к свойствам диапазона. Третий определяет, какие заголовки будут изменены.
Например, чтобы записать все заголовки, выполните следующие настройки:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST =".*"
OTEL_INSTUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE =".*"
(Вот что делает capture_headers=True)
Специально для захвата заголовков запросов content-type и заголовков запросов, начинающихся с X-:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST ="content-type, X-.*"
Заменить заголовок Authorization на [REDACTED], чтобы избежать утечки учетных данных пользователя:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_Fields ="Authorization"
(Хотя обычно лучше использовать Logfire для очистки)
Запрос продолжительности HTTP-запроса на каждый процентиль¶
Обычно очень интересно визуализировать продолжительность HTTP-запроса на каждый процентиль. В отличие от среднего значения, которое может повлиять на экстремальные значения, процентиль позволяет нам понять максимальную продолжительность запроса на 50%, 90%, 95% или 99%.
Вот пример запроса, который используется для расчета продолжительности HTTP-запроса:
С нами ((
SELECT
Time_bucket (' % Time_bucket_duration %', start_timestamp) AS x,
(extract(epoch from end_timestamp) * 1000) as duration_ms
От records
Где attributes ? 'http.method'
)
SELECT
x,
percentile_cont (0,99) WITHIN GROUP (ORDER BY Duration_ms) as percentile_99,
percentile_cont (0,95) WITHIN GROUP (ORDER BY Duration_ms) as percentile_95,
percentile_cont (0,90) WITHIN GROUP (ORDER BY Duration_ms) as percentile_90,
percentile_cont (0,50) WITHIN GROUP (ORDER BY Duration_ms) as percentile_50
Из Датасета
Группа By x
ORDER BY X DESC;
Обратите внимание на то, как мы фильтруем записи, для которых установлены свойства http.method. Это хорошая отправная точка для поиска отслеживания, связанных с HTTP-запросами, но в зависимости от ваших настроек вам может понадобиться добавить дополнительные фильтры.
Этот запрос является хорошим кандидатом для графиков временных рядов на панели управления:
本文总阅读量次
