Введение
Spring Boot имеет собственную функцию мониторинга Actuator, которая может помочь контролировать внутреннюю работу программы, такую как состояние мониторинга, загрузка bean-компонента, переменные среды, информация журнала, информация о потоках и т. д. В этом разделе объединены Prometheus и Grafana для более интуитивного отображения этой информации.
эксперимент
инструкция
наименование услуги | адрес | порт |
---|---|---|
Prometheus | 172.16.2.101 | 9090 |
Grafana | 172.16.2.101 | 3000 |
Spring Boot Demo | 172.16.2.204 | 8080 |
Создать проект
Создайте проект Spring Boot для тестирования, основной код выглядит следующим образом.
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<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-test</artifactId>
<scope>test</scope>
</dependency>
application.yml
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always
metrics:
tags:
application: actuator-demo
- management.endpoints.web.exposure.include: Большинство портов актуатора не доступны через http, * означает предоставление доступа ко всем этим конечным точкам. Для производственных сред следует тщательно выбирать конечные точки для предоставления доступа.
- management.metrics.tags.application: Установите теги для приложений, чтобы различать разные приложения.
стартовый класс
@SpringBootApplication
@RestController
public class SpringbootActuatorPrometheusDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootActuatorPrometheusDemoApplication.class, args);
}
@RequestMapping(value = "/hello")
public String sayHello() {
for (int i = 1 ; i <= 10 ; i++) {
Thread t = new Thread(() -> {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} , "HelloThread - " + i);
t.start();
}
return "ok";
}
/**
@Bean
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry -> registry.config().commonTags("application", "springboot-actuator-prometheus-demo");
}
*/
}
Настроить Prometheus и Grafana
Добавьте задание мониторинга для приложения Spring Boot в prometheus.yml.
- job_name: 'actuator-demo'
metrics_path: '/prometheus'
static_configs:
- targets: ['172.16.2.204:8080']
Запускаем Prometheus и Grafana:
docker start prometheus grafana
Доступ к пользовательскому интерфейсу Прометеяhttp://172.16.2.101:9090, проверьте target , вы увидите, что задание находится в состоянии UP, что указывает на успешное выполнение конфигурации.
Grafana UI http://172.16.2.101:3000, через Графану+Icon Import (Импорт) JVM (Микрометр) дашборд:
- grafana id = 4701
- Обратите внимание, что выбран источник данных prometheus
Проверьте панель инструментов JVM (Micormeter):
Вы можете увидеть стек, поток, ввод-вывод и другую информацию о JVM приложения.
исходный код
GitHub.com/Kung Fu-Change сенсорный экран…
Ссылаться на
micrometer.IO/docs/горячая суть…
Prometheus.IO/docs/pro встретил…
Прошлый контент
- Начало работы с Прометеем
- Интеграция Prometheus и Grafana
- Prometheus интегрирует AlertManager
- Prometheus интегрирует Node Exporter