精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

部署一套完整的 Prometheus+Grafana 智能監控告警系統

開發 前端
現在你再遇到線上 Java 服務出問題,不用再半夜瞎摸 —— 打開 Grafana 看圖表,能快速定位是 CPU 高了、內存滿了還是 GC 頻繁;告警郵件會提前通知你,把問題扼殺在萌芽里。

兄弟們,凌晨三點,又是運維兄弟的奪命連環 call:“哥!線上 Java 服務崩了!日志刷得飛快,根本找不到哪兒出問題!” 你揉著眼睛爬起來遠程連服務器,CPU 飆到 100%、內存滿了、JVM 堆溢出…… 一堆問題堆在眼前,可因為沒監控,連問題啥時候開始的都不知道。

這種 “兩眼一抹黑” 的崩潰時刻,我猜每個 Java 開發 / 運維都經歷過。今天咱們就來搞個 “運維救星套餐”—— 把 Prometheus+Grafana 這套監控告警系統從頭到尾搭明白,以后服務器、Java 應用的風吹草動,咱們都能提前知道,再也不用半夜被電話嚇醒!

先跟新手兄弟說句大實話:這倆工具聽著挺唬人,其實就是 “采集數據的小弟(Prometheus)” 加 “畫圖表的大哥(Grafana)”,再配上 “喊人的喇叭(Alertmanager)”。咱們一步步來,保證你看完就能上手,全程大白話,不整那些繞人的技術黑話。

一、先把 “地基” 打牢:環境準備

在搭系統前,咱們得先確認服務器環境 —— 別跟我似的,當年第一次搭的時候,服務器連 Docker 都沒裝,愣生生折騰了倆小時才發現問題。這里我分兩種情況說:Linux 服務器(生產常用)和 Windows(本地測試用),你按需取用。

1.1 服務器基礎要求

不管啥系統,至少滿足這幾點:

  • 內存:2G 以上(監控 10 臺以內機器足夠,機器多就加內存,Prometheus 吃內存)
  • 硬盤:20G 以上(要存監控數據,默認存 15 天,不夠再擴)
  • 系統:Linux 建議 CentOS 7+/Ubuntu 18+,Windows 建議 Win10/Server 2019
  • 網絡:服務器之間能互通(比如 Prometheus 要連被監控的 Java 服務,端口得開)

1.2 依賴工具安裝(重點!)

咱們用 Docker 部署,比源碼編譯簡單 10 倍,新手別頭鐵去搞源碼!先裝 Docker 和 Docker Compose(管理多容器用)。

Linux 下裝 Docker(以 CentOS 7 為例)

直接復制命令就行,記得每步跑完看一眼有沒有 “success”:

# 先卸載舊版本(防止沖突,沒裝過也沒事)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 裝依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 設置Docker倉庫(用阿里云的,快!)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 裝Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 啟動Docker并設為開機啟動
sudo systemctl start docker
sudo systemctl enable docker
# 驗證是否裝好(出現版本號就成)
docker --version

然后裝 Docker Compose:

# 下載Compose(注意:如果報錯,把后面的版本號換成最新的,去官網查)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 給權限
sudo chmod +x /usr/local/bin/docker-compose
# 驗證(出現版本號就OK)
docker-compose --version
Windows 下裝 Docker

去 Docker 官網下 “Docker Desktop”,一路下一步就行(記得勾上 “Add shortcut to desktop”)。裝完打開,等右下角圖標變綠,打開命令提示符(CMD)輸docker --version,能看到版本號就成。

這里插句嘴:Windows 家庭版可能會提示 “需要 WSL 2”,別慌,按提示去微軟商店裝個 Ubuntu,再重啟 Docker 就好了,比當年我裝雙系統簡單多了。

二、第一步:把 “數據采集員” Prometheus 架起來

Prometheus 的核心工作就是 “定期去被監控的機器 / 應用上拿數據”—— 比如每隔 10 秒查一次 Linux 的 CPU 使用率,每隔 5 秒查一次 Java 服務的堆內存。咱們先把它跑起來,再慢慢配置。

2.1 先搞個 “工作目錄”(別亂建文件夾!)

不管 Linux 還是 Windows,先建個統一的目錄,比如/opt/prometheus-grafana(Linux)或D:\prometheus-grafana(Windows),所有配置文件都放這里,以后好找。

Linux 下建目錄:

mkdir -p /opt/prometheus-grafana/{prometheus,alertmanager,grafana}
cd /opt/prometheus-grafana

Windows 下直接在 D 盤右鍵新建文件夾,命名成 “prometheus-grafana”,再里面建三個子文件夾:prometheus、alertmanager、grafana。

2.2 寫 Prometheus 的配置文件(核心!)

Prometheus 啟動靠的是prometheus.yml這個配置文件,咱們先寫個基礎版,能監控它自己就行(先確保自身能跑,再監控別的)。

