Spring Boot Actuator интегрирует Prometheus

Spring Boot

Введение

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 встретил…

Прошлый контент

Подписывайтесь на меня