Используйте Prometheus + Grafana для создания системы мониторинга

Spring Boot

Для любой системы, как и для людей, необходимо «познать себя и врага», чтобы добиться «победы в каждом бою». Часто обсуждается высокая доступность. С одной стороны, необходимо обеспечить высокую доступность проекта с точки зрения дизайна архитектуры, реализации кода, проверки качества и т. д. Также очень важно обнаруживать проблемы как можно раньше. В настоящее время существует большое количество продуктов на выбор в экосистеме мониторинга, особенно в экосистеме Java, особенно в экосистеме Spring Boot, особенно важно, как выбрать подходящее решение.

Для приложений Spring Boot можно использоватьSpring Boot AdminДля мониторинга, но это недостаточно полно.Эта статья в основном знакомит с Prometheus и Grafana для мониторинга и оповещения. Общая блок-схема выглядит следующим образом

Prometheus – восходящая звезда системы мониторинга серверов. Его можно идеально сочетать с Kubernetes для мониторинга большого количества кластеров и приложений. Grafana – это инструментальная панель визуализации данных, которая может указывать несколько источников данных для выполнения запросов и преобразовывать скучные данные в многоуровневые. габаритные панели. Оба являются проектами с открытым исходным кодом.Благодаря конфигурации могут быть реализованы интуитивно понятные и мощные системы мониторинга, сигнализации и анализа, что поистине волшебно в эксплуатации и обслуживании.

Введение

Знакомство с Прометеем

Prometheus — это гибкое решение для мониторинга, разработанное с 2012 г. Система хранит свои данные в базе данных временных рядов и предоставляет многомерную модель данных и мощный язык запросов для создания отслеживаемых ресурсов. Первоначальное сообщение от SpringCloud

Функции

  • многомерная модель данных
  • Гибкий язык запросов
  • Не зависит от распределенного хранилища
  • Собирать временные ряды методом pull и передавать по http-протоколу
  • Способ поддержки временных рядов push через промежуточный шлюз
  • Мониторинг данных через службу или статическую конфигурацию
  • Поддерживает различные методы, такие как диаграммы и информационные панели.

компоненты

  • Основная программа Prometheus, в основном отвечающая за хранение, выборку, агрегацию, запросы
  • AlertManager, в основном ответственный за реализацию тревоги
  • PushGateway, в основном, реализует данные индикатора, отправляемые Клиентом, и захватывает их основной программой через заданный интервал времени.

Введение в Графану

Grafana — это приложение с открытым исходным кодом, написанное на языке go. Оно в основном используется для визуализации крупномасштабных данных индикаторов. Оно имеет панель управления с возможностью горячей замены и масштабируемые источники данных. Оно уже поддерживает большинство широко используемых баз данных временных рядов. в том числе: Graphite, Elasticsearch, CloudWatch, InfluxDB, OpenTSDB, Prometheus и др.

Создание приложения Prometheus

конфигурация на уровне кода

Maven pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

стартовый класс

@SpringBootApplication
public class PrometheusApplication {

    public static void main(String[] args) {
        SpringApplication.run(PrometheusApplication.class, args);
    }
}

Добавьте класс конфигурации MeterRegistryCustomizer

@Configuration
public class MeterRegistryConfig {

    @Value("${spring.application.name}")
    private String applicationName;

    @Bean
    MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
        return registry -> registry.config().commonTags("application", applicationName);
    }
}

конфигурационный файл

Добавьте имя приложения конфигурации в файл конфигурации и откройте все конечные точки привода.

server:
  port: 8074

spring:
  application:
    name: prometheus-demo

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always

Проверочный тест

Запустите проект, посетите http://localhost:8074/actuator/prometheus, вы можете увидеть следующую собранную информацию

Строительство окружающей среды

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

установить прометей

brew install prometheus

Или выберите подходящую версию с https://prometheus.io/download/ для загрузки и установки.

После успешной установки файл конфигурации по умолчанию находится в папке /usr/local/etc/, которую можно легко настроить.

vim /usr/local/etc/prometheus.yml

Уведомление: Если страница недоступна после запуска, проверьте, неверный ли формат конфигурации (пробел или табуляция)

global:
  scrape_interval: 15s
  evaluation_interval: 15s
alerting:
  alertmanagers:
  - static_configs:
    - targets:
rule_files:

scrape_configs:
  - job_name: "prometheus"
    static_configs:
    - targets: ["localhost:9090"]
  - job_name: "prometheus-demo"
    scrape_interval: 5s
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['localhost:8074']

Затем запустите Prometheus для доступа, порт по умолчанию — 9090 (вы можете изменить его в соответствии со своей ситуацией)

brew services start prometheus

Откройте страницу управления:http://localhost:9090/graph

Установка Графана

Установите и запустите Grafana

brew install grafana

Или выберите подходящую версию с https://grafana.com/get для загрузки и установки.

Расположение конфигурации: /usr/local/etc/grafana/grafana.ini Расположение журнала: /usr/local/var/log/grafana/grafana.log Расположение плагина: /usr/local/var/lib/grafana/plugins

запустить службу

brew services start grafana

Порт по умолчанию: 3000 (вы можете изменить его в соответствии со своей ситуацией) Имя пользователя и пароль по умолчанию: admin/admin (при первом входе пароль увеличивается)

Настроить Графану

Во-первых, вам нужно создать источник данных, Здесь выберите источник данных, тип которого Prometheus и имя Prometheus-Data

Затем нажмите кнопку «Сохранить и протестировать» внизу. Когда вы увидите, что подсказка источника данных работает, это означает, что Prometheus может нормально подключиться для получения данных индикатора.

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

образец кода

spring-boot-prometheus