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


Руководство. Начало работы с мониторингом и ведением журнала с помощью Logz.io для приложений Java, работающих в Azure

В этом руководстве показано, как настроить классическое приложение Java для отправки журналов в службу Logz.io для приема и анализа. Logz.io предоставляет полное решение для мониторинга на основе Elasticsearch/Logstash/Kibana (ELK) и Grafana.

В этом руководстве предполагается, что вы используете Log4J или Logback. Эти библиотеки являются двумя наиболее широко используемыми для ведения журнала в Java, поэтому руководство должно работать для большинства приложений, работающих в Azure. Если вы уже используете стек Elastic для мониторинга приложения Java, в этом руководстве показано, как перенастроить целевую конечную точку Logz.io.

В этом руководстве описано, как:

  • Отправка журналов из существующего приложения Java в Logz.io.
  • Отправка журналов диагностики и метрик из служб Azure в Logz.io.

Необходимые условия

Отправка журналов приложений Java в Logz.io

Сначала вы узнаете, как настроить приложение Java с маркером, который предоставляет доступ к вашей учетной записи Logz.io.

Получите токен доступа Logz.io

Чтобы получить токен, войдите в свою учетную запись Logz.io, нажмите на значок шестеренки в левом нижнем углу, затем выберите Параметры>Управление токенами и перейдите на вкладку Токены отправки данных. Скопируйте отображаемый токен доступа по умолчанию и URL-адрес прослушивателя , чтобы использовать их позже.

Установка и настройка библиотеки Logz.io для Log4J или Logback

Библиотека Java Logz.io доступна в Maven Central, поэтому ее можно добавить в конфигурацию приложения в качестве зависимости. Проверьте номер версии в Maven Central и используйте последнюю версию в следующих параметрах конфигурации.

Если вы используете Maven, добавьте в файл pom.xml следующую зависимость:

Log4J:

<dependency>
    <groupId>io.logz.log4j2</groupId>
    <artifactId>logzio-log4j2-appender</artifactId>
    <version>2.0.0</version>
</dependency>

Logback:

<dependency>
    <groupId>io.logz.logback</groupId>
    <artifactId>logzio-logback-appender</artifactId>
    <version>2.0.0</version>
</dependency>

Если вы используете Gradle, добавьте в скрипт сборки следующую зависимость:

Log4J:

implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'

Logback:

implementation 'io.logz.logback:logzio-logback-appender:2.0.0'

Затем обновите файл конфигурации Log4J или Logback:

Log4J:

<Appenders>
    <LogzioAppender name="Logzio">
        <logzioToken><your-logz-io-token></logzioToken>
        <logzioType>java</logzioType>
        <logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
    </LogzioAppender>
</Appenders>

<Loggers>
    <Root level="info">
        <AppenderRef ref="Logzio"/>
    </Root>
</Loggers>

logback:

<configuration>
    <!-- Use shutdownHook so that we can close gracefully and finish the log drain -->
    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
    <appender name="LogzioLogbackAppender" class="io.logz.logback.LogzioLogbackAppender">
        <token><your-logz-io-token></token>
        <logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
        <logzioType>java</logzioType>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <root level="debug">
        <appender-ref ref="LogzioLogbackAppender"/>
    </root>
</configuration>

Замените плейсхолдер <your-logz-io-token> на ваш токен доступа, а плейсхолдер <your-logz-io-listener-host> — на хост прослушивателя вашего региона (например, listener.logz.io). Для получения дополнительной информации о определении региона вашей учетной записи см. в разделе Регион учетной записи.

Элемент logzioType относится к логическому полю в Elasticsearch, который используется для разделения разных документов друг от друга. Важно правильно настроить этот параметр, чтобы получить большую часть Logz.io.

Logz.io «тип» — это ваш формат журнала (например, Apache, NGinx, MySQL), а не источник (например, server1, server2, server3). В этом руководстве мы вызываем тип java, так как мы настраиваем приложения Java, и мы ожидаем, что эти приложения имеют одинаковый формат.

Для расширенного использования можно сгруппировать приложения Java в разные типы, которые имеют собственный формат журнала (можно настроить с помощью Log4J и Logback). Например, можно использовать тип spring-boot-monolith и тип spring-boot-microservice.

Проверка конфигурации и анализа журналов на Logz.io

После настройки библиотеки Logz.io приложение должно отправлять журналы непосредственно в него. Чтобы проверить правильную работу всего, перейдите в консоль Logz.io, выберите вкладку Журналы>Живой хвост, а затем выберите запустить. Вы увидите следующее сообщение, указывающее, что подключение работает:

Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...

