1. Введение
В последнее время я все больше и больше чувствую, что когда какая-либо система выходит в онлайн, мониторинг эксплуатации и технического обслуживания становится слишком важным. В этой статье представлен метод Prometheus + Grafana для мониторинга Springboot 2.X для достижения красивой и красивой визуализации данных.
2. Добавьте мониторинг
Модуль Spring-boot-actuator помогает вам отслеживать и управлять вашим приложением, когда вы запускаете его в производство. Вы можете использовать конечные точки HTTP или JMX для управления и мониторинга вашего приложения. Аудит, сбор данных о работоспособности и метрик также могут быть автоматически применены к вашему приложению. Импортируйте зависимости следующим образом:
<!--监控报警-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
Для Springboot, чтобы открыть привод и открыть соответствующую конечную точку:
#prometheus配置
info:alen:alenmanagement:endpoints:web:base-path:/actuatorexposure:include:"*"
После запуска Springboot вы можете проверить правильность получения данных мониторинга по следующему URL-адресу: localhost/actuator/prometheus. Если данные получены успешно, это означает, что Springboot может нормально предоставлять данные мониторинга.
основная конечная точка
3. Настроить Прометей
Prometheus, один из проектов Cloud Native Computing Foundation, представляет собой систему мониторинга систем и служб. Он собирает метрики от настроенных целей через заданные интервалы времени, оценивает выражения правил, отображает результаты и может запускать оповещения, если выполняются определенные условия.
характеристика
• 多维度 数据模型(由度量名称和键/值维度集定义的时间序列)
• 灵活的查询语言 来利用这种维度
• 不依赖分布式存储;单个服务器节点是自治的
• 时间序列采集通过HTTP上的 pull model 发生
• 推送时间序列 通过中间网关得到支持
• 通过 服务发现 或 静态配置 来发现目标
• 多种模式的 图形和仪表盘支持
• 支持分级和水平 federation
Захват данных через Prometheus Prometheus извлечет конфигурацию данных индикатора prometheus.yml в открытой конечной точке (/actuator/prometheus) в соответствии с настроенным периодом времени.
- job_name: 'actuator-ruoyi'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['10.42.95.4']
Перезапустите prometheus еще раз, посетите веб-сайт prometheus и проверьте, нормально ли запускаются цели, как показано ниже.
4. Grafana добавляет шаблон мониторинга
После запуска по умолчанию адрес Grafana: http://localhost:3000/, имя пользователя и пароль для входа — admin/admin, а идентификатор grafana конфигурации импорта = 4701.
Окончательный эффект выглядит так, как показано ниже.
5. Замечания
Вопрос: Не удается получить доступ к конечной точке при добавлении? Решение: Причина в том, что проект использует shiro и необходимо добавить фильтрацию
filterChainDefinitionMap.put("/actuator/**","anon");
Вопрос второй:
/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: Broken pipe
Решение. Причиной этой ошибки является то, что имя project.artifactId может содержать символы верхнего регистра. Просто измените его на нижний регистр