Для любой системы, как и для людей, необходимо «познать себя и врага», чтобы добиться «победы в каждом бою». Часто обсуждается высокая доступность. С одной стороны, необходимо обеспечить высокую доступность проекта с точки зрения дизайна архитектуры, реализации кода, проверки качества и т. д. Также очень важно обнаруживать проблемы как можно раньше. В настоящее время существует большое количество продуктов на выбор в экосистеме мониторинга, особенно в экосистеме Java, особенно в экосистеме Spring Boot, особенно важно, как выбрать подходящее решение.
Для приложений Spring Boot можно использоватьSpring Boot AdminДля мониторинга, но это недостаточно полно.Эта статья в основном знакомит с Prometheus и 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
Затем вернитесь на домашнюю страницу и добавьте панель мониторинга.Самый простой и прямой способ — напрямую щелкнуть вторую вкладку, которая только что настроила источник данных, а затем выбрать комбинацию панелей мониторинга, затем импортировать, а затем набор настроенных страниц просмотра. Вернитесь на домашнюю страницу и выберите информационную панель для просмотра данных мониторинга.