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