События
События в GMONIT
Заголовок раздела «События в 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 rpmfrom nr_analytic_event_datawhere $__timeFilter(timestamp) and account_id = $__org and language = '$language' and app_name = '$app_name' and name = '$scope'group by time, codeorder by time with fill step $__interval_sДля поиска событий всегда необходимо указывать временной диапазон поиска и идентификатор организации. Это обязательная часть запроса, которая обеспечивает производительность агрегации.
where $__timeFilter(timestamp) and account_id = $__orgВ данном примере подсчитывается примерная частота определенного запроса.
EventRPM($interval, name = '$scope') as rpmПользовательские функции(UDF)
Заголовок раздела «Пользовательские функции(UDF)»Пользовательские функции для событий прогнозируют примерный ответ с учетом фактора семплирования.
- EventCount — сколько раз событие произошло
- EventAverage — среднее значение события за период
EventAverage(duration, tx_type = 'web')— подсчитывает среднюю длительность всех веб транзакций - EventRPM — частота определенного события за интервал времени
EventRPM($__interval_s, name = '$scope') as rpm - EventPercent — процентное отношение количества одного события к другому
- EventSum