Модули платформы / Наблюдение за приложением/ Службы / Обнаружение и присвоение имени / Типы служб / Определение пользовательских служб
Если ваши службы приложений не основаны на стандартных технологиях, они могут быть не распознаны в готовом виде. Вы можете отслеживать эти технологии, но вам нужно будет определить их как специальные службы с конкретными точками входа в службы. Другой вариант использования пользовательских служб — это микросервисы, которые используются более крупным приложением и не доступны через коммуникационные технологии.
Ключ-АСТРОМ позволяет вам определить любой метод, класс или интерфейс в качестве точки входа в службу, подлежащую мониторингу.
Пользовательская служба — это служба, в которой в качестве точки входа используется определенный вручную метод, класс или интерфейс.
Вы можете определить собственные службы для Java, .NET и PHP. Каждая пользовательская служба может содержать несколько точек входа.
Точками входа для вашего пользовательской службы могут быть методы определенного класса или реализации интерфейса. Каждый нерекурсивный вызов такого метода представляет собой один запрос к вашей пользовательской службе.
Диссоциированные транзакции
Если транзакции не связаны, то создание кастомной службы не поможет их связать. Пользовательская служба создаст новую точку входа.
Делегирование метода
ЕдиныйАгент понимает концепцию делегирования методов и записывает только первый вызов в цепочке делегирования. Например, если у вас есть несколько методов, вызывающих друг друга, вы можете безопасно пометить все эти методы как точки входа — случаи, когда один метод напрямую вызывает другой, записываются как отдельные запросы.
Подавление делегирования
ЕдиныйАгент подавляет делегирование методов для каждой службы . То есть любые вызовы между двумя методами одной службы не записываются. Если вам необходимо перехватывать такие вызовы, вам необходимо создать для этого отдельную службу.
Службы Java и .NET
Для Java и .NET вы можете использовать поиск для выбора точки входа и методов или указать их вручную. Чтобы создать новую пользовательскую службу Java или .NET:
Поиск точки входа
- В меню Ключ-АСТРОМ выберите «Настройки» > «Обнаружение служб» > «Обнаружение специальных служб» ("Settings" - "Service Detection" - "Custom Service Detection") .
- Выполните одно из следующих действий:
- Java Откройте вкладку «Службы Java» и выберите «Определить службы Java» .
- .NET Откройте вкладку «Службы .NET» и выберите «Определить службы .NET» .
- Дайте вашей службе осмысленное имя.
- Выберите «Найти точку входа» .
- Найдите и выберите группу процессов, содержащую вашу точку входа.
- Выберите процесс, содержащий вашу точку входа, и нажмите «Продолжить» .
- Найдите класс, который вы хотите инструментировать. Введите имя или часть имени, чтобы найти его.
- Выберите необходимый класс и нажмите «Продолжить» .
- Определите, как вы хотите инструментировать класс. У вас есть два варианта:
- Используйте выбранный класс только для инструментирования методов выбранного класса.
- Используйте реализованный интерфейс или суперкласс для инструментирования методов в любом интерфейсе или суперклассе в иерархии классов. В таких случаях выберите «Загрузить наследование» , чтобы загрузить все доступные суперклассы и интерфейсы, а затем выберите тот, который вам нужен.
- Выберите методы, которые вы хотите инструментировать, а затем нажмите «Готово» . На странице «Определение пользовательской службы» отображаются вновь добавленные точка входа и методы.
- При необходимости добавьте больше точек входа.
- При необходимости ограничьте новую пользовательскую службу определенными группами процессов. См. раздел «Ограничение пользовательской службы определенными группами процессов» ниже.
- Просмотрите точку входа и методы, которые необходимо инструментировать.
- В правом нижнем углу страницы выберите «Сохранить» .
Указание точки входа вручную
- В меню Ключ-АСТРОМ выберите «Настройки» > «Обнаружение служб» > «Обнаружение специальных служб»("Settings" - "Service Detection" - "Custom Service Detection") .
- Выполните одно из следующих действий:
- Java Откройте вкладку «Службы Java» и выберите «Определить службы Java» .
- .NET Откройте вкладку «Службы .NET» и выберите «Определить службы .NET» .
- Дайте вашему сервису осмысленное имя.
- Выберите «Определить точку входа вручную» .
- В поле «Полный класс» введите имя класса, содержащего методы, которые вы хотите инструментировать.
- Укажите методы, которые будут инструментироваться одним из двух способов:
- Введите полное имя метода вручную.
- Найдите методы в классе и выберите их:
- Выберите «Поиск методов» .
- Выберите группу процессов, содержащую вашу точку входа.
- Выберите методы, которые вы хотите инструментировать, а затем нажмите «Готово» .
- При необходимости добавьте дополнительные методы.
- При необходимости добавьте больше точек входа.
- Просмотрите точку входа и методы, которые необходимо инструментировать.
- При необходимости ограничьте новую пользовательскую службу определенными группами процессов. См. раздел «Ограничить пользовательскую службу группами процессов» ниже.
- В правом нижнем углу страницы выберите «Сохранить» .
Неподдерживаемый сценарий
Обратите внимание, что некоторые сценарии не работают в Ключ-АСТРОМ, например сценарий «Queue/Worker». Все, что помещается в java.util.Queue
другой рабочий поток и обрабатывается им, не может быть просмотрено в Pure Path.
PHP-службы
Для PHP вы можете использовать поиск для выбора точки входа и методов или указать их вручную. Чтобы создать новый пользовательский сервис PHP:
Поиск точки входа
- В меню Ключ-АСТРОМ выберите «Настройки» > «Обнаружение служб» > «Обнаружение специальных служб» ("Settings" - "Service Detection" - "Custom Service Detection").
- Выберите вкладку «Службы PHP» и выберите «Определить службу PHP» .
- Дайте вашему сервису осмысленное имя.
- Выберите Найти точку входа .
- Найдите и выберите группу процессов, содержащую вашу точку входа.
- Выберите процесс, содержащий вашу точку входа, а затем нажмите «Продолжить» .
- Найдите класс, который вы хотите инструментировать. Введите имя или часть имени, чтобы найти его.
- Выберите необходимый класс и нажмите «Продолжить».
- Выберите методы, которые вы хотите инструментировать, а затем нажмите «Готово» . На странице «Определение пользовательской службы» отображаются вновь добавленные точка входа и методы.
- При необходимости добавьте больше точек входа.
- При необходимости ограничьте новую пользовательскую службу определенными группами процессов. См. раздел «Ограничение пользовательской службы определенными группами процессов» ниже.
- Просмотрите точку входа и методы, которые необходимо инструментировать.
- В правом нижнем углу страницы выберите «Сохранить» .
Указание точки входа вручную
- В меню Ключ-АСТРОМ выберите «Настройки» > «Обнаружение служб» > «Обнаружение специальных служб» ("Settings" - "Service Detection" - "Custom Service Detection" .
- Выберите вкладку «Службы PHP» , а затем выберите «Определить службу PHP» .
- Дайте вашему сервису осмысленное имя.
- Выберите «Определить точку входа вручную» .
- В поле «Имя файла» введите полный путь к файлу PHP, содержащему методы, которые вы хотите инструментировать.
- В поле «Полное имя» класса введите имя класса, содержащего методы, которые вы хотите инструментировать.
- В поле «Методы» введите имя метода, который вы хотите инструментировать.
- При необходимости выберите «Добавить метод вручную» и укажите дополнительные методы для инструментирования.
- При необходимости ограничьте новую пользовательскую службу определенными группами процессов. См. раздел «Ограничение пользовательской службы определенными группами процессов» ниже.
- После добавления всех методов выберите «Сохранить» в правом верхнем углу страницы.
Службы Go
Чтобы создать новый пользовательскую службу Go через пользовательский интерфейс или API, см. раздел Пользовательские сервисы Go .
Приоритет пользовательских служб
Если у вас определено несколько пользовательских служб, оценка идет сверху вниз с применением первого правила соответствия. Если по какой-то причине у вас есть один и тот же класс и метод, определенные в нескольких пользовательских службах, обязательно расставьте приоритеты служб соответствующим образом.
HTTP Заголовок
Для HTTP-запросов Ключ-АСТРОМ использует дополнительный HTTP-заголовок, предназначенный для связывания транзакций. Этот заголовок устанавливается ЕдинымАгентом между веб-серверами, чтобы связать их друг с другом. Распределенные трассировки в значительной степени опирается на такие заголовки, поэтому важно гарантировать, что сетевые компоненты, такие как межсетевые экраны и маршрутизаторы, никогда не настраиваются на удаление этих заголовков. Неправильная настройка сетевых компонентов потенциально может привести к нарушению чистых путей. Кроме того, некоторые сетевые компоненты полностью отключают такие запросы (и выдают ошибку HTTP 403), поскольку дополнительный заголовок может считаться небезопасным. В таких случаях необходимо настроить эти компоненты на прием заголовка.
Редактирование пользовательской службы
Вы можете редактировать любую пользовательскую службу в любое время. Чтобы изменения вступили в силу, необходимо перезапустить затронутые процессы, если только для Java и PHP не активированы обновления в реальном времени. Для .NET необходимо перезапустить процесс.
Чтобы отредактировать пользовательскую службу, нажмите кнопку «Изменить» услуги в списке услуг.
Вы можете активировать/деактивировать существующие точки входа, добавлять/удалять точки входа, добавлять/удалять методы в точках входа.
Вы также можете ограничить пользовательскую службу определенными группами процессов. См. раздел «Ограничение пользовательской службы определенными группами процессов» ниже.
Обновления в реальном времени
Обновления пользовательских служб Java и PHP можно применять практически в реальном времени, без перезапуска процессов. Чтобы активировать эту функцию, перейдите в «Настройки » > «Обнаружение служб на стороне сервера» > «Глубокий мониторинг » > «Обновления служб Java и PHP в реальном времени» и включите специальные переключатели.
Обратите внимание, что при обновлении в реальном времени вам не нужно перезапускать процессы; однако такие обновления могут вызвать скачки нагрузки на ЦП при развертывании.
Ограничение пользовательской службы определенными группами процессов
Вы можете ограничить использование любой специальной службы определенными группами процессов. Правила специальных служб будут применяться только к указанным группам процессов и будут игнорироваться в других группах процессов. Вы можете ограничить пользовательскую службу во время создания или отредактировать ее позже.
Чтобы ограничить пользовательскую службу:
- На странице «Определить настраиваемую службу» или «Изменить службу» разверните «При необходимости ограничить правила настраиваемой службы группами процессов» .
- Выберите «Добавить группу процессов» .
- Выберите группу процессов, к которой вы хотите применить специальную службу.
- Выберите «Добавить» .
- В правом нижнем углу страницы «Определить специальную услугу или «Изменить услугу» выберите «Сохранить» .