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、验证安装
-
Prometheus : 访问
http://<宿主机IP>:9090
-
Grafana : 访问
http://<宿主机IP>:3000
(初始用户名/密码: admin/admin123) -
Node Exporter : 访问
http://<宿主机IP>:9100/metrics
- 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)

