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: 15sscrape_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/prometheuscontainer_name: prometheusrestart: alwaysports:- "9090:9090"volumes:- /opt/monitoring/prometheus/config:/etc/prometheus- /opt/monitoring/prometheus/data:/prometheuscommand:- '--config.file=/etc/prometheus/prometheus.yml'- '--storage.tsdb.path=/prometheus'networks:- monitoringnode-exporter:image: prom/node-exportercontainer_name: node-exporterrestart: alwaysports:- "9100:9100"volumes:- /proc:/host/proc:ro- /sys:/host/sys:ro- /:/rootfs:rocommand:- '--path.procfs=/host/proc'- '--path.sysfs=/host/sys'- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'networks:- monitoringgrafana:image: grafana/grafanacontainer_name: grafanarestart: alwaysports:- "3000:3000"volumes:- /opt/monitoring/grafana:/var/lib/grafanaenvironment:- GF_SECURITY_ADMIN_PASSWORD=admin123 # 設置admin密碼networks:- monitoringnetworks: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: 15sstatic_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)
?