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


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

Note

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

Эта статья относится к следующему:✅ Java ✅ C#

Эта статья относится к следующему:✅ Базовый или стандартный корпоративный ✅

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

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

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

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

Tip

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

Logs

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

Note

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

  • dbpass, password, , keysecretsigи 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

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

Metrics

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

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

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

  1. На портале Azure перейдите к экземпляру Azure Spring Apps.

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

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

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

  5. Нажмите кнопку "Сохранить".

Note

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

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

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

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

  1. На портале Azure перейдите к экземпляру Azure Spring Apps.

  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
    

    Note

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

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

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

  1. На портале Azure найдите учетные записи хранения в левой панели навигации или поле поиска.
  2. Выберите учетную запись хранения, выбранную при добавлении параметров диагностики.
  3. Чтобы открыть панель контейнера 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

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

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

Чтобы просмотреть записи журнала для определенного 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, , restoreanalyzebuild, 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 с предопределенными запросами.

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

Часто задаваемые вопросы (FAQ)

Как преобразовать трассировки стека Java с несколькими строками в одну строку?

Существует обходное решение для преобразования трассировок многострочного стека в одну строку. Вы можете изменить выходные данные журнала Java на сообщения трассировки стека стека, заменив символы новой строки маркером. Если вы используете библиотеку Logback Java, вы можете переформатировать сообщения трассировки стека, добавив %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.

Дальнейшие шаги