Поделиться через


Анализ журналов и метрик на основе параметров диагностики

Примечание.

Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.

Эта статья применима к: ✔️ Java ✔️ C#

Эта статья относится к: ✔️ Basic/Standard ✔️ Enterprise

В этой статье показано, как анализировать диагностические данные в Azure Spring Apps.

Используя функции диагностики Azure Spring Apps, можно анализировать журналы и метрики с помощью любой из следующих служб:

  • Используйте Azure Log Analytics. При экспорте журналов в Log Analytics возникает задержка.
  • Сохраните журналы в учетную запись хранения для аудита или проверки вручную. Можно указать время хранения (в днях).
  • Потоковая передача журнала в концентратор событий для приема сторонней службой или пользовательским аналитическим решением.

Выберите категорию журнала и категорию метрики, которые требуется отслеживать.

Совет

Если вы просто хотите выполнять потоковую передачу журналов, можно использовать команду Azure CLI az spring app logs.

Журналы

Журнал Description
ApplicationConsole Журнал консоли всех клиентских приложений.
SystemLogs Доступные LogType значения: ConfigServer(только для базовых и стандартных ServiceRegistry), (все планы ApiPortal), (только для корпоративного плана), ApplicationConfigurationService(только для корпоративного плана), SpringCloudGateway (только для корпоративного плана) и SpringCloudGatewayOperator (только для корпоративного плана).
IngressLogs Журналы входящего трафика всех приложений клиента и только журналы доступа.
BuildLogs Журналы сборки всех клиентских приложений для каждого этапа сборки.

Примечание.

Чтобы защитить приложение от потенциальной утечки учетных данных, все содержимое журнала с учетными данными или другими конфиденциальными сведениями маскируются ***. Например, любое содержимое журнала со следующими шаблонами обрабатывается как конфиденциальная информация, а соответствующие значения маскируются:

  • dbpass, password, , secretkeysigи signature за которым следует : или .= Эти шаблоны обычно отображаются в параметрах URL-адреса и дампах полезных данных. Например, https://somestorage.blob.core.windows.net?sv=2021-08-06&st=2024-04-30T10%3A01%3A19Z&se=2024-04-30T11%3A01%3A19Z&sr=b&sp=r&sig=xxxxxxxxxxxxxx становится https://somestorage.blob.core.windows.net?sv=2021-08-06&st=2024-04-30T10%3A01%3A19Z&se=2024-04-30T11%3A01%3A19Z&sr=b&sp=r&sig=***
  • Кодированные строки токена JWT в формате: eyJxxxxxx.eyJxxxxxx

Если в журналах находятся маскированные значения, обязательно обновите код приложения, чтобы устранить утечку учетных данных.

Метрики

Полные списки метрик см. в разделе Параметры пользовательских метрик в статье Метрики для Azure Spring Apps.

Перед началом работы, включите одну из этих служб для получения данных. Дополнительные сведения о настройке Log Analytics см. в разделе Начало работы со службой Log Analytics в Azure Monitor.

Настройка параметров диагностики

  1. Перейдите к экземпляру своей службы Azure Spring Apps на портале Azure.

  2. Выберите параметры диагностики, а затем нажмите кнопку Добавить параметр диагностики.

  3. Введите имя для параметра, а затем выберите назначение для отправки журналов. Можно выбрать любое сочетание следующих параметров:

    • Архивировать в учетной записи хранения.
    • Передать в концентратор событий.
    • Отправить в Log Analytics.
    • Отправка в партнерское решение
  4. Выберите категорию журнала и метрики, которые требуется отслеживать, и укажите время хранения (в днях). Время хранения применяется только к учетной записи хранения.

  5. Выберите Сохранить.

Примечание.

Между передачей журналов и метрик и их появлением в учетной записи хранения, в концентраторе событий или Log Analytics может пройти до 15 минут. Если экземпляр Azure Spring Apps удален или перемещен, операция не будет выполняться каскадно для ресурсов параметров диагностики. Ресурсы параметров диагностики следует удалить вручную перед операцией с их родительским экземпляром, то есть с экземпляром Azure Spring Apps. В противном случае, если новый экземпляр Azure Spring Apps подготовлен к работе с тем же ИД ресурса, что и удаленный, или если предыдущий экземпляр Azure Spring Apps перемещен обратно, предыдущие ресурсы параметров диагностики продолжают расширять его.

Просмотр журналов и метрик

Существуют различные методы просмотра журналов и метрик, описанные в следующих разделах.

Использование области журналов

  1. Перейдите к экземпляру своей службы Azure Spring Apps на портале Azure.

  2. Чтобы открыть панель Поиск по журналам, выберите Журналы.

  3. В поле поиска таблиц используйте один из следующих запросов:

    • Чтобы просмотреть журналы, введите запрос, например следующий пример:

      AppPlatformLogsforSpring
      | limit 50
      
    • Чтобы просмотреть метрики, введите запрос, например следующий пример:

      AzureMetrics
      | limit 50
      
  4. Чтобы просмотреть результат поиска, выберите Выполнить.