在prometheus文件夾里新建prometheus.yml,內容如下(我加了詳細注釋,別復制注釋里的 #號!):

# 全局配置(所有監控任務都能用)
global:
  scrape_interval: 15s  # 每隔15秒采集一次數據(新手別設太短,會把服務器累死)
  evaluation_interval: 15s  # 每隔15秒評估一次告警規則
# 告警規則文件(后面配Alertmanager會用到,先空著)
rule_files:
  # - "alert_rules.yml"  # 注釋掉,后面再開
# 監控目標配置(告訴Prometheus要監控誰)
scrape_configs:
  # 監控Prometheus自己(必填,先看自己活沒活)
  - job_name: "prometheus"  # 任務名,隨便起,好認就行
    static_configs:
      - targets: ["localhost:9090"]  # 監控地址,localhost就是自己,端口9090是Prometheus默認端口

這里插個坑:如果你的 Prometheus 是用 Docker 跑的,localhost要改成 “容器名” 或 “宿主機 IP”,別傻乎乎寫localhost,到時候監控不到還找不到原因(我當年踩過這個坑,查了半小時日志)。

2.3 用 Docker 啟動 Prometheus

咱們用 Docker Compose 來啟動,比單獨用 docker run 方便,以后重啟、停止都一鍵搞定。

在/opt/prometheus-grafana(Linux)或D:\prometheus-grafana(Windows)目錄下,新建docker-compose.yml文件,內容如下:

version: '3.8'  # Compose版本,跟你裝的版本匹配就行
services:
  # Prometheus服務
  prometheus:
    image: prom/prometheus:v2.47.0  # 用2.47.0版本,穩定!別用latest,容易出兼容問題
    container_name: prometheus  # 容器名,好記
    restart: always  # 開機自啟,服務器重啟后不用手動開
    ports:
      - "9090:9090"  # 端口映射:宿主機9090端口 -> 容器9090端口
    volumes:
      # 把本地的配置文件掛載到容器里(改本地文件,容器里就生效)
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      # 把監控數據掛載到本地(防止容器刪了數據丟了)
      - ./prometheus/data:/prometheus/data
    command:
      # 告訴Prometheus用哪個配置文件,以及數據存哪里
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus/data'
      - '--storage.tsdb.retention.time=15d'  # 數據保留15天,夠了,多了占硬盤

然后啟動!在當前目錄下執行命令:

# Linux下
docker-compose up -d
# Windows下(打開CMD,進入D:\prometheus-grafana目錄,再執行)
docker-compose up -d

執行完后,輸docker ps(Linux)或在 Docker Desktop 里看,能看到prometheus容器狀態是 “Up” 就成了。

2.4 驗證 Prometheus 是否跑通

打開瀏覽器,輸入http://你的服務器IP:9090(比如 Linux 服務器 IP 是 192.168.1.100,就輸http://192.168.1.100:9090)。

能看到 Prometheus 的界面,點擊頂部 “Status”→“Targets”,如果 “prometheus” 那一行的 “State” 是 “UP”,說明沒問題!如果是 “DOWN”,別慌,先檢查端口是不是被占用了(Linux 用netstat -tuln | grep 9090,Windows 用netstat -ano | findstr 9090),再看看配置文件里的 targets 對不對。

三、第二步:給 Java 應用裝 “監控插件”(重點!)

咱們是 Java 技術號,監控 Linux 服務器只是基礎,重點是監控 Java 應用 —— 比如 Spring Boot 服務的 JVM 堆內存、GC 次數、接口響應時間這些。這時候得用 “JMX Exporter” 這個工具,它能把 Java 應用的 JVM 指標轉成 Prometheus 能認的格式。

3.1 下載 JMX Exporter

JMX Exporter 是個 JAR 包,直接從 GitHub 下載:https://github.com/prometheus/jmx_exporter/releases 。找最新的 “jmx_prometheus_javaagent-xxx.jar”,比如 “jmx_prometheus_javaagent-0.19.0.jar”。

下載后,放到被監控的 Java 應用服務器上,比如/opt/jmx-exporter(Linux)或D:\jmx-exporter(Windows)目錄下。

3.2 寫 JMX Exporter 的配置文件

在同一個目錄下,新建config.yml文件,內容如下(這個配置能監控大部分 JVM 指標,夠用了):

lowercaseOutputLabelNames: true
lowercaseOutputName: true
rules:
  - pattern: 'java.lang<type=Memory><HeapMemoryUsage>(\w+):'
    name: jvm_memory_heap_usage_$1
    type: GAUGE
  - pattern: 'java.lang<type=Memory><NonHeapMemoryUsage>(\w+):'
    name: jvm_memory_nonheap_usage_$1
    type: GAUGE
  - pattern: 'java.lang<type=GarbageCollector, name=(\w+)><CollectionCount>:'
    name: jvm_gc_collection_count_$1
    type: COUNTER
  - pattern: 'java.lang<type=GarbageCollector, name=(\w+)><CollectionTime>:'
    name: jvm_gc_collection_time_$1
    type: COUNTER
  - pattern: 'java.lang<type=Threading><ThreadCount>:'
    name: jvm_thread_count
    type: GAUGE

簡單解釋下:這個配置告訴 JMX Exporter,要把 JVM 的堆內存、非堆內存、GC 次數、線程數這些指標抓出來,起個 Prometheus 能認的名字(比如jvm_memory_heap_usage_used就是堆內存已用大小)。

3.3 給 Java 應用加啟動參數(關鍵!)

不管你的 Java 應用是用java -jar啟動,還是用 Tomcat 部署,都要加個 JVM 啟動參數,讓 JMX Exporter 跟著應用一起跑。

比如你的 Spring Boot 應用 JAR 包叫demo.jar,啟動命令就改成這樣:

# Linux下(注意路徑要對!)
java -javaagent:/opt/jmx-exporter/jmx_prometheus_javaagent-0.19.0.jar=9100:/opt/jmx-exporter/config.yml -jar demo.jar
# Windows下(路徑用反斜杠,或者雙斜杠)
java -javaagent:D:\jmx-exporter\jmx_prometheus_javaagent-0.19.0.jar=9100:D:\jmx-exporter\config.yml -jar demo.jar

這里的9100是 JMX Exporter 的端口,以后 Prometheus 就從這個端口拿 Java 應用的指標。記住這個端口,后面要用到!啟動后,驗證一下:用瀏覽器訪問http://Java應用服務器IP:9100/metrics,能看到一堆以jvm_開頭的指標,就說明 JMX Exporter 跑通了。

3.4 讓 Prometheus 監控 Java 應用

回到 Prometheus 的prometheus.yml文件,在scrape_configs里加一個監控任務:

scrape_configs:
  # 原來的prometheus監控任務保留
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  
  # 新增:監控Java應用
  - job_name: "java_app"  # 任務名,叫java_app好認
    static_configs:
      # 這里填Java應用服務器的IP和JMX Exporter的端口,多個應用用逗號分隔
      - targets: ["192.168.1.101:9100", "192.168.1.102:9100"]
    scrape_interval: 10s  # Java應用指標變化快,采集間隔設短點,10秒一次

改完配置文件后,重啟 Prometheus 讓配置生效:

# Linux下(在docker-compose.yml所在目錄)
docker-compose restart prometheus

# Windows下同理
docker-compose restart prometheus

再去 Prometheus 的 Targets 頁面(http:// 服務器 IP:9090/targets),能看到 “java_app” 任務下的目標狀態是 “UP”,就說明 Prometheus 能拿到 Java 應用的指標了!這里再插個坑:如果是云服務器(比如阿里云、騰訊云),要在安全組里開 9100 端口,不然 Prometheus 連不上 —— 我之前幫朋友搭的時候,查了一小時才發現是安全組沒開,血的教訓!

四、第三步:用 Grafana 把數據 “畫成畫”(可視化核心)

Prometheus 采集的數據是一堆文字,看著頭疼 ——Grafana 就是來解決這個問題的,它能把文字轉成漂亮的圖表,比如 CPU 使用率曲線、JVM 內存餅圖,一眼就能看出問題。

4.1 用 Docker 啟動 Grafana

還是在docker-compose.yml里加 Grafana 的配置,完整的docker-compose.yml現在長這樣:

version: '3.8'

services:
  prometheus:
    image: prom/prometheus:v2.47.0
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus/data:/prometheus/data
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus/data'
      - '--storage.tsdb.retention.time=15d'

  # 新增Grafana服務
  grafana:
    image: grafana/grafana:10.1.2  # 10.x版本穩定,界面也好看
    container_name: grafana
    restart: always
    ports:
      - "3000:3000"  # Grafana默認端口3000
    volumes:
      # 掛載數據目錄,防止容器刪了配置丟了
      - ./grafana/data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=123456  # 管理員密碼,第一次登錄用,后面可以改
      - GF_USERS_ALLOW_SIGN_UP=false # 禁止注冊,防止別人亂注冊
    depends_on:
      - prometheus # 先啟動Prometheus,再啟動Grafana

然后啟動 Grafana(如果之前已經啟動了 Prometheus,直接執行這個命令就行):

docker-compose up -d

啟動后,用瀏覽器訪問http://服務器IP:3000,第一次登錄用戶名是admin,密碼是剛才配置的123456,登錄后會讓你改密碼,改成自己好記的(別用 123456,生產環境要復雜點)。

4.2 給 Grafana 加 Prometheus 數據源

Grafana 要畫圖,得先知道數據從哪兒來 —— 也就是把 Prometheus 設為數據源。

步驟如下(跟著點就行,很簡單):

  1. 登錄后,點擊左側 “Configuration”(齒輪圖標)→“Data Sources”;
  2. 點擊 “Add data source”,搜索 “Prometheus”,選中它;
  3. 在 “HTTP”→“URL” 里填http://prometheus:9090(因為用 Docker Compose,容器間能通過容器名訪問,不用寫 IP);
  4. 其他默認,拉到最下面點擊 “Save & Test”,出現 “Data source is working” 就成了!

這里再插個坑:如果你的 Grafana 和 Prometheus 不在同一臺服務器,URL 要填http://Prometheus服務器IP:9090,還要確保兩臺服務器能通 9090 端口。

4.3 導入現成的 Dashboard(不用自己畫!)

Grafana 有個 “Dashboard 市場”,里面有無數現成的圖表模板,咱們不用自己從零開始畫,直接導入就行,省時間還專業。

4.3.1 導入 Linux 服務器監控 Dashboard

先搞個 Linux 監控的,看服務器 CPU、內存、磁盤這些。

  1. 打開 Grafana,左側點擊 “Dashboards”→“Browse”;
  2. 點擊右上角 “Import”,在 “Import via grafana.com” 里輸入模板 ID:8919(這個是官方推薦的 Linux 監控模板,超全);
  3. 點擊 “Load”,然后在 “Data source” 里選擇咱們剛才加的 “Prometheus”,點擊 “Import”;
  4. 搞定!現在能看到 Linux 服務器的 CPU 使用率、內存使用率、磁盤 IO、網絡流量這些圖表,實時更新,賊直觀。
4.3.2 導入 Java 應用監控 Dashboard

重點來了,Java 應用的 JVM 監控模板,用這個 ID:4701(這個模板能監控堆內存、非堆內存、GC 次數、線程數,Java 開發者必備)。

  1. 同樣點擊 “Import”,輸入4701,點擊 “Load”;
  2. 選擇 Prometheus 數據源,點擊 “Import”;
  3. 現在能看到 Java 應用的 JVM 堆內存使用情況、GC 時間、線程數這些關鍵指標了!比如 “JVM Heap Memory Usage” 圖表,能清楚看到堆內存的已用、空閑、最大大小,再也不用靠jstat命令看一堆數字了。

這里給個小技巧:把常用的 Dashboard 設為 “Home Dashboard”,下次登錄直接看。方法是:打開 Dashboard,點擊右上角 “Star”(星標),然后點擊左側 “Dashboards”→“Home”,就能看到了。

五、第四步:搭告警系統(有問題早通知!)

光監控還不夠,得有問題的時候主動通知咱們 —— 比如 CPU 超過 80%、Java 應用堆內存超過 90%,這時候 Alertmanager 就要上場了,它能把 Prometheus 的告警信息發給郵件、釘釘、企業微信。

5.1 啟動 Alertmanager

先在docker-compose.yml里加 Alertmanager 的配置,完整文件如下:

version: '3.8'

services:
  prometheus:
    image: prom/prometheus:v2.47.0
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus/alert_rules.yml:/etc/prometheus/alert_rules.yml # 新增告警規則文件
      - ./prometheus/data:/prometheus/data
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus/data'
      - '--storage.tsdb.retention.time=15d'
    depends_on:
      - alertmanager # 先啟動Alertmanager

  grafana:
    image: grafana/grafana:10.1.2
    container_name: grafana
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - ./grafana/data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=123456
      - GF_USERS_ALLOW_SIGN_UP=false
    depends_on:
      - prometheus

  # 新增Alertmanager服務
  alertmanager:
    image: prom/alertmanager:v0.26.0
    container_name: alertmanager
    restart: always
    ports:
      - "9093:9093"  # Alertmanager默認端口9093
    volumes:
      - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml # 告警配置文件
    command:
      - '--config.file=/etc/alertmanager/alertmanager.yml'

5.2 寫 Alertmanager 配置文件(以郵件告警為例)

在alertmanager文件夾里新建alertmanager.yml文件,內容如下(我用 QQ 郵箱舉例,其他郵箱類似):

global:
  # 郵件配置
smtp_smarthost: 'smtp.qq.com:465'  # QQ郵箱SMTP服務器,端口465(SSL)
smtp_from: '你的QQ郵箱@qq.com'  # 發件人郵箱
smtp_auth_username: '你的QQ郵箱@qq.com'  # 用戶名
smtp_auth_password: '你的QQ郵箱授權碼'  # 不是QQ密碼!是授權碼,去QQ郵箱設置里開
smtp_require_tls: false # QQ郵箱SSL不用TLS,設為false

# 路由配置(告警往哪兒發)
route:
group_by: ['alertname'] # 按告警名分組,比如同是CPU告警的放一組
group_wait: 10s  # 組內第一個告警觸發后,等10秒再發,防止頻繁告警
group_interval: 1m # 同一組告警,每隔1分鐘發一次
repeat_interval: 1h # 同一告警,1小時內只發一次,避免刷屏
receiver: 'email_receiver'  # 默認發給email_receiver這個接收器

# 接收器配置(誰接收告警)
receivers:
- name: 'email_receiver'
email_configs:
  - to: '接收人郵箱@xxx.com'  # 比如你的工作郵箱
    send_resolved: true # 問題解決后,發“已恢復”的通知

# 抑制規則(避免重復告警)
inhibit_rules:
  - source_match:
      severity: 'critical'  # 當有緊急告警時
    target_match:
      severity: 'warning'  # 抑制警告級別的告警
    equal: ['alertname', 'instance'] # 按告警名和實例名匹配

這里重點說下 QQ 郵箱授權碼怎么弄:

  1. 登錄 QQ 郵箱,點擊頂部 “設置”→“賬戶”;
  2. 拉到 “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服務”,開啟 “IMAP/SMTP 服務”;
  3. 點擊 “生成授權碼”,用手機掃碼,得到的字符串就是smtp_auth_password,別填 QQ 密碼!

5.3 寫 Prometheus 告警規則

在prometheus文件夾里新建alert_rules.yml文件,定義什么時候觸發告警。咱們寫幾個常用的規則:

groups:
- name: 服務器監控告警
rules:
  # 1. CPU使用率超過80%,持續5分鐘
  - alert: 服務器CPU使用率過高
    expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 80
    for: 5m
    labels:
      severity: warning # 告警級別:warning(警告)、critical(緊急)
    annotations:
      summary: "服務器{{ $labels.instance }} CPU使用率過高"
      description: "服務器{{ $labels.instance }} CPU使用率已超過80%,當前值:{{ $value | round 2 }}%,已持續5分鐘"

  # 2. 內存使用率超過90%,持續5分鐘
  - alert: 服務器內存使用率過高
    expr: 100 - (node_memory_Available_bytes / node_memory_Total_bytes * 100) > 90
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "服務器{{ $labels.instance }} 內存使用率過高"
      description: "服務器{{ $labels.instance }} 內存使用率已超過90%,當前值:{{ $value | round 2 }}%,已持續5分鐘"

- name: Java應用監控告警
rules:
  # 3. Java堆內存使用率超過90%,持續3分鐘
  - alert: Java應用堆內存使用率過高
    expr: jvm_memory_heap_usage_used / jvm_memory_heap_usage_max * 100 > 90
    for: 3m
    labels:
      severity: critical
    annotations:
      summary: "Java應用{{ $labels.instance }} 堆內存使用率過高"
      description: "Java應用{{ $labels.instance }} 堆內存使用率已超過90%,當前值:{{ $value | round 2 }}%,已持續3分鐘"

  # 4. Java線程數超過200,持續3分鐘
  - alert: Java應用線程數過多
    expr: jvm_thread_count > 200
    for: 3m
    labels:
      severity: warning
    annotations:
      summary: "Java應用{{ $labels.instance }} 線程數過多"
      description: "Java應用{{ $labels.instance }} 線程數已超過200,當前值:{{ $value | round 0 }},已持續3分鐘"

簡單解釋下:

  • expr:告警觸發的條件,比如jvm_memory_heap_usage_used / jvm_memory_heap_usage_max * 100 > 90就是堆內存使用率超過 90%;
  • for:持續多久才觸發告警,避免瞬時峰值誤報;
  • annotations:告警內容,{{ $labels.instance }}是被監控的實例 IP,{{ $value }}是當前指標值。

5.4 讓 Prometheus 用告警規則和 Alertmanager

回到prometheus.yml文件,修改兩處:

  • 打開rule_files,指定告警規則文件;
  • 加alerting配置,告訴 Prometheus 告警發給 Alertmanager。

修改后的prometheus.yml如下:

global:
scrape_interval: 15s
evaluation_interval: 15s

# 打開告警規則文件
rule_files:
  - "alert_rules.yml"

# 新增:告訴Prometheus Alertmanager的地址
alerting:
alertmanagers:
  - static_configs:
    - targets: ["alertmanager:9093"] # Docker Compose用容器名訪問

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "java_app"
    static_configs:
      - targets: ["192.168.1.101:9100", "192.168.1.102:9100"]
    scrape_interval: 10s

  # 新增:監控Linux服務器(需要裝node_exporter,下面說)
  - job_name: "linux_server"
    static_configs:
      - targets: ["192.168.1.100:9100", "192.168.1.101:9100"]
    scrape_interval: 15s

這里注意:監控 Linux 服務器需要裝node_exporter(和 JMX Exporter 類似,采集 Linux 系統指標),步驟很簡單:

  • 下載 node_exporter:https://github.com/prometheus/node_exporter/releases ;
  • 解壓后啟動:./node_exporter(默認端口 9100);
  • 加到 Prometheus 的 scrape_configs 里,就像上面的 “linux_server” 任務。

5.5 測試告警是否生效

咱們手動觸發一個告警來測試,比如把 Linux 服務器的 CPU 使用率打滿:

# Linux下執行這個命令,會讓CPU使用率飆升
stress --cpu 4 --timeout 60s

然后等 5 分鐘(因為告警規則里for:5m),如果配置沒問題,你會收到郵件告警,內容里會寫清楚哪個服務器、CPU 使用率多少、持續了多久。問題解決后(stress 命令結束),還會收到 “已恢復” 的郵件。也可以在 Alertmanager 的界面看告警狀態:訪問http://服務器IP:9093,能看到當前的告警和歷史告警。

六、進階優化:讓監控系統更穩、更高效

到這里,基礎的監控告警系統已經搭好了,但生產環境用還得優化一下,比如數據存更久、支持更多機器、防止單點故障。

6.1 存儲優化:數據存更久,不占滿硬盤

Prometheus 默認存 15 天數據,要是想存 30 天,改docker-compose.yml里的--storage.tsdb.retention.time=30d就行。如果數據量很大,比如監控 100 臺機器,建議用遠程存儲,比如 InfluxDB 或 Thanos,把數據存在專門的數據庫里,Prometheus 只負責采集。

6.2 性能優化:減少資源占用

  • 調整 scrape 間隔:不是所有指標都要 10 秒采一次,比如磁盤使用率 1 分鐘采一次就行,在 scrape_configs 里加scrape_interval: 60s;
  • 過濾無用指標:用relabel_configs過濾掉不需要的指標,比如 Java 應用的某些冷門 JVM 指標,減少數據量。示例:
- job_name: "java_app"
  static_configs:
    - targets: ["192.168.1.101:9100"]
  # 過濾掉jvm_memory_pool_開頭的指標
  relabel_configs:
    - source_labels: [__name__]
      regex: 'jvm_memory_pool_.*'
      action: drop

6.3 高可用:防止 Prometheus 掛了

生產環境不能只有一個 Prometheus,萬一它掛了,整個監控就廢了。可以搞主從架構:

  1. 部署兩個 Prometheus,一個主(負責采集和告警),一個從(只采集,備用);
  2. 用 Consul 或 etcd 做服務發現,自動發現被監控的目標;
  3. 當主 Prometheus 掛了,從的自動接管,保證監控不中斷。

七、總結:從 0 到 1 的監控系統搭建之路

咱們從環境準備到最后優化,把 Prometheus+Grafana+Alertmanager 這套監控告警系統完整搭了一遍,核心流程其實就三步:

  1. Prometheus 采集數據(用 JMX Exporter/node_exporter);
  2. Grafana 可視化數據(導入現成 Dashboard);
  3. Alertmanager 發送告警(郵件 / 釘釘 / 企業微信)。

現在你再遇到線上 Java 服務出問題,不用再半夜瞎摸 —— 打開 Grafana 看圖表,能快速定位是 CPU 高了、內存滿了還是 GC 頻繁;告警郵件會提前通知你,把問題扼殺在萌芽里。

責任編輯:武曉燕 來源: 石杉的架構筆記
相關推薦

2022-07-29 21:23:54

Grafana微服務

2025-11-11 07:20:00

SpringBoot架構監控埋點

2023-02-28 22:52:47

2020-12-30 05:34:25

監控PrometheusGrafana

2009-03-03 13:00:00

虛擬化技術vmwarexen

2023-10-23 12:31:40

2022-07-28 06:50:52

微服務業務系統

2023-03-03 17:00:00

部署Linux內核

2025-02-21 08:17:13

2024-04-09 08:00:00

Kubernetes管理系統云原生

2025-08-27 04:00:00

2019-02-20 10:22:20

監控HDFSHadoop

2025-08-27 07:22:12

自定義接口Prometheus

2021-05-27 07:12:19

單點登錄系統

2022-05-05 07:25:03

Supervisor監控Python

2020-11-20 08:15:40

Grafana + P

2023-11-21 08:57:16

2023-12-20 08:13:54

K8S監控管理
點贊
收藏

51CTO技術棧公眾號

亚洲丝袜另类动漫二区| 精品无码一区二区三区电影桃花| 黄瓜视频在线免费观看| 精品免费av一区二区三区| 国产伦精品一区二区三区免费迷| 日韩成人在线观看| 国产日产欧美精品| 亚洲成人日韩在线| 日本三级在线观看网站| 精品国产成人| 欧美日韩国产丝袜美女| 亚洲一区二区免费| 山东少妇露脸刺激对白在线| 亚洲福利影院| 不卡的看片网站| 欧美大片在线看| 日本一二三四区视频| 波多野结衣在线影院| 亚洲女同在线| 亚洲精品成a人在线观看| www.射射射| 国产成人三级在线播放| 91精品天堂福利在线观看| 欧美影视一区在线| 区一区二区三区中文字幕| 日本最新中文字幕| 国产精品中文字幕制服诱惑| 亚洲天堂福利av| 久久久精彩视频| 天天综合网入口| 色天天色综合| 日韩欧美在线网址| 久久亚裔精品欧美| 无码人妻丰满熟妇精品| 精品盗摄女厕tp美女嘘嘘| 日韩欧美国产麻豆| 日韩一区二区高清视频| 亚洲精选一区二区三区| 亚洲婷婷免费| 亚洲精品久久久久久久久久久久| 五月天婷婷亚洲| www在线视频| www.成人网.com| 538国产精品视频一区二区| 精品人妻一区二区三区视频| 色综合一本到久久亚洲91| 国产精品另类一区| 91美女福利视频高清| 亚洲最大的黄色网址| 国产高清日韩| 亚洲一区二区偷拍精品| 国产在线视频欧美一区二区三区| 国产尤物在线视频| 在线欧美亚洲| 亚洲欧美www| 91香蕉视频导航| 粗大黑人巨茎大战欧美成人| 国产精品久久免费看| 亚洲高清不卡一区| 国产99久久九九精品无码免费| 麻豆久久一区二区| 久久久亚洲网站| 亚洲人成人无码网www国产 | 黄色影院一级片| 免费一级在线观看| 久久精品国产精品青草| 国产精品v片在线观看不卡| 国产精品夜夜夜爽阿娇| 在线播放一区二区精品视频| 欧美视频中文在线看| av免费观看网| 黄网站免费在线观看| www.亚洲人| 国精产品一区二区| 久久经典视频| 成人18精品视频| 精品国产一区二区三区麻豆免费观看完整版 | 深爱五月激情五月| 久久亚洲不卡| 九九热这里只有在线精品视| 国产精品www爽爽爽| 欧美顶级大胆免费视频| 亚洲第一区中文字幕| 91最新在线观看| 日韩成人精品一区二区三区| 欧美日韩亚洲精品内裤| caoporn超碰97| 精品精品导航| 日韩一区欧美小说| 日韩高清专区| 亚洲 国产 欧美 日韩| 激情六月婷婷综合| 国产成人91久久精品| 色播视频在线播放| 欧美精品福利| 久久偷看各类女兵18女厕嘘嘘| 色一情一交一乱一区二区三区| 成人黄色小视频| 亚洲欧美在线x视频| 久久久精品高清| 91成人午夜| 亚洲欧美国产制服动漫| 侵犯稚嫩小箩莉h文系列小说| 国产欧美日韩精品一区二区免费| 亚洲国产精品字幕| 69xxx免费| 99精品免费视频| 992tv成人免费影院| 久久久久亚洲av成人片| 视频精品一区二区| 成人在线视频电影| 亚洲免费一级片| 成人一区二区三区在线观看| 91在线视频导航| 日本一卡二卡四卡精品 | 成人精品视频久久久久| 少妇又紧又色又爽又刺激视频| 99精品免费| 成人免费xxxxx在线观看| 日本福利片高清在线观看| 一区二区视频免费在线观看| 久久久久亚洲av无码专区喷水| 日本免费在线视频| 国产精品久久久久毛片软件| 国产亚洲黄色片| 成年女人在线看片| 疯狂蹂躏欧美一区二区精品| 亚洲综合激情视频| 国产探花一区在线观看| 97在线视频免费观看| 久久午夜鲁丝片午夜精品| 蜜桃传媒麻豆第一区在线观看| 国产精品网站入口| 一级黄色a毛片| 国产在线一区二区综合免费视频| 91在线观看免费高清| 中文字幕在线播放| 一区二区三区中文字幕在线观看| 91小视频网站| 国产欧美88| 久久九九热免费视频| 久草视频免费播放| 中日韩视频在线观看| 国产精品久久久久久久小唯西川| 五月婷婷在线观看视频| 亚洲一区二区视频| 午夜性福利视频| 四虎5151久久欧美毛片| 国产做受高潮69| 色欲av永久无码精品无码蜜桃| 亚洲一区二区精品3399| 激情av中文字幕| 国产一区二区三区网| 欧美中文字幕视频| 国产精品毛片久久久久久久av| 国产精品一区在线| 欧洲金发美女大战黑人| 国产精品迅雷| 欧美一区三区四区| 亚洲av无码国产精品久久| 亚洲精选在线| 国产欧美日韩视频| 日本最黄一级片免费在线| 欧美日韩激情一区二区三区| 亚洲欧美日韩偷拍| 日本女优一区| 成人激情视频小说免费下载| www视频在线看| 亚洲а∨天堂久久精品9966| 貂蝉被到爽流白浆在线观看 | 91免费看片在线观看| 亚洲日本精品| 成年人在线网站| 亚洲人成电影在线播放| 综合久久中文字幕| 亚洲美女区一区| 日韩av手机版| 911精品美国片911久久久| 成人h视频在线观看| 午夜在线播放| 欧美一级日韩不卡播放免费| 亚洲第一成人网站| 一个色综合网| 国产日本欧美一区二区三区| 日韩三级影院| 亚洲第一福利视频| 波多野结衣mp4| 91污片在线观看| 狠狠热免费视频| 欧美激情无毛| 鲁丝一区二区三区免费| 97色婷婷成人综合在线观看| 中文字幕久精品免费视频| 日韩精品1区2区| 国产精品日韩精品欧美在线| 国产精品99久久久精品无码| 亚洲女优在线| 粉嫩av一区二区三区天美传媒| 日本韩国欧美超级黄在线观看| 欧美日韩国产二区| 三级av在线| 日韩亚洲电影在线| 天天天天天天天干| 亚洲国产中文字幕在线视频综合 | 日本道色综合久久影院| 超碰在线网址| 亚洲最大中文字幕| 国产免费一级视频| 亚洲情趣在线观看| 好吊视频在线观看| 成人激情av网| 亚洲天堂av一区二区三区| 久久精品一区二区国产| 免费观看成人在线| 亚洲国产中文在线二区三区免| 国产成人鲁鲁免费视频a| 暖暖在线中文免费日本| 色综合亚洲精品激情狠狠| 国产黄网在线观看| 亚洲成人激情自拍| 亚洲最大免费视频| 狂野欧美一区| 男人添女荫道口图片| 91精品国产福利在线观看麻豆| 欧美日韩国产精品一卡| 四虎影视4hu4虎成人| 国内精品久久久久伊人av| av网站在线免费| 亚洲国产成人精品女人久久久| 91成人国产综合久久精品| 亚洲精品视频在线观看免费| 精品国产aaa| 久久久综合网站| 日韩一区二区三区不卡视频| 国产精品久久777777毛茸茸| 欧美日韩在线观看一区| 福利在线一区| 成人av资源网| 成功精品影院| 国产成人精品日本亚洲| 蜜桃视频在线观看播放| 亚洲一级一级97网| 国产欧美久久久精品免费| 亚洲成人一区在线| 久久久久无码国产精品不卡| 亚洲综合999| 无码人妻丰满熟妇啪啪欧美| 六月丁香婷婷久久| 少妇一级淫免费放| 蜜臀久久久久久久| 日本 片 成人 在线| 极品中文字幕一区| 伊人网在线免费| 欧美日韩hd| 国产日韩av网站| 夜夜精品视频| 免费av网址在线| 一区二区三区毛片免费| 日本不卡一区二区三区四区| 日本亚洲不卡| 久久99精品久久久久子伦| 奇米影视777在线欧美电影观看| 久久riav| 成人3d动漫在线观看| 亚洲一区在线直播| 99久久影视| 日本一区网站| 欧美电影免费观看高清| 韩国成人精品a∨在线观看| 欧美日韩喷水| 日韩久久久久| 99久久精品免费看国产一区二区三区 | xxxx一级片| 久久国产福利国产秒拍| 老太脱裤让老头玩ⅹxxxx| 欧美一级精品片在线看| 综合一区中文字幕| 国产在线日韩精品| 亚洲一区二区四区| 国产在线欧美| 人妻内射一区二区在线视频| 久久99最新地址| 国产污在线观看| 欧美国产视频在线| 日韩www视频| 国产a视频精品免费观看| 国产喷水theporn| 国产激情视频一区二区在线观看| 久久久国产欧美| 国产一本一道久久香蕉| 中文字幕在线播放一区| 国产丝袜欧美中文另类| 在线免费观看日韩av| 国产精品灌醉下药二区| 色撸撸在线视频| 亚洲一区二区视频| 中文字幕一区二区三区免费看 | 精品国产鲁一鲁****| 国产精品久久久久久五月尺 | 国产一区深夜福利| xvideos.蜜桃一区二区| 视频一区二区三区在线观看 | 亚洲永久一区二区三区在线| 欧美国产专区| 日本免费黄色小视频| 国产精品亚洲欧美| 91香蕉视频免费看| 国产高清亚洲一区| 男人舔女人下部高潮全视频| 亚洲一区二区三区四区在线观看| 伊人成人在线观看| 精品亚洲永久免费精品| 久蕉依人在线视频| 欧美极品少妇全裸体| 毛片大全在线观看| 国产日韩欧美日韩大片| 亚洲三级精品| 色综合久久av| 在线亚洲成人| 人妻互换一二三区激情视频| 中文字幕日本乱码精品影院| 69xxxx国产| 日韩精品亚洲元码| 国产盗摄精品一区二区酒店| 97在线视频观看| 成人在线tv视频| 懂色av粉嫩av蜜臀av| 美女在线视频一区| 手机看片日韩av| 日本道免费精品一区二区三区| 中文字幕理论片| 精品亚洲一区二区三区四区五区| 538在线观看| 日韩美女在线观看| www.久久99| 亚洲第一在线综合在线| 久久精品观看| 巨胸大乳www视频免费观看| 香蕉乱码成人久久天堂爱免费| 亚洲精品成人在线视频| 亚洲国产黄色片| 黄页网站在线观看免费| 99久久伊人精品影院| 欧美在线观看天堂一区二区三区| 国产女同无遮挡互慰高潮91| 不卡影院免费观看| 日本一二三区不卡| 亚洲精品aⅴ中文字幕乱码| 1234区中文字幕在线观看| 国产亚洲精品久久飘花| 国产欧美日韩综合一区在线播放 | 中文字幕av一区 二区| 欧美丰满艳妇bbwbbw| 亚洲国产成人精品视频| 丰满少妇一级片| 97精品一区二区视频在线观看| 久久午夜影院| 亚洲资源视频| 国产在线国偷精品免费看| 加勒比婷婷色综合久久| 精品久久一二三区| 四虎久久免费| 91亚洲一区精品| 亚洲激情婷婷| 一级片手机在线观看| 欧美丝袜第三区| 好操啊在线观看免费视频| 99re在线视频观看| 国产视频一区三区| 国产成人免费观看网站| 337p亚洲精品色噜噜| 免费人成在线观看网站| 国产精品久久久久久久久粉嫩av| 久久影视一区| 久久久久久久久久久久国产精品| 日韩欧美有码在线| 日本a级在线| 国产精品免费一区二区三区都可以| 久久国产亚洲| 成年女人免费视频| 日本韩国视频一区二区| 九义人在线观看完整免费版电视剧| 国产成人精品日本亚洲11 | 亚洲激情校园春色| 午夜在线视频免费| 国产三级精品网站| 日韩香蕉视频| 最新日韩免费视频| 欧美综合久久久| 污污的视频网站在线观看| 国产精品av电影| 欧美日韩少妇| 亚洲区自拍偷拍| 欧美一二三区在线| 三级成人黄色影院| 欧美日韩国产不卡在线看| 国内精品伊人久久久久av一坑| 国产视频91在线| 久久视频免费在线播放| 亚洲精品小区久久久久久|