Перейти к содержимому

События

События (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

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

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