Получение атрибутов запроса на основе аргументов метода
Применение Ключ-АСТРОМ / Атрибуты запроса / Получение атрибутов запроса на основе аргументов метода
Создание атрибутов запроса
Чтобы создать атрибут запроса на основе аргумента метода
- В меню Ключ-АСТРОМ выберите Настройки > Мониторинг серверных сервисов > Атрибуты запроса.
- Нажмите на кнопку Определить новый атрибут запроса .
- Укажите Имя атрибута запроса. Вы можете переименовать атрибут в любой момент в будущем.
- Нажмите на кнопку Добавить новый источник данных .
- необязательно Определите область действия атрибута запроса.
- В списке Источник атрибута запроса выберите параметры метода Java , параметры метода .NET или параметры метода PHP .
- Нажмите кнопку Выберите источник метода, чтобы открыть мастер классов. Здесь вы можете выбрать класс метода, для аргумента которого вы хотите установить атрибут.
- Выберите группу процессов, содержащую интересующие вас классы или интерфейсы, и нажмите Продолжить.
- Найдите класс, содержащий интересующий вас метод. Начните вводить имя класса и нажмите кнопку Поиск. Заполнение списка может занять несколько секунд.
- Выберите класс из отображаемого списка. Если в списке нет искомого класса, уточните строку поиска.
- Наконец, выберите один или несколько методов, параметры которых вы хотите получить, а затем нажмите Завершить.
- Выбранные вами методы перечислены в правиле захвата аргументов метода (см. ниже). Для каждого метода в списке в разделе Capture выберите аргумент или возвращаемое значение метода, который вы хотите захватить.
- Вы всегда можете расширить список или удалить методы позже. После сохранения перезапустите процессы, к которым применяется это правило.
Примечания
- Помимо аргументов и возвращаемых значений любого метода, вы также можете фиксировать количество вхождений. При регистрации событий следует использовать только одно правило метода. Ключ-АСТРОМ подсчитает количество вызовов этого метода в рамках одного запроса.
- Вы можете захватывать не примитивные и не строковые объекты. Однако это может привести к увеличению нагрузки на систему. Некоторые объекты могут непреднамеренно изменить свое состояние в зависимости от вызванного метода, поэтому используйте эту опцию с осторожностью.
- Базовые классы Java (например,
javax.
иjava.
) или классы .NET (например,System.
) выдают предупреждение Not Instrumentable. Эти классы использовать нельзя, поскольку их инструментирование означало бы инструментирование значительной части вашей среды.
Что дальше?
Как только ваши службы начнут вызывать соответствующие методы, вы должны увидеть атрибут запроса на странице распределенных трассировок.
Древовидное представление на уровне кода также содержит эти методы. В этом представлении указывается значение каждого конкретного метода — в случае, если метод вызывается несколько раз с разными значениями.
Постобработка
В большинстве случаев полученное значение будет содержать то, что вы ищете. Однако вам может не потребоваться полное значение или даже все значения. С помощью постобработки вы можете манипулировать полученным значением.
Разверните параметр Дальнейшее ограничение или обработка захваченных параметров, чтобы увидеть этапы обработки. Шаги выполняются в представленном порядке — каждый шаг применяется к результату предыдущего шага.
Вам не обязательно применять все шаги. Каждый шаг становится активным, как только вы укажете для него значение или выберете флажок.
Шаг 1 позволяет вам извлечь что-то из полученной строки на основе символов-разделителей.
Шаг 2 позволяет разделить захваченное значение на несколько значений на основе символа-разделителя.
Шаг 3 удаляет пробелы.
Шаг 4 позволяет отфильтровать полученные значения, которые не соответствуют заданному критерию.
Шаг 5 позволяет вам извлечь что-то из полученной строки на основе регулярного выражения.
Числовые значения и агрегаты
Возможно, вам захочется захватить аргумент метода, и метод будет вызываться несколько раз. Иногда необходимо только определенное значение. В других случаях вам может потребоваться только подсчитать выполнения или усреднить полученные значения. В пределах других значений рассматриваемый аргумент может быть сложным объектом, и вас действительно интересует только один аспект объекта.
Чтобы справиться с такими ситуациями, вы можете использовать параметры Тип данных и Агрегация по запросу при определении или настройке атрибута запроса.
Агрегации
Агрегация применяется не только в пределах одного источника данных (например, правила метода), но также и для нескольких источников данных. Порядок определяется:
- Порядок правил источника данных
- Порядок правил метода в источнике данных метода
- Порядок выполнения метода в вашем приложении (когда метод выполняется несколько раз)
Текстовые атрибуты
Для текстовых атрибутов вы можете выбрать один из следующих вариантов:
- Первое значение
- Последнее значение
- Все значения разные
Параметр Набор уникальных значений позволяет использовать для фильтрации все уникальные значения, найденные в запросе. Например, если запрос фиксирует атрибут запроса Product
и для этого атрибута фиксируются два значения, Book
и Video
. Вы можете фильтровать по любому из этих значений, чтобы найти соответствующий запрос.
Числовые атрибуты
Для числовых значений вы можете использовать следующие агрегаты:
- Наименьшее из числовых значений
- Наибольшее из числовых значений
- Среднее значение числовых значений
- Сумма числовых значений
- Количество значений
- Количество разных значений
Если вы выберете один из этих вариантов, тип данных автоматически изменится на целое число. Эти настройки полезны, когда вы что-то считаете.
Глубокий доступ к объектам
Значение, которое вас интересует, может быть доступно не как простой аргумент, а как часть сложного объекта аргумента или даже как переменная-член класса, который вы просматриваете. К таким значениям все еще можно получить доступ. Вы можете получить доступ не только к значениям аргументов и возвращаемым значениям, но и к самому объекту. Если элемент, который необходимо захватить (будь то аргумент или объект), является сложным объектом, у вас есть возможность определить метод (цепочку), обеспечивающий глубокий доступ к объекту. В приведенном ниже примере используется метод getBookingCode
. Вы даже можете выполнить цепочку, например, getBookingCode().getCustomerCode()
.
Функция глубокого доступа к объектам добавляет в ваше приложение новый код, который необходимо выполнить. Таким образом, это может изменить состояние вашего приложения или повлиять на производительность. Используйте эту функцию с осторожностью.
Ограничения
К глубокому доступу к объектам применяются следующие ограничения:
- Вы можете получить доступ только к одному полю одновременно. Если вы обращаетесь к полю, оно должно находиться в начале цепочки.
- Параметры метода не допускаются.
- Вы должны использовать действительную нотацию Java, .NET или PHP.