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)
相关推荐
Johny_Zhao5 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
zwjapple5 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
代码老y7 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
DuelCode8 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
杨浦老苏13 小时前
开源服务运行监控工具Lunalytics
docker·群晖·网站监控
呆萌的代Ma19 小时前
解决Mac上的老版本docker desktop 无法启动/启动后一直转圈/无法登陆账号的问题
macos·docker·eureka
feilieren19 小时前
Docker 安装 Elasticsearch 9
运维·elasticsearch·docker·es
KaiwuDB20 小时前
使用Docker实现KWDB数据库的快速部署与配置
数据库·docker
cleble21 小时前
(转)使用DockerCompose部署微服务
docker
朱杰jjj1 天前
Docker容器中无法使用vim、vi命令处理
docker·容器·vim