Skip to content

Latest commit

 

History

History
102 lines (74 loc) · 8.36 KB

File metadata and controls

102 lines (74 loc) · 8.36 KB

События в GMONIT

События (events) можно рассматривать как «действия, происходящие в системе». Например, какое-либо пользовательское действие на сайте или обработка "случая" на сервере. Данные о событиях представляют собой отдельные случаи и обладают высокой степенью детализации, что делает их подходящими для глубокого анализа и запросов. Однако их количество может быть настолько большим, что становится трудно осуществлять запросы к этому объему данных на длительных временных интервалах.

APM-агенты имеют ограничение на количество событий, которые могут быть отправлены за один цикл сбора данных. Это необходимо для предотвращения влияния большого объема данных на производительность вашего приложения или GMONIT. Для работы с событиями GMONIT использует семплирование. Сохраняются не все данные, а лишь их часть, что позволяет получить приблизительные результаты с меньшими затратами на ресурсы. Для негранулярного результата достаточно метрик, а для гранулярного - события, однако хранения большого количества гранулярных данных нужно много места, поэтому они семплируются для восстановления широкой картины необходимо делать приближенный прогноз.

Структура хранения событий

Данные событий хранятся в таблицах

  • nr_analytic_event_data — события, созданные автоматической инструментацией, могут содержать пользовательские атрибуты
  • nr_custom_event_data — пользовательские события, создаваемые через SDK вызовы.

Поля, которые необходимо указывать в каждом запросе:

Колонка Описание
account_id текущая организации, указывается с помощью макроса графаны $__org
timestamp дата и время с минутной точностью
language название платформы исполнения кода
app_name название приложения

Поля, идентифицирующие событие

Колонка Описание
name имя события, например HTTP запроса или задачи
duration длительность события
status_code код ответа транзакции
tx_type тип web транзакции, может быть web или other

Поля атрибутов

Колонка Описание
agent_attributes могут содержать информацию о статусе запроса, его хедер, метод URI
custom_attributes пользовательские атрибуты добавляют бизнес-контекст и операционную информацию к событиям. Например, возможно создать атрибут для записи времени последнего успешного запроса, чтобы анализировать производительность системы и выявлять возможные узкие места.

Дополнительная мета-информация

Колонка Описание
app_id идентификатор приложения
host имя хоста
display_host имя хоста, который может быть переопределен, используя переменную NEW_RELIC_PROCESS_HOST_DISPLAY_NAME
pid идентификатор процесса на хосте
instances количество экземпляров приложения на одном хосте
agent_version версия new relic агента
labels позволяет отметить метрики определенного приложения собственной информацией, например билдом. Задается переменной NEW_RELIC_LABELS

Обращения к событиям

select
  $__timeInterval(timestamp) as time,
  transform(status_code, [''], ['N/A'], status_code) as code,
  EventRPM($__interval_s, name = '$scope') as rpm
from nr_analytic_event_data
where
  $__timeFilter(timestamp)
  and account_id = $__org
  and language = '$language'
  and app_name = '$app_name'
  and name = '$scope'
group by time, code
order by time with fill step $__interval_s

Для поиска событий всегда необходимо указывать временной диапазон поиска и идентификатор организации. Это обязательная часть запроса, которая обеспечивает производительность агрегации.

where
  $__timeFilter(timestamp)
  and account_id = $__org

В данном примере подсчитывается примерная частота определенного запроса.

EventRPM($interval, name = '$scope') as rpm

Пользовательские функции(UDF)

Пользовательские функции для событий прогнозируют примерный ответ с учетом фактора семплирования.

  • EventCount — сколько раз событие произошло
  • EventAverage — среднее значение события за период EventAverage(duration, tx_type = 'web') — подсчитывает среднюю длительность всех веб транзакций
  • EventRPM — частота определенного события за интервал времени EventRPM($__interval_s, name = '$scope') as rpm
  • EventPercent — процентное отношение количества одного события к другому
  • EventSum

Примеры