运维监控系列(10)-Prometheus+Grafana监控Spring Boot、Dokcer

Spring Boot应用(2.5.x)

1. 项目改造

Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API,它提供了多种度量指标类型(Timers、Guauges、Counters等),同时支持接入不同的监控系统,例如 Influxdb、Graphite、Prometheus 等。我们可以通过 Micrometer 收集 Java 性能数据,配合 Prometheus 监控系统实时获取数据,并最终在 Grafana 上展示出来,从而很容易实现应用的监控。

1、 添加actuator依赖包,actuator是springboot提供的健康监测,该版本spring-boot-actuator使用了Micrometer来实现监控功能;

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
        <!-- https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus -->
<dependency>
    <groupId>io.micrometer</groupId>
     <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

1、 application.yml添加配置;

management:
  endpoint:
    health:
      # 是否显示health详细信息
      show-details: always
      show-components: always
  endpoints:
    # Web端点的配置属性
    web:
      exposure:
        #  开放端点的ID集合(eg:['health','info','beans','env']),配置为“*”表示全部
        include: '*'
  metrics:
    tags:
      #  应用名称添加到计量器注册表的tag中
      application: ${
   
     spring.application.name}

1、 注入MeterRegistries;

    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(
            @Value("${spring.application.name}") String applicationName) {
   
     
        return (registry) -> registry.config().commonTags("application", applicationName);
    }

启动项目,访问http://localhost:8111/actuator/prometheus。

 

2. Prometheus配置

scrape_configs:
  - job_name: 'spring-boot'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['192.168.2.245:25000']

查看控制台:
 

3. Grafana配置

直接导入12856的ID。
 

Dokcer

1. 安装cadvisor

GitHub地址

cAdvisor(Container Advisor)让容器用户了解他们正在运行的容器的资源使用情况和性能特征。它是一个正在运行的守护进程,用于收集、聚合、处理和导出有关正在运行的容器的信息。具体来说,对于每个容器,它保存了资源隔离参数、历史资源使用情况、完整的历史资源使用情况直方图和网络统计信息。

docker-compose安装,因为这是谷歌开发的,所有放在谷歌的镜像库里,没有梯子,所以在Docker Hub找了个私人的。。。。

version: "3"
services:
  cadvisor:
    image: lagoudocker/cadvisor:v0.37.0
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /dev/disk/:/dev/disk:ro
      - /var/lib/docker/:/var/lib/docker:ro
    command:
      - "--disable_metrics=udp,tcp,percpu,sched"
      - "--storage_duration=15s"
      - "-docker_only=true"
      - "-housekeeping_interval=30s"
      - "-disable_metrics=disk"
    ports:
      - 9090:8080
    networks:
        - ops
networks:
  ops:
    driver: bridge

然后访问ip+9090:
 

2. Prometheus配置

scrape_configs:
  # docker 监控 
  - job_name: cadvisor
    static_configs:
    - targets: ['cadvisor主机IP:9090']

查看控制台:
 

3. Grafana配置

直接导入11558的ID。
 

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: