docker compose安装Prometheus、Grafana

1、创建目录结构

复制代码
mkdir -p /opt/monitoring/{prometheus,grafana}
mkdir -p /opt/monitoring/prometheus/{config,data}
chmod -R 777 /opt/monitoring  # 确保容器有写入权限

2、准备 Prometheus 配置文件

复制代码
vi /opt/monitoring/prometheus/config/prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:
      - targets: ['node-exporter:9100']

配置解释

全局配置 (global)

复制代码
global:
  scrape_interval: 15s          # 默认抓取间隔(每15秒)
  evaluation_interval: 15s      # 规则评估间隔(每15秒)
  scrape_timeout: 10s           # 每次抓取超时时间
  external_labels:              # 外部系统标识此Prometheus的标签
    monitor: 'prod-cluster'
    region: 'us-east'
  • scrape_interval:15s 默认抓取间隔(每15秒)
  • evaluation_interval: 15s # 规则评估间隔(每15秒)
  • scrape_timeout: 10s # 每次抓取超时时间

抓取配置

这是最核心的配置部分,定义监控目标

复制代码
scrape_configs:
  # 可随意指定
  - job_name: 'spring'
    # 多久采集一次数据
    scrape_interval: 15s
    # 采集时的超时时间
    scrape_timeout: 10s
    # 采集的路径
    metrics_path: '/actuator/prometheus'
    # 采集服务的地址,设置成Springboot应用所在服务器的具体地址
    static_configs:
    - targets: ['${host1}','${host2}']  
  • job_name: 'prometheus' # 任务名称
  • static_configs: # 静态目标配置

保留天数

Prometheus 的默认数据保留时间是 15天。 在 Prometheus 的配置文件 prometheus.yml 中,可以添加以下配置来设置数据保留时间

复制代码
storage:
  tsdb:
    retention.time: 30d
  • 数据保留时间的单位可以是 s(秒)、m(分钟)、h(小时)、d(天)、w(周)、y(年)。

  • 如果需要根据存储大小限制数据保留时间,可以使用 --storage.tsdb.retention.size 参数

3、创建 docker-compose.yml

复制代码
version: '3'

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - /opt/monitoring/prometheus/config:/etc/prometheus
      - /opt/monitoring/prometheus/data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    networks:
      - monitoring

  node-exporter:
    image: prom/node-exporter
    container_name: node-exporter
    restart: always
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
    networks:
      - monitoring

  grafana:
    image: grafana/grafana
    container_name: grafana
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - /opt/monitoring/grafana:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin123  # 设置admin密码
    networks:
      - monitoring

networks:
  monitoring:
    driver: bridge
  • 数据持久化 :
    • /opt/monitoring/prometheus/data - Prometheus 时序数据库

    • /opt/monitoring/grafana - Grafana 配置和仪表板

4、启动服务

在docker-compose.yml 同级目录下执行

复制代码
docker-compose up -d

其他命令

复制代码
# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

更新prometheus配置

修改配置文件后,重启服务

复制代码
docker-compose restart prometheus

5、验证安装

  1. Prometheus : 访问 http://<宿主机IP>:9090

  2. Grafana : 访问 http://<宿主机IP>:3000 (初始用户名/密码: admin/admin123)

  3. Node Exporter : 访问 http://<宿主机IP>:9100/metrics

    1. Node Exporter 是 Prometheus 生态系统中的一个关键组件,专门用于收集主机系统(通常是 Linux/Unix 服务器)的硬件和操作系统指标。

Grafana设置中文

6、Grafana配置Prometheus数据源

添加数据源

配置

  • URL: http://prometheus:9090

  • 其他保持默认

点击 "Save & Test"

7、导入 Grafana 仪表板

模版地址

Grafana提供了许多优秀的模板,可以网页https://grafana.com/grafana/dashboards 查找。

导入模版

加载模版

选择 Prometheus 数据源

点击 "Import"

监控信息

8、实例

spring项目

添加依赖

复制代码
<!-- Actuator 提供监控端点 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!-- Micrometer Prometheus 适配器 -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

application.yml配置

复制代码
# 监控
management:
  endpoints:
    web:
      exposure:
          include: '*' #  暴露所有端点
  metrics:
    tags:
      application: ${spring.application.name} # 监控指标
  prometheus:
    metrics:
      export:
        enabled: true # 暴露监控指标
        step: 30s # 监控指标步长

鉴权-放行

如果有鉴权,需要放行下面的接口

复制代码
"/actuator/**"

验证

复制代码
http://localhost:8080/actuator/prometheus

Prometheus 侧配置

基本抓取配置

复制代码
scrape_configs:
  - job_name: 'spring-apps'
    metrics_path: '/actuator/prometheus'  # Spring Boot 暴露的端点
    scrape_interval: 15s
    static_configs:
      - targets: ['spring-app-host:8080']  # 应用地址
        labels:
          env: 'production'
          service_group: 'order-service'

Grafana 配置

监控

  • 19004(Spring Boot 3.x Statistics):适用于Micrometer Prometheus指标的全方位Spring Boot 3.x Grafana仪表盘。

  • 21308(Spring Boot Http (3.x):此仪表盘旨在监控Spring Boot应用程序中HTTP请求的状态和性能。它使用Spring Boot Actuator来公开指标,并使用Prometheus来收集和存储这些指标。然后,使用Grafana来可视化收集到的数据,从而深入了解HTTP请求行为。

监控信息

Spring Boot 3.x Statistics
Spring Boot Http (3.x)
相关推荐
花落已飘6 小时前
openEuler WSL2容器化开发实战:Docker Desktop集成与应用部署
运维·docker·容器
斯普信专业组12 小时前
Docker 常用命令与时区配置指南
docker·容器·eureka
天一生水water1 天前
ubuntu使用毫秒镜像方式安装docker mysql
ubuntu·阿里云·docker
Qayrup1 天前
docker 搭建私有仓库,推送并拉取
运维·docker·容器
郭庆汝1 天前
docker拉取英伟达官方cuda11.8镜像
docker·cuda11.8
天下不喵1 天前
Ubuntu24.04安装Docker过程记录
docker
梁正雄1 天前
6、prometheus资源规划
运维·服务器·服务发现·prometheus·监控
冷血~多好1 天前
使用docker部署elk,实现日志追踪
elk·docker·容器
天一生水water1 天前
docker-compose安装
运维·docker·容器