Skip to content

本地docker搭建服务监控

Published: at 03:22 PM

this artical introduces the simple way to build local prometheus + grafana monitoring system.

Table of contents

Open Table of contents

服务依赖于配置

以spring boot为例,在依赖中添加 prometheus 和 micrometer依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
	<groupId>io.micrometer</groupId>
	<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

在配置文件中增加相关的配置项

management.endpoints.web.exposure.include=* # 暴露prometheus endpoint 通过 /actuator/prometheus 获取监控数据
management.metrics.distribution.percentiles-histogram.http.server.requests=true
management.metrics.tags.application=${spring.application.name}
management.tracing.sampling.probability=1.0 # 采样比例

然后启动服务,访问 /actuator/prometheus 就可以看到自动采集的数据 alt text

构建docker-compose

因为服务指标采集和大屏展示需要分别使用到 prometheus和 grafana,我们需要先构建好这两个docker容器,为了方便,我们使用docker-compose

version: "3"
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus:/etc/prometheus # 这个docker-compose.yml所在文件夹下 新建一个 prometheus 文件夹,用来存放 prometheus 配置
    command:
      - "--config.file=/etc/prometheus/prometheus.yml" # 见下文
    networks:
      - monitoring

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    networks:
      - monitoring

networks:
  monitoring:

volumes:
  grafana-data:

在启动前,还需要配置prometheus定时拉取监控数据 (prometheus.yml)

global:
  scrape_interval: 1s
  evaluation_interval: 1s

scrape_configs:
  - job_name: "application-platform-thread" # 任务名称
    scrape_interval: 1s # 拉取间隔
    metrics_path: "/actuator/prometheus" # 接口
    static_configs:
      - targets: ["host.docker.internal:8090"] # 拉取的实例,因为是从docker访问宿主机的服务,所以使用 host.docker.internal

  - job_name: "application-virtual-thread"
    scrape_interval: 1s
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: ["host.docker.internal:8091"]

OK,做完以上工作,现在就可以在docker-compose.yml 文件所在文件夹 执行

docker-compose up -d

然后就可以看到两个容器都启动了

alt text

数据源配置

访问grafana地址 http://localhost:3000 默认用户名密码为 admin/admin

依次选择Dashboards —> Connections —> Datasource

alt text

选择 add new datasource ,然后选择 prometheus

alt text

唯一需要配置的就是这个 prometheus 地址 如果是按照本教程启动的 peometheus 于 grafana,那么此处只需要固定填入 http://prometheus:9090 点击页面下方的 save&test

面板配置

作为快速配置,当然是去选择一个模板,然后直接使用 alt text

可以在 https://grafana.com/grafana/dashboards 搜索喜欢的模板,通过id或者json导入,在下一步选择数据源时,选择我们刚刚配置的数据源即可