Использование Log Analytics

  1. На портале Azure на левой панели выберите Log Analytics.

  2. Выберите рабочую область Log Analytics, которая была выбрана при добавлении параметров диагностики.

  3. Чтобы открыть панель Поиск по журналам, выберите Журналы.

  4. В поле поиска таблиц используйте один из следующих запросов:

    • Чтобы просмотреть журналы, введите запрос, например следующий пример:

      AppPlatformLogsforSpring
      | limit 50
      
    • Чтобы просмотреть метрики, введите запрос, например следующий пример:

    AzureMetrics
    | limit 50
    
  5. Чтобы просмотреть результат поиска, выберите Выполнить.

  6. Журналы конкретного приложения или экземпляра можно найти, задав условие фильтра, как показано в следующем примере:

    AppPlatformLogsforSpring
    | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName"
    | limit 50
    

    Примечание.

    == учитывает регистр, а =~ — нет.

Дополнительные сведения о языке запросов, который используется в Log Analytics, см. в статье Запросы журналов Azure Monitor. Чтобы запросить все журналы Log Analytics из централизованного клиента, ознакомьтесь со статьей Azure Data Explorer.

Использование учетной записи хранения

  1. На портале Azure найдите Учетные записи хранения на левой панели навигации или в поле поиска.
  2. Выберите учетную запись хранения, выбранную при добавлении параметров диагностики.
  3. Чтобы открыть панель Контейнер BLOB-объектов, выберите BLOB-объекты.
  4. Чтобы просмотреть журналы приложений, найдите контейнер с именем insights-logs-applicationconsole.
  5. Чтобы просмотреть журналы метрик, найдите контейнер с именем insights-metrics-pt1m.

Дополнительные сведения об отправке диагностических сведений в учетную запись хранения см. в статье о хранении и просмотре данных диагностики в службе хранилища Azure.

Использование концентратора событий

  1. На портале Azure найдите Концентраторы событий на левой панели навигации или в поле поиска.

  2. Выполните поиск и выберите концентратор событий, выбранный при добавлении параметров диагностики.

  3. Чтобы открыть панель Список концентраторов событий, выберите Концентраторы событий.

  4. Чтобы просмотреть журналы приложений, найдите концентратор событий с именем insights-logs-applicationconsole.

  5. Чтобы просмотреть журналы метрик, найдите концентратор событий с именем insights-metrics-pt1m.

Дополнительные сведения об отправке диагностических сведений в концентратор событий см. в статье о потоковой передаче данных Диагностики Azure по критическому пути с помощью Центров событий.

Анализ журналов

Azure Log Analytics работает с подсистемой Kusto. Таким образом можно запрашивать журналы для анализа. Краткие сведения о запросах журналов с помощью Kusto см. в руководстве по Log Analytics.

Журналы приложений содержат важную информацию и подробные записи, относящиеся к работоспособности, производительности и многому другому. В следующих разделах приведены несколько простых запросов, которые помогут вам лучше понять текущее и предыдущее состояния приложения.

Отображение журналов приложений в Azure Spring Apps

Чтобы просмотреть список журналов приложений из Azure Spring Apps, отсортированный по времени, начиная с самых последних журналов, выполните следующий запрос:

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| sort by TimeGenerated desc

Отображение записей журналов, содержащих ошибки или исключения

Чтобы проверить несортированные записи журнала, в которых упоминается ошибка или исключение, выполните следующий запрос.

AppPlatformLogsforSpring
| project TimeGenerated , ServiceName , AppName , InstanceName , Log
| where Log contains "error" or Log contains "exception"

Этот запрос позволяет искать ошибки или менять условия запроса таким образом, чтобы находить конкретные исключения или коды ошибки.

Отображение количества ошибок и исключений, о которых сообщило приложение за последний час

Чтобы создать круговую диаграмму, отображающую количество ошибок и исключений, зарегистрированных приложением за последний час, выполните следующий запрос:

AppPlatformLogsforSpring
| where TimeGenerated > ago(1h)
| where Log contains "error" or Log contains "exception"
| summarize count_per_app = count() by AppName
| sort by count_per_app desc
| render piechart

Отображение записей журнала входящего трафика, содержащих определенный узел

Чтобы просмотреть записи журнала, созданные определенным узлом, выполните следующий запрос:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and Host == "ingress-asc.test.azuremicroservices.io"
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Используйте этот запрос для поиска ответа Status, RequestTime и других свойств журналов входящего трафика конкретного узла.

Отображение записей журнала входящего трафика для определенного идентификатора запроса

Чтобы просмотреть записи журнала по конкретному requestId значению <request_ID>, выполните следующий запрос:

AppPlatformIngressLogs
| where TimeGenerated > ago(1h) and ReqId == "<request_ID>"
| project TimeGenerated, RemoteIP, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Отображение записей журнала сборки по определенному приложению

Чтобы просмотреть записи журнала для конкретного приложения во время сборки, выполните следующий запрос:

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>"
| sort by TimeGenerated

Отображение записей журнала сборки для конкретного приложения на определенном этапе сборки

Чтобы просмотреть записи журнала для конкретного приложения на определенном этапе сборки, выполните следующий запрос. Замените заполнитель <app-name> именем своего приложения. Замените заполнитель <build-stage> одним из следующих значений, которые представляют этапы процесса сборки: prepare, detect, restore, analyze, build, export или completion.

AppPlatformBuildLogs
| where TimeGenerated > ago(1h) and PodName contains "<app-name>" and ContainerName == "<build-stage>"
| sort by TimeGenerated

Отображение журналов VMware Spring Cloud Gateway в плане enterprise

Чтобы просмотреть записи журнала для журналов VMware Spring Cloud Gateway в плане Enterprise, выполните следующий запрос:

AppPlatformSystemLogs 
| where LogType == "SpringCloudGateway"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Другой компонент, названный оператором Шлюза Spring Cloud, управляет жизненным циклом Шлюза Spring Cloud и маршрутов. Если вы столкнулись с проблемами с маршрутом, не внося в силу, проверьте журналы для этого компонента. Чтобы просмотреть записи журнала для оператора шлюза VMware Spring Cloud в плане Enterprise, выполните следующий запрос:

AppPlatformSystemLogs 
| where LogType == "SpringCloudGatewayOperator"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Отображение журнала конфигурации приложений для журналов Tanzu в плане Enterprise

Чтобы просмотреть записи журнала для службы конфигурации приложений для журналов Tanzu в плане Enterprise, выполните следующий запрос:

AppPlatformSystemLogs 
| where LogType == "ApplicationConfigurationService"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Отображение журналов реестра служб Tanzu в плане enterprise

Чтобы просмотреть записи журнала для журналов реестра служб Tanzu в плане Enterprise, выполните следующий запрос:

AppPlatformSystemLogs 
| where LogType == "ServiceRegistry"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Отображение журналов API для VMware Tanzu в плане Enterprise

Чтобы просмотреть записи журнала для портала API для журналов VMware Tanzu в плане Enterprise, выполните следующий запрос:

AppPlatformSystemLogs 
| where LogType == "ApiPortal"
| project TimeGenerated , LogType, Level , ServiceName , Thread , Stack , Log , _ResourceId 
| limit 100

Дополнительные сведения о запросах журналов приложений

Azure Monitor предоставляет широкую поддержку запросов журналов приложений с помощью Log Analytics. Дополнительные сведения об этой службе см. в статье Начало работы с запросами журналов Azure Monitor. Дополнительные сведения о создании запросов для анализа журналов приложений см. в статье об общих сведениях о запросах журналов в Azure Monitor.

Удобные точки входа в портал Azure

Выполните следующие действия, чтобы перейти на панель Log Analytics с предопределенными запросами:

  1. Перейдите на страницу "Обзор " для экземпляра службы Azure Spring Apps и выберите "Приложения " в области навигации.

  2. Найдите целевое приложение и выберите контекстное меню.

  3. Во всплывающем контекстном меню выберите "Просмотр журналов".

    Снимок экрана: портал Azure, на котором показана страница

    Это действие переходит к области Log Analytics с предопределенными запросами.

Существуют другие точки входа для просмотра журналов. Вы также можете найти кнопку "Просмотр журналов" для управляемых компонентов, таких как служба сборки и реестр служб.

Вопросы и ответы

Как преобразовать многострочные трассировки стека Java в однострочные?

Существует обходное решение для преобразования трассировок многострочного стека в одну строку. Можно изменить выходные данные журнала Java, чтобы переформатировать сообщения трассировки стека, заменив символы новой строки маркером. При использовании библиотеки Java Logback можно переформатировать сообщения трассировки стека, добавив %replace(%ex){'[\r\n]+', '\\n'}%nopex следующим образом:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                level: %level, message: "%logger{36}: %msg", exceptions: "%replace(%ex){'[\r\n]+', '\\n'}%nopex"%n
            </pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

Затем маркер можно заменить новыми символами в Log Analytics, как показано в следующем примере:

AppPlatformLogsforSpring
| extend Log = array_strcat(split(Log, '\\n'), '\n')

Вы можете использовать ту же стратегию для других библиотек журналов Java.

Следующие шаги