精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人免费黄色网| 日韩精品视频在线播放| 大片在线观看网站免费收看| 日本黄色三级视频| 香蕉亚洲视频| 日韩中文视频免费在线观看| 久国产精品视频| heyzo在线欧美播放| 国产农村妇女毛片精品久久麻豆| 国产专区欧美专区| xxxxxx国产| 国产精品久久久久蜜臀| 日韩av在线电影网| 免费黄色在线播放| 欧美综合社区国产| 欧美日韩精品在线观看| av不卡在线免费观看| 日本啊v在线| 国产精品一区二区在线观看不卡 | 日韩少妇裸体做爰视频| 久久国产成人午夜av影院宅| 日韩av在线最新| 色男人天堂av| 91精品影视| 天天色图综合网| 最新av网址在线观看| 国产香蕉视频在线看| 成人免费精品视频| 亚洲影院污污.| 中文字幕在线观看免费| 亚洲欧美视频| 97久久精品人搡人人玩 | 亚洲成人av在线电影| 中文字幕在线观看一区二区三区| 国产一区二区影视| 99精品视频在线播放观看| 亚洲aⅴ男人的天堂在线观看 | 国产探花视频在线| 久久不卡国产精品一区二区| 精品国偷自产国产一区| 国产精品久久久久久9999| 成人综合网站| 欧美视频一区二区在线观看| 超碰影院在线观看| 中日韩脚交footjobhd| 精品久久久久久久久久| 久久久久久免费看| 黄色软件视频在线观看| 香蕉乱码成人久久天堂爱免费| 国产资源第一页| 中文字幕中文字幕在线中高清免费版| 国产精品的网站| 日日噜噜噜夜夜爽爽| 黄色一级片在线观看| 亚洲欧洲性图库| 手机在线视频你懂的| 麻豆tv入口在线看| 中文字幕佐山爱一区二区免费| 亚洲综合欧美日韩| 黄网站app在线观看| 亚洲久草在线视频| 人妻无码一区二区三区四区| 高潮毛片在线观看| 亚洲一线二线三线视频| 缅甸午夜性猛交xxxx| 超碰在线cao| 色婷婷久久久综合中文字幕 | 韩国成人在线| 欧美日韩精品一区二区天天拍小说 | 亚洲熟妇一区二区| 精精国产xxxx视频在线播放| 图片区小说区区亚洲影院| 免费成人在线视频网站| 裤袜国产欧美精品一区| 欧美色综合天天久久综合精品| 天天操天天干天天做| 亚洲精品视频一二三区| 亚洲精品国产欧美| 青青青视频在线播放| 欧美a级片一区| 2024亚洲男人天堂| 一区二区日韩视频| 成人在线视频一区| 欧美一区二区三区四区夜夜大片| 在线视频二区| 亚洲成人av中文| 国产精品人人爽人人爽| 日韩欧美一级| 亚洲三级黄色在线观看| 久久爱一区二区| 99在线精品视频在线观看| 国产精品高潮在线| 亚洲精品国产av| 国产亚洲自拍一区| 国产一区二区三区乱码| 性欧美1819sex性高清| 欧美一区二区观看视频| 精品人妻少妇嫩草av无码| 国产精品99久久精品| 97视频免费看| 国产偷拍一区二区| 国产日韩精品一区二区浪潮av| 在线观看17c| 成人综合网站| 亚洲精品资源美女情侣酒店| 欧美做爰啪啪xxxⅹ性| 99国产精品久久久久久久成人热| 国产原创欧美精品| 你懂的在线网址| 亚洲永久免费视频| 国产精品自在自线| 美女久久99| 88国产精品欧美一区二区三区| 一级黄色大片免费| 久久婷婷国产综合国色天香| 91传媒免费视频| 57pao成人永久免费| 亚洲美女在线观看| 日韩乱码在线观看| 国产91精品精华液一区二区三区 | 午夜成人免费视频| 久久久久xxxx| 日本一区二区在线看| 国产成人激情小视频| 性插视频在线观看| 亚洲午夜免费电影| 绯色av蜜臀vs少妇| 亚洲综合自拍| 国产精品视频自拍| 国产香蕉视频在线看| 色婷婷一区二区| 午夜一区二区三区免费| 亚洲精选成人| 国产精品亚洲不卡a| 香蕉久久aⅴ一区二区三区| 欧美群妇大交群中文字幕| 中文字幕第24页| 日韩电影免费在线看| 日本免费高清一区| 午夜精品久久久久久久久久蜜桃| 精品无码久久久久久国产| 日韩精品1区2区| 26uuu欧美| 国产麻花豆剧传媒精品mv在线| 猫咪成人在线观看| 1769国内精品视频在线播放| 亚州av在线播放| 欧美日韩国产一区二区三区| 538国产视频| 久色成人在线| 日韩影片在线播放| 久久亚洲资源中文字| 日韩在线一区二区三区免费视频| 亚洲一区在线观| 亚洲欧美另类在线| 日韩精品xxx| 亚洲国产专区| 免费av一区二区三区| 美女100%一区| 日韩中文字幕视频在线观看| 99久久精品免费看国产交换| 亚洲国产成人高清精品| 国产精品无码专区| 玖玖在线精品| 欧美性受xxxx黑人猛交88| 精品视频在线播放一区二区三区 | 日韩在线视频观看| 国产美女免费视频| 亚洲成人免费视| 中文字幕免费高清| 蜜臀av性久久久久蜜臀av麻豆| 在线视频不卡国产| 国产女人18毛片水真多18精品| 欧美一级大胆视频| 在线观看黄色av| 日韩女优av电影在线观看| 日本一二三区视频| 中文字幕精品在线不卡| 香蕉视频免费网站| 日韩福利视频网| 国产一二三四区在线观看| 久久a爱视频| 国产在线拍揄自揄视频不卡99| 菠萝蜜视频在线观看www入口| 亚洲欧美日韩成人| 99国产精品99| 色狠狠一区二区| 久操免费在线视频| 欧美国产一区二区| 亚洲国产精品狼友在线观看| 日韩精品五月天| 亚洲五码在线观看视频| 自拍自偷一区二区三区| 96sao精品视频在线观看| 亚洲三级欧美| 久久亚洲精品视频| 国产www.大片在线| 亚洲大胆人体av| 一区二区日韩视频| 日韩欧美主播在线| 久久香蕉精品视频| 国产精品精品国产色婷婷| 第四色在线视频| 国产精品一区在线| 亚洲 欧美 另类人妖| 日韩天天综合| 无码毛片aaa在线| sdde在线播放一区二区| 狠狠久久综合婷婷不卡| 日韩三级精品| 国产精品视频1区| 六月婷婷综合| 91av在线看| 激情影院在线| 日韩在线欧美在线国产在线| 神马亚洲视频| 亚洲第一在线视频| 午夜精品久久久久久久96蜜桃| 欧美在线免费视屏| 三级视频在线观看| 精品久久久久久久久久ntr影视| 91嫩草|国产丨精品入口| 欧美国产亚洲另类动漫| 亚洲综合色一区| 99v久久综合狠狠综合久久| 丰满少妇一区二区三区专区| 久久99久久99| 不卡的av中文字幕| 免费在线一区观看| 亚洲天堂网一区| 青草国产精品久久久久久| 久久精品网站视频| 日韩激情av在线| 日韩欧美在线免费观看视频| 性久久久久久| 干日本少妇首页| 久久精品中文| 精品视频无码一区二区三区| 先锋影音久久| 日本在线观看a| 久久综合激情| 一区二区三区韩国| 久久福利视频一区二区| 日本在线一二三区| 国产一区二区调教| 亚洲av午夜精品一区二区三区| 国产69精品久久久久毛片 | 91丨九色丨蝌蚪丨对白| 欧美色网一区二区| 国产又色又爽又黄又免费| 91精品国产综合久久香蕉麻豆| 国产手机av在线| 日韩欧美电影一区| 人人妻人人玩人人澡人人爽| 亚洲国产成人爱av在线播放| 亚洲欧洲视频在线观看| 亚洲欧美精品suv| 日韩免费网站| 免费97视频在线精品国自产拍| 国产三线在线| 欧美亚洲伦理www| 欧美123区| 91午夜在线播放| www.丝袜精品| 麻豆91蜜桃| 日韩免费av| 欧美一区二区三区综合| 9色精品在线| 亚洲老女人av| 国产99久久久国产精品潘金 | 综合久久给合久久狠狠狠97色 | 成人羞羞视频免费| 亚洲福利天堂| 久久免费看毛片| 在线播放不卡| 男女啪啪网站视频| 国产中文字幕精品| 欧美大喷水吹潮合集在线观看| 国产午夜精品一区二区| 久久中文免费视频| 色综合久久久网| 国产裸体永久免费无遮挡| 亚洲国产私拍精品国模在线观看| 欧美日韩国产中文字幕在线| 久久精品99久久久香蕉| 黄在线观看免费网站ktv| 国产精品久久网| 亚洲国产中文在线| 图片区小说区区亚洲五月| 欧美午夜一区二区福利视频| 欧美黄网站在线观看| 国产在线播放一区二区三区| 欧美熟妇精品黑人巨大一二三区| 中文字幕中文字幕中文字幕亚洲无线| 久久综合久久鬼| 欧美日韩久久久一区| 少妇精品视频一区二区| 日韩色av导航| 欧美大胆性生话| 国产精品免费观看高清| 日韩电影免费网址| 日批视频在线免费看| 国产精品小仙女| 欧洲美熟女乱又伦| 天天综合色天天| 99久久久国产精品无码网爆| 一区二区三区精品99久久 | 欧美三级蜜桃2在线观看| 熟妇人妻一区二区三区四区| 久久精品国产欧美亚洲人人爽| 欧美羞羞视频| 精品国产一区二区三区免费| 亚洲国产一成人久久精品| 国产成人久久777777| 成人福利视频在线| 亚洲熟女www一区二区三区| 欧美区在线观看| yw视频在线观看| 热久久免费国产视频| 久久香蕉网站| 妞干网在线视频观看| 国产99精品国产| 久久婷婷国产麻豆91| 日韩免费一区二区| 曰本三级在线| 亚洲www在线| 久久久五月天| 中文字幕1234区| 中文字幕一区二区三中文字幕| 无码人妻av一区二区三区波多野| 日韩电视剧免费观看网站| 韩国成人免费视频| 国产一级二级三级精品| 欧美天天视频| 无码人妻一区二区三区在线| 一区二区三区在线影院| 国产情侣在线播放| 欧美成人午夜剧场免费观看| 免费一级欧美片在线观看网站| 亚洲资源在线网| 韩国欧美一区二区| 福利所第一导航| 日韩免费观看高清完整版| 欧美另类tv| 国产精品一区二区欧美| 日韩午夜激情| 双性尿奴穿贞c带憋尿| 色综合久久久久综合99| 国产色a在线| 国产精品视频免费在线观看| 日本不卡电影| 亚洲第一天堂久久| 一区二区三区小说| 亚洲精品成人区在线观看| 久久久久久久国产| 欧美日韩一区二区三区四区不卡 | 国产jizzjizz一区二区| 男女视频免费看| 亚洲精品在线观看www| 成人国产一区| 色乱码一区二区三区熟女| 岛国一区二区三区| 四虎成人在线观看| 色久欧美在线视频观看| 日本精品在线播放 | 久久精品国内一区二区三区| 天海翼在线视频| 亚洲精品大尺度| av成人在线播放| 国产一二三四区在线观看| 99久久精品国产毛片| 久久国产香蕉视频| 欧美xxxx18国产| 亚洲毛片免费看| 国产精品嫩草影院8vv8 | 免费91麻豆精品国产自产在线观看| 在线日韩成人| www.色就是色| 一区二区高清在线| 免费在线稳定资源站| 成人精品视频在线| 在线亚洲观看| 欧美性生给视频| 亚洲精品国产美女| 亚洲三级在线| 播放灌醉水嫩大学生国内精品| 中文字幕色av一区二区三区| 四虎在线观看| 亚洲一区二区中文| 日韩福利视频导航| 日韩三级免费看| 久久综合免费视频影院| 亚洲免费福利一区| 国产精品熟妇一区二区三区四区| 日本韩国一区二区三区| 欧美黄色视屏| 亚洲综合av一区| 久久久久久久久久久黄色| 成人av免费播放| 国产日韩av高清|