Запись бизнес-событий
Для начала работы с бизнес-событиями необходимо определить объем данных, которые вы хотите собрать. Используемый подход зависит от источника бизнес-событий.
Существует пять источников для проведения бизнес-событий.
- ЕдиныйАгент - Настройте Ключ-АСТРОМ, чтобы добавить правила захвата, триггеры, поля данных и многое другое.
- Веб- и мобильное приложение RUM - Получайте бизнес-события RUM, используя специальный метод RUM JavaScript API, ЕдиныйАгент для Mobile или OpenKit.
- Внешние источники - Настройте внешние бизнес-системы или ИТ-системы для отправки бизнес-событий в формате JSON в API бизнес-событий (REST-конечная точка) .
- Логи - Используйте логи событий в качестве дополнительного источника информации о бизнес-событиях через OpenPipeline.
- Рабочие процессы - Используйте действие «Загрузка бизнес-событий» в разделе «Рабочие процессы», чтобы генерировать бизнес-события из автоматизированных задач.
Получение информации о бизнес-событиях через ЕдиныйАгент
Версия ЕдиногоАгента 1.253+
Режим мониторинга ЕдиныйАгент Full-Stack является обязательным для хостов, на которых вы хотите регистрировать бизнес-события.
Для регистрации бизнес-событий с помощью ЕдиногоАгента необходимо сначала включить эту функцию.
- Перейдите в Настройки > Предпочтения > Функции ЕдиногоАгента.
- Включите функцию бизнес-событий ЕдиногоАгента для технологий, подходящих для вашей среды.
| Для того чтобы получать бизнес-события из этого процесса, необходимо перезапустить процесс приложения. |
Для настройки требуется одно или несколько правил сбора данных, состоящих из триггеров, обязательных полей данных и необязательных полей данных событий.
В таблице ниже приведены примеры обязательных (event.type, event.provider) и необязательных (event.category) полей данных.
| Поле | Тип | Описание | Примеры |
|---|---|---|---|
event.category
|
string | Стандартная категоризация на основе значимости события в соответствии со стандартом управления событиями ITIL. | Availability
|
event.type
|
string | Уникальный идентификатор типа данного события. | buy-asset, sell-asset, login
|
event.provider
|
string | Источник события, например, название компонента или системы, сгенерировавшей событие. | OneAgent, easyTrade.com, easyTravel.com
|
Поддерживаемые технологии
Поддерживаемые технологии для извлечения данных из HTTP-запросов перечислены в таблицах ниже.
Извлечение данных из входящих HTTP-запросов
| Агент | Функция Единого-Агента | Мини-мальная версия | Поддер-живаемые технологии | Мини-мальная версия | Сжатое тело | Полное тело | Мини-мальная версия | Сжатое тело | Полное тело |
|---|---|---|---|---|---|---|---|---|---|
| Обеспечение возможности регистрации событий (захват событий) | Обеспечение возможности регистрации событий (захват событий) | Обеспечение возможности регистрации событий (захват событий) | application/ json (захват полезной нагрузки) | application/ json (захват полезной нагрузки) | application/ json (захват полезной нагрузки) | Заголовок: XML (захват полезной нагрузки) 1 | Заголовок: XML (захват полезной нагрузки) 1 | Заголовок: XML (захват полезной нагрузки) 1 | |
| Webserver | Webserver Business Events | 1.253
|
|
1.253
|
Да | Да | 1.275 | Да | Да |
| .NET | .NET Business Events | 1.253
|
Да | 1.253
|
Нет | Да | 1.279 | Нет | Да |
| Java | Java Business Events (incoming HTTP) | 1.253
|
Servlet
|
1.253
|
Да | Да | 1.275 | Да | Да |
| Node.js | Node.js Business Events | 1.259 | Да | 1.259 | Да | Да | н/д | Нет | Нет |
| Golang | Go Business Events | 1.263 | Да | 1.263 | Да | Да | н/д | Нет | Нет |
1 Поддерживаемые типы содержимого для захвата XML в Java: application/xml.
2 Поддержка Tomcat 10 —Версия ЕдиногоАгента 1.263+ и требуется функция ЕдиногоАгента на Java Servlet 5.0 (в разделе Настройки > Предпочтения > Функции ЕдиногоАгента).
3 При поддержке Версия ЕдиногоАгента 1.323+ Файловые регионы не поддерживаются.
Извлечение данных из исходящих HTTP-запросов
| Агент | Функция Единого-Агента | Мини-мальная версия | Поддер-живаемые технологии | Мини-мальная версия | Сжатое тело | Полное тело | Мини-мальная версия | Сжатое тело | Полное тело |
|---|---|---|---|---|---|---|---|---|---|
| Обеспечение возможности регистрации событий (захват событий) | Обеспечение возможности регистрации событий (захват событий) | Обеспечение возможности регистрации событий (захват событий) | application/ json (захват полезной нагрузки) | application/ json (захват полезной нагрузки) | application/ json (захват полезной нагрузки) | Заголовок: XML (захват полезной нагрузки) 1 | Заголовок: XML (захват полезной нагрузки) 1 | Заголовок: XML (захват полезной нагрузки) 1 | |
| Webserver | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д |
| .NET | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д |
| Java | Java Business Events (outgoing HTTP) | 1.297+ | HTTP Clients
|
1.297+ | Да | Да | 1.297+ | Да | Да |
| Node.js | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д |
| Golang | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д | н/д |
Выявление вариантов
Эта функция доступна для Версии ЕдиногоАгента 1.309+ Для Webserver, .NET и Java. Для всех остальных технологий используйте таблицу поддержки технологий (выше).
Определите, как следует обрабатывать входящие бизнес-события в зависимости от их типа содержимого.
Чтобы получить доступ к настройкам по умолчанию, найдите Capturing variants и выберите их.
| Content-type | Parser |
|---|---|
| */json | JSON |
| */xml | XML |
| application/x-www-form-urlencoded | URL encoded |
| text/plain | Text |
Эти настройки применяются на глобальном уровне и, следовательно, используются для всех развернутых агентов на поддерживаемых технологиях.
Настройка источников бизнес-событий в ЕдиномАгенте
Версия ЕдиногоАгента 1.253+
Настройка источников бизнес-событий в ЕдиномАгенте
- Перейдите в Настройки > Наблюдаемость бизнеса > Источники бизнес-событий ЕдиногоАгента.
- Перейдите на вкладку «Входящие» или «Исходящие» .
- Выберите Добавить новое правило захвата и дайте ему имя.
- Выберите Добавить триггер, чтобы определить условие, которое будет запускать бизнес-событие.
Определите источник данных для вашего триггера, например, тело запроса, путь или заголовок HTTP. Затем выберите оператор и задайте значение. Это позволит вам сопоставить содержимое, полученное из источника, с заданным вами значением. Когда ЕдиныйАгент совпадет с триггером, будет сгенерировано бизнес-событие.- В сводке отображается все правило срабатывания (например,
Request - Path starts with '/api/trade/BuyAssets). - По умолчанию значение не чувствительно к регистру. Включите параметр «Чувствительность к регистру», если хотите, чтобы ваш триггер учитывал регистр исходного значения.
- Триггеры связаны между собой логическим образом в рамках правила
AND; если вы зададите несколько триггеров, для регистрации бизнес-события необходимо, чтобы сработали все триггера. - Первое правило сопоставления выполняется для каждого ЕдиногоАгента для каждого запроса.
- Мы рекомендуем устанавливать конкретные триггеры. Если триггер слишком общий и приводит к множеству одинаковых совпадений правил, вы получите несколько бизнес-событий. Например, если у вас есть условие триггера
contains api, и терминapiиспользуется во многих ваших приложениях, данные могут быть получены не там, где должны быть. Не создавайте триггеры, значение которых просто равно нулю/; это может привести к перегрузке и завершению работы вашей среды приложения.
- В сводке отображается все правило срабатывания (например,
- Выберите источник и значение поставщика событий.
Здесь описывается источник события, напримерwww.easytrade.com. Источником данных для этого поля может быть фиксированное значение, которое вы указываете, или оно может быть извлечено из события. - Выберите источник типа события и значение.
Это описывает тип события, отправляемого поставщиком событий, напримерAsset purchase, . НеобязательноВыберите источник и значение категории события , чтобы добавить полезный контекст к событию (например, укажите название фондовой биржиNASDAQ).
На этом этапе завершается настройка бизнес-события, которое будет генерироваться каждый раз, когда срабатывают критерии запуска. Этого может быть достаточно, если вам нужно только подсчитать количество совпадающих событий (например, чтобы ответить на вопрос о количестве совершенных покупок активов). Однако в большинстве случаев вам потребуется добавить атрибуты события для более детального анализа (описано на следующем шаге). Атрибуты — это поля данных, извлекаемые из JSON или XML-данных события.- Выберите «Добавить поле данных» в разделе «Данные события». Укажите имя поля, а затем источник данных и значение из полезной нагрузки JSON или XML. Это описывает пару «атрибут-значение», которая будет связана с событием, например
accountId,amount,instrumentIdилиprice. Добавление таких пар может помочь вам ответить на более сложные вопросы, например, сколько учетных записей приобрели определенный актив, какие активы приобретаются чаще всего или какие учетные записи совершают самые крупные покупки активов. - Выберите «Сохранить изменения».
- Убедитесь, что для этого правила установлено значение «Включено».
Пример JSON-файла запроса на покупку актива
| {
"accountId":6, "amount":10, "instrumentId":1, "price":157.025 } |
Правила захвата ЕдиногоАгента также можно определять на уровне хоста или группы хостов, чтобы ограничить область захвата.
Пример извлечения данных из JSON-данных
Пример JSON-файла с полезной нагрузкой запроса для ЕдиногоАгента.
- URL-адрес запроса —
example.dynatrace.com/api?action=addItems - Заголовки запроса
Accept—*/*Accept-Encoding—gzip, deflateAccept-Language—en-US,en;q=0.9Connection—keep-aliveContent-Length—64Content-Type—application/json
- Запрос полезной нагрузки
| {
"time":"2022-03-12T12:16:36.5881611+00:00", "transactionId":"1748-2b59-5c78-9c75-f500-274a-88f5-7965", "user":{ "user.id":"1684588", "userName":"johndoe", "name":"John", "surname":"Doe", "email":"me@johndoe.one" }, "order":{ "order.id":"58449798", "retailer":{ "id":"558", "name":"HappyShop" }, "amount":240.44, "currency":"usd", "tags":[ "fancy", "modern", "classic", "vintage" ], "items":[ { "itemId":"674", "price":175.99, "productName":"Product A", "productCategory":"Furniture", "quantity":1 }, { "itemId":48, "price":12.89, "productName":"Product Z", "productCategory":"Decoration", "quantity":5 } ] } } |
В таблице ниже приведены дополнительные примеры извлечения данных из JSON-данных.
| Название поля | Источник | Путь | Результат | Описание |
|---|---|---|---|---|
| transactionId | Request – Body | transactionId | 1748-2b59-5c78-9c75-f500-274a-88f5-7965 | Фиксирует атрибут верхнего уровня. |
| userName | Request – Body | user.userName | johndoe | Фиксирует вложенный атрибут. |
| priceOfItems | Request – Body | items.0.price | 175.99 | Захватывает атрибут первого элемента массива. |
| Last tag | Request – Body | order.tags.-1 | Vintage | Захватывает последний элемент массива. |
| Second-last tag | Request – Body | order.tags.-2 | Classic | Захватывает предпоследний элемент массива. |
| FullBody | Request – Body | * | The entire body as a string | Захватывает всё тело запроса. |
Примеры извлечения данных из XML-данных
Извлечение данных из XML-файлов осуществляется с использованием того же синтаксиса, что и для JSON.
Пример 1: Извлечение атрибутов и значений из базового XML-файла.
| <LogoutRequest id=”102030AF”>
<accountId>100</accountId> </LogoutRequest> |
| Название поля | Источник | Путь | Результат | Описание |
|---|---|---|---|---|
| LogoutRequest id | Request – Body | LogoutRequest.@id | 102030AF | Перехватывает атрибут XML-тега. |
| accountId | Request – Body | LogoutRequest.accountId | 100 | Захватывает значение XML-тега. |
Пример 2: Извлечение атрибутов и значений из XML с использованием пространств имен.
| <?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <Tagh1 xmlns="http://tempuri.org/"> <Tagh2 cusType="A" xmlns:a="http://schemas.datacontract.org/ex" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <a:Code i:nil="true" /> <a:Name>MyCustomer1</a:Name> <a:TotalValue>45</a:TotalValue> </Tagh2> </Tagh1> </s:Body> </s:Envelope> |
| Название поля | Источник | Путь | Результат | Описание |
|---|---|---|---|---|
| CustomerName | Request – Body | s:Envelope.s:Body.Tagh1.Tagh2.a:Name | MyCustomer1 | Захватывает значение XML-тега. |
| CustomerType | Request – Body | s:Envelope.s:Body.Tagh1.Tagh2.@cusType | A | Захватывает значение атрибута XML-тега. |
Примеры сбора данных из запросов и ответов
Доступна функция захвата данных из запросов и ответов как в формате JSON, так и в формате XML.
В таблице ниже приведены примеры извлечения данных из запросов, основанные на приведенном выше примере с JSON-данными.
| Название поля | Источник | Путь | Результат | Описание |
|---|---|---|---|---|
| ContentType | Request – HTTP Header | Content-Type | application/json | Перехватывает определённый заголовок запроса. |
| Action | Request – Query String parameters | action | addItems | Захватывает определенный параметр строки запроса. |
Пример захвата заголовка с помощью подстановочного знака.
- Название поля —
RequestHeaders - Источник — Запрос — HTTP-заголовок
- Путь —
* - Описание — Захват всех атрибутов заголовка
- Результат — все атрибуты заголовка в виде строки, разделенные пробелами.
Пример захвата строки запроса с использованием подстановочных символов.
- Название поля —
QueryParameters - Источник — Запрос — Параметры строки запроса
- Путь —
* - Описание — Захват всех параметров строки запроса
- Результат — все параметры строки запроса представлены в виде строки, совместимой с JSON.