Затем запустите приложение или используйте его для создания некоторых журналов. Журналы должны отображаться непосредственно на экране. Например, ниже приведены первые сообщения о запуске приложения Spring Boot:

2019-09-19 12:54:40.685Z Starting JavaApp on javaapp-default-9-5cfcb8797f-dfp46 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2019-09-19 12:54:40.686Z The following profiles are active: prod
2019-09-19 12:54:42.052Z Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-19 12:54:42.169Z Finished Spring Data repository scanning in 103ms. Found 6 repository interfaces.
2019-09-19 12:54:43.426Z Bean 'spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties' of type [org.springframework.boot.autoconfigure.task.TaskExecutionProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

Теперь, когда Logz.io обрабатывает журналы, вы можете воспользоваться всеми службами платформы.

Отправка данных служб Azure в Logz.io

Затем вы узнаете, как отправлять журналы и метрики из ресурсов Azure в Logz.io.

Развертывание шаблона

Первым шагом является развертывание шаблона интеграции Azure Logz.io. Интеграция основана на готовом шаблоне развертывания Azure, который настраивает все необходимые стандартные блоки конвейера. Шаблон создает пространство имен Концентратора событий, Концентратор событий, два блоба хранилища и все необходимые разрешения и подключения. Ресурсы, настроенные автоматизированным развертыванием, могут собирать данные для одного региона Azure и отправлять эти данные в Logz.io.

Найдите кнопку "Развертывание в Azure", отображаемую на первом шагерепозитория.

При выборе развертывания в Azureпоявится страница пользовательского развертывания на портале Azure со списком предварительно заполненных полей.

Вы можете оставить большинство полей as-is но обязательно введите следующие параметры:

  • группу ресурсов: выберите существующую группу или создайте новую.
  • Logzio Logs/Metrics Host: Введите URL-адрес прослушивателя Logz.io. Если вы не знаете, что это за URL-адрес, проверьте URL-адрес входа. Если это app.logz.io, используйте listener.logz.io (который является параметром по умолчанию). Если это app-eu.logz.io, используйте listener-eu.logz.io.
  • Logzio Logs/Metrics token: введите токен учетной записи Logz.io, в которую нужно отправить журналы или метрики Azure. Этот маркер можно найти на странице учетной записи в пользовательском интерфейсе Logz.io.

Примите условия в нижней части страницы и выберите Покупка. Затем Azure развертывает шаблон, который может занять минуту или два. В конечном итоге появится сообщение "Развертывание выполнено успешно" в верхней части портала.

Вы можете посетить определенную группу ресурсов, чтобы просмотреть развернутые ресурсы.

Чтобы настроить logzio-azure-serverless для резервного копирования данных в BLOB-хранилище Azure, см. статью Отправка журналов действий Azure.

Трансляция журналов и метрик Azure в Logz.io

Теперь, когда вы развернули шаблон интеграции, необходимо настроить Azure для потоковой передачи диагностических данных в только что развернутый концентратор событий. Когда данные входят в Концентратор событий, приложение-функция перенаправит эти данные в Logz.io.

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

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

    Панель параметров диагностики

  3. Присвойте вашим настройкам диагностики название.

  4. Выберите Stream для концентратора событий, затем выберите Настроить, чтобы открыть панель Выберите концентратор событий.

  5. Выберите концентратор событий:

    • Выбор пространства имен концентратора событий: выберите пространство имен, которое начинается с Logzio (например,LogzioNS6nvkqdcci10p).
    • Выберите имя концентратора событий: для журналов выберите insights-operational-logs, а для метрик выберите insights-operational-metrics.
    • Выберите имя политики концентратора событий: выберите LogzioSharedAccessKey.
  6. Нажмите кнопку ОК, чтобы вернуться к параметрам диагностики панели.

  7. В разделе "Журнал" выберите данные, которые требуется передавать, а затем выберите Сохранить.

Выбранные данные теперь передаются в Концентратор событий.

Визуализация данных

Затем предоставьте своим данным некоторое время, чтобы поступить из вашей системы в Logz.io, а затем откройте Kibana. Вы должны увидеть данные (с типом eventhub), заполняющие панели мониторинга. Дополнительные сведения о создании панелей мониторинга см. в разделе Kibana — создание панели мониторинга.

Оттуда можно запросить определенные данные на вкладке Обнаружения или создать объекты Kibana для визуализации данных на вкладке Визуализация.

Очистка ресурсов

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

az group delete --name <resource group>

Дальнейшие действия

В этом руководстве вы узнали, как настроить приложение Java и службы Azure для отправки журналов и метрик в Logz.io.

Далее узнайте больше об использовании Концентратора событий для мониторинга приложения: