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

Prometheus+Alertmanager 實戰:告警消息推送至自定義接口

開發 前端
本文將詳細介紹如何通過Prometheus+Alertmanager構建監控告警體系,并將告警消息推送至自定義接口,包含完整配置、告警格式解析及實戰代碼。

前言

在監控系統中,及時將告警信息推送至業務系統、運維平臺或通知渠道是保障系統穩定性的關鍵環節。

本文將詳細介紹如何通過Prometheus+Alertmanager構建監控告警體系,并將告警消息推送至自定義接口,包含完整配置、告警格式解析及實戰代碼。

整體架構與工作流程

Prometheus與Alertmanager的協同工作流程如下:

  • 數據采集:Prometheus通過Exporter采集目標服務的監控指標(如CPU使用率、內存占用等)。
  • 告警規則觸發:Prometheus根據預定義的告警規則,判斷指標是否超過閾值,若觸發則生成告警。
  • 告警聚合與路由:Alertmanager接收Prometheus的告警,進行去重、分組、抑制處理后,通過 Webhook 推送到自定義接口。
  • 自定義處理:自定義接口接收告警消息,進行存儲、展示、轉發等業務處理。

圖片圖片

實現

配置 Prometheus(定義告警規則)

Prometheus負責監控指標采集和告警規則判斷,需配置指標采集目標和告警規則。

基礎配置(prometheus.yml)
global:
  scrape_interval: 15s  # 采集間隔
  evaluation_interval: 15s  # 告警規則評估間隔

scrape_configs:
  - job_name: 'node_exporter'# 采集節點監控數據(服務器CPU、內存等)
    static_configs:
      - targets: ['192.168.1.100:9100', '192.168.1.101:9100']  # 目標節點IP:端口

rule_files:
  - "alert_rules.yml"# 告警規則文件路徑
alerting:
  alertmanagers:
    - static_configs:
        - targets: ['192.168.1.200:9093']  # Alertmanager地址
告警規則配置(alert_rules.yml)

定義具體的告警觸發條件,包含標簽(labels)和注釋(annotations):

groups:
  - name: 服務器基礎監控
    rules:
      # 1. CPU使用率過高告警
      - alert: HighCpuUsage
        expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 80
        for: 2m  # 持續2分鐘觸發告警
        labels:
          severity: critical  # 告警級別:critical(嚴重)/warning(警告)
          service: node  # 業務標簽:用于路由分類
        annotations:
          summary: "服務器CPU使用率過高"
          description: "實例 {{ $labels.instance }} 的CPU使用率超過80%,當前值:{{ $value | humanizePercentage }},持續時間:2分鐘"
          threshold: "80%"# 自定義字段:閾值
          value: "{{ $value | humanizePercentage }}"# 自定義字段:當前值

      # 2. 內存使用率過高告警
      - alert: HighMemoryUsage
        expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90
        for: 5m
        labels:
          severity: warning
          service: node
        annotations:
          summary: "服務器內存使用率過高"
          description: "實例 {{ $labels.instance }} 的內存使用率超過90%,當前值:{{ $value | humanizePercentage }}"

核心字段說明:

  • expr:PromQL查詢表達式,用于判斷是否觸發告警。
  • for:持續時間,指標超過閾值持續該時間后才觸發告警。
  • labels:告警標簽,用于Alertmanager路由和分組(如按severity區分級別)。
  • annotations:告警描述信息,可包含自定義字段(如threshold)。

配置 Alertmanager(推送至自定義接口)

Alertmanager負責告警的聚合、路由和推送,通過webhook_configs配置自定義接口地址。

基礎配置(alertmanager.yml)
global:
  resolve_timeout: 5m  # 告警恢復判斷的超時時間

route:
  group_by: ['alertname', 'service']  # 按告警名稱和服務分組
  group_wait: 10s  # 組內第一個告警觸發后,等待10s再發送(合并同組告警)
  group_interval: 1m  # 同一組告警再次發送的間隔
  repeat_interval: 4h  # 重復發送相同告警的間隔(避免頻繁通知)
  receiver: 'custom-api'# 默認接收者

receivers:
  - name: 'custom-api'
    webhook_configs:
      - url: 'http://192.168.1.300:8080/api/alert/receive'# 自定義接口地址
        send_resolved: true# 發送告警恢復通知(status: resolved)
        http_config:
          # 接口認證配置(可選)
          bearer_token: 'your-api-token'# 令牌認證
          # basic_auth:  # 基礎認證
          #   username: 'admin'
          #   password: 'secret'

# 進階:按標簽路由到不同接口(可選)
# routes:
#   - match:
#       severity: critical
#     receiver: 'critical-api'  # 嚴重告警發送到專用接口
#   - match:
#       severity: warning
#     receiver: 'warning-api'  # 警告告警發送到普通接口

自定義接口開發(接收告警消息)

自定義接口需接收Alertmanager發送的POST請求,請求體為JSON格式,包含完整的告警信息。

告警消息 JSON 格式詳解

Alertmanager推送的JSON結構如下(包含firing和resolved兩種狀態):

{
  "receiver": "custom-api",
"status": "firing",  // 告警狀態:firing(觸發)/resolved(恢復)
"alerts": [
    {
      "status": "firing",
      "labels": {
        "alertname": "HighCpuUsage",
        "instance": "192.168.1.100:9100",
        "severity": "critical",
        "service": "node"
      },
      "annotations": {
        "summary": "服務器CPU使用率過高",
        "description": "實例 192.168.1.100:9100 的CPU使用率超過80%,當前值:85%,持續時間:2分鐘",
        "threshold": "80%",
        "value": "85%"
      },
      "startsAt": "2023-10-01T08:30:00.000Z",  // 告警開始時間
      "endsAt": "0001-01-01T00:00:00Z",        // 告警結束時間(恢復時更新)
      "generatorURL": "http://prometheus:9090/graph?g0.expr=..."  // 告警來源鏈接
    }
  ],
"groupLabels": {
    "alertname": "HighCpuUsage",
    "service": "node"
  },
"commonLabels": {
    "alertname": "HighCpuUsage",
    "service": "node"
  },
"commonAnnotations": {},
"externalURL": "http://alertmanager:9093",  // Alertmanager地址
"version": "4",
"groupKey": "{}/{alertname='HighCpuUsage',service='node'}"
}

關鍵字段解析:

  • status:全局告警狀態(與alerts[0].status一致)。
  • alerts:告警數組(可能包含多個同組告警)。
  • labels:告警標簽(用于分類和路由)。
  • annotations:告警描述(包含自定義字段如threshold)。
  • startsAt/endsAt:告警開始/結束時間(恢復時endsAt更新為實際時間)。
接口實現

使用Spring Boot開發自定義接口,解析告警消息并處理:

@RestController
@RequestMapping("/api/alert")
public class AlertReceiverController {

    private static final Logger log = LoggerFactory.getLogger(AlertReceiverController.class);

    // 存儲告警的數據庫操作(示例)
    @Autowired
    private AlertRecordService alertRecordService;

    @PostMapping("/receive")
    public ResponseEntity<String> receiveAlert(@RequestBody AlertMessage alertMessage) {
        log.info("收到告警消息:{}", alertMessage);

        // 1. 解析告警狀態
        String globalStatus = alertMessage.getStatus();
        log.info("全局告警狀態:{}", globalStatus);

        // 2. 處理每個告警
        for (AlertDetail alert : alertMessage.getAlerts()) {
            // 提取核心信息
            String alertName = alert.getLabels().get("alertname");
            String instance = alert.getLabels().get("instance");
            String severity = alert.getLabels().get("severity");
            String summary = alert.getAnnotations().get("summary");
            String description = alert.getAnnotations().get("description");
            LocalDateTime startTime = parseDateTime(alert.getStartsAt());

            // 3. 業務處理:存儲到數據庫
            AlertRecord record = new AlertRecord();
            record.setAlertName(alertName);
            record.setInstance(instance);
            record.setSeverity(severity);
            record.setSummary(summary);
            record.setDescription(description);
            record.setStatus(globalStatus);
            record.setStartTime(startTime);

            // 若為恢復狀態,補充結束時間
            if ("resolved".equals(globalStatus)) {
                record.setEndTime(parseDateTime(alert.getEndsAt()));
            }

            alertRecordService.save(record);
        }

        return ResponseEntity.ok("告警接收成功");
    }

    // 時間格式轉換(ISO 8601格式)
    private LocalDateTime parseDateTime(String dateTimeStr) {
        if (dateTimeStr == null || "0001-01-01T00:00:00Z".equals(dateTimeStr)) {
            return null;
        }
        return LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ISO_DATE_TIME)
                .atZone(ZoneOffset.UTC)
                .withZoneSameInstant(ZoneId.systemDefault())
                .toLocalDateTime();
    }

    // 實體類定義(省略getter/setter)
    public static class AlertMessage {
        private String receiver;
        private String status;
        private List<AlertDetail> alerts;
        private Map<String, String> groupLabels;
        private Map<String, String> commonLabels;
        private Map<String, String> commonAnnotations;
        private String externalURL;
        private String version;
        private String groupKey;
    }

    public static class AlertDetail {
        private String status;
        private Map<String, String> labels;
        private Map<String, String> annotations;
        private String startsAt;
        private String endsAt;
        private String generatorURL;
    }
}

進階技巧

告警消息模板自定義

通過Alertmanager的模板功能,自定義推送至接口的 JSON 格式(如過濾字段、添加業務標識)。

在alertmanager.yml中配置模板:

templates:
  - '/etc/alertmanager/templates/custom_template.tmpl'  # 模板文件路徑

receivers:
  - name: 'custom-api'
    webhook_configs:
      - url: 'http://192.168.1.300:8080/api/alert/receive'
        send_resolved: true
        body: '{{ template "custom.alert" . }}'  # 引用模板
{{ define "custom.alert" }}
{
"alertId": "{{ .GroupKey }}",
"status": "{{ .Status }}",
"service": "{{ index .CommonLabels "service" }}",
"alerts": [
    {{ range .Alerts }}
    {
      "instance": "{{ index .Labels "instance" }}",
      "summary": "{{ .Annotations.summary }}",
      "value": "{{ .Annotations.value }}"
    }{{ if not loop.Last }},{{ end }}
    {{ end }}
  ],
"timestamp": "{{ now }}"
}
{{ end }}
告警抑制(避免風暴)

通過inhibit_rules配置抑制規則,避免因一個故障引發大量關聯告警(如服務器宕機時,抑制該服務器的所有應用告警):

inhibit_rules:
  - source_match:
      severity: 'critical'  # 源告警級別
    target_match:
      severity: 'warning'  # 被抑制的告警級別
    equal: ['instance']  # 當instance標簽相同時觸發抑制

責任編輯:武曉燕 來源: 一安未來
相關推薦

2023-03-26 08:41:37

2021-02-18 15:36:13

PrometheusAlertmanageGrafana

2023-09-06 10:33:40

夜鶯監控數據庫

2020-12-14 10:26:48

Prometheus 監控Services

2025-01-06 10:38:04

2015-02-12 15:33:43

微信SDK

2021-05-28 08:58:41

Golang網卡metrics

2015-02-12 15:38:26

微信SDK

2022-04-11 07:47:45

zabbix郵件告警項目

2021-03-26 20:37:14

Prometheus監控指標

2022-06-30 14:02:07

鴻蒙開發消息彈窗組件

2023-06-06 08:01:18

自定義接口響應

2022-06-24 07:08:24

OHOS自定義服務

2011-07-05 18:51:51

QT 控件 鼠標

2011-06-20 16:03:03

Qt 控件 鼠標

2025-04-09 08:05:00

運維告警Prometheus

2016-08-18 13:56:33

AndroidExecutorsubmit

2009-08-17 17:24:02

C#自定義消息框

2023-12-29 08:01:52

自定義指標模板

2022-08-30 13:03:39

prometheusAlert
點贊
收藏

51CTO技術棧公眾號

国产日韩欧美视频在线| 亚洲日韩中文字幕在线播放| 91视频 - 88av| 国内爆初菊对白视频| 国产一区二区精品| 最近2019中文免费高清视频观看www99| 国产一伦一伦一伦| av电影院在线看| 久久久久九九视频| 亚洲最大福利网| 国产又黄又猛又粗又爽| 国产精品成人一区二区不卡| 精品国内二区三区| jizz欧美激情18| 男女在线观看视频| 欧美国产亚洲另类动漫| 福利视频一区二区三区| 特级西西444www高清大视频| 亚洲私人影院| 日韩视频免费在线观看| 一级性生活毛片| 日韩三级精品| 欧美日韩美女一区二区| 鲁一鲁一鲁一鲁一色| 国产理论在线观看| 国产偷v国产偷v亚洲高清| 高清av免费一区中文字幕| 丰满人妻一区二区三区四区| 影音先锋久久精品| 久久这里只有精品视频首页| 一区二区精品免费| 老牛国内精品亚洲成av人片| 3751色影院一区二区三区| 欧美 日韩 国产一区| 大黄网站在线观看| 亚洲欧美日韩久久精品| 相泽南亚洲一区二区在线播放| 少妇高潮一区二区三区69| 国产福利一区在线观看| 国产日韩av在线播放| 五月婷婷六月婷婷| 久久精品网址| 欧美性受xxxx白人性爽| 日本中文字幕免费观看| 午夜精品电影| 欧美另类高清videos| 强制高潮抽搐sm调教高h| 国产一区网站| 亚洲日本中文字幕| a天堂中文字幕| 欧美猛男男男激情videos| 日韩av有码在线| 星空大象在线观看免费播放| 福利片一区二区| 精品国产sm最大网站免费看| 动漫av在线免费观看| 亚洲视频精选| 精品国产伦一区二区三区观看体验| 欧洲成人午夜精品无码区久久| 久久久91麻豆精品国产一区| 日韩免费电影网站| 亚洲国产精品狼友在线观看| 国内精品偷拍| 亚洲色图美腿丝袜| 天堂在线中文视频| 欧美aaaaaaaaaaaa| 久久综合五月天| 欧美成人精品一区二区免费看片| 欧美久久九九| 26uuu日韩精品一区二区| 伊人手机在线视频| 日韩av电影免费观看高清完整版| 国产精品嫩草影院久久久| 在线观看亚洲一区二区| 国内精品在线播放| 国产精品我不卡| 欧洲视频在线免费观看| 中文字幕的久久| 亚洲第一精品区| 超清av在线| 在线精品观看国产| 五月六月丁香婷婷| 精品女人视频| 国产亚洲欧洲高清一区| 日韩精品一区二区亚洲av性色| 午夜亚洲福利| 日韩免费精品视频| 一级做a爱片性色毛片| 福利91精品一区二区三区| 玛丽玛丽电影原版免费观看1977 | 亚洲国产av一区二区三区| 日韩中文字幕91| 91在线高清免费观看| 好男人在线视频www| 久久精品亚洲精品国产欧美 | 免费黄网站在线| 亚洲一区二区美女| 福利在线一区二区三区| 亚洲经典视频| 在线视频精品一| 精品无码久久久久久久| 琪琪一区二区三区| 国产在线一区二区三区播放| 日本视频在线| 日韩欧美亚洲综合| 日本高清免费在线视频| 一区二区三区日本久久久| 欧美肥老妇视频| 久久国产香蕉视频| 97精品久久久久中文字幕| 中文字幕欧美日韩一区二区| 韩国美女久久| 精品播放一区二区| 国产黄色录像片| 老司机免费视频久久| 国产高清自拍99| 国产日产一区二区| 欧美日本一区二区三区四区| asian性开放少妇pics| 午夜国产一区二区| 国产成人亚洲综合| 亚洲色欧美另类| 亚洲一区二区三区免费视频| 国产成人美女视频| 精品久久久久久久| 欧美在线观看一区二区三区| 成人毛片在线精品国产| 亚洲三级电影全部在线观看高清| 午夜欧美福利视频| 婷婷精品在线观看| 97热精品视频官网| 成人久久久精品国产乱码一区二区 | 亚洲高清资源| 亚洲综合成人婷婷小说| 在线观看免费黄视频| 日本乱人伦aⅴ精品| 偷拍女澡堂一区二区三区| 亚洲福利一区| 国产伦精品一区二区三区免| 国产深夜视频在线观看| 日韩色在线观看| 国产这里有精品| 国产一区二区h| 久久久久亚洲av无码专区喷水| 亚洲精品tv| 精品国偷自产在线视频99| 伊人网av在线| 国产精品丝袜久久久久久app| 91激情视频在线| 欧美美女视频| 国产精品女主播| 午夜视频在线观看网站| 欧美日韩国产高清一区二区三区| youjizz亚洲女人| 精品亚洲免费视频| 在线观看三级网站| 视频二区欧美| 欧美影院在线播放| 国产福利在线| 在线成人av网站| 欧美三级在线免费观看| www.久久久久久久久| 免费欧美一级视频| 精品国产精品国产偷麻豆| 国产视频999| 污污在线观看| 亚洲电影在线观看| chinese国产精品| 国产精品久久久久久久久搜平片 | 久久亚洲精品毛片| www.麻豆av| 姬川优奈aav一区二区| 国产ts在线播放| 国产一区二区导航在线播放| 日本人体一区二区| 精品色999| av在线不卡观看| 美女100%一区| 久久这里有精品| 天堂中文资源在线观看| 欧美中文字幕亚洲一区二区va在线| 大地资源高清在线视频观看| 国产91在线看| 粉嫩虎白女毛片人体| 亚洲五月综合| 久久99蜜桃综合影院免费观看| 国产一区二区三区影视| 欧美高清在线视频观看不卡| 邻家有女韩剧在线观看国语| 91精品欧美久久久久久动漫| √资源天堂中文在线| |精品福利一区二区三区| 人妻 日韩 欧美 综合 制服| 秋霞影院一区二区| 欧美国产日韩激情| 日韩久久视频| 久精品国产欧美| 精品成人18| 国产成人综合一区二区三区| 色在线视频网| 色婷婷av一区二区三区在线观看| 欧美 日韩 综合| 欧美日本一道本| 日日夜夜操视频| 亚洲国产精品久久人人爱| 亚洲色图 激情小说| jiyouzz国产精品久久| 欧美成人手机在线视频| 久久精品人人做人人爽电影蜜月| 伊人网在线免费| 成人午夜av| 欧美日韩国产综合在线| 91精品国产自产在线丝袜啪 | 日韩一级免费视频| 欧美日韩视频专区在线播放| 美日韩一二三区| 亚洲国产婷婷综合在线精品| 天堂网中文在线观看| 国产日韩av一区| 日韩网站在线播放| 成人网在线免费视频| 宇都宫紫苑在线播放| 久久国产麻豆精品| 国产精彩免费视频| 香蕉久久夜色精品| 国产a级片网站| 激情av一区| 4444在线观看| 欧美影院一区| 国产盗摄视频在线观看| 国产二区精品| 伊人av成人| 99成人在线视频| 亚洲精品视频一二三| 日韩毛片视频| 亚洲一区二区三区涩| 日韩免费一区| 一区二区冒白浆视频| 色小子综合网| 中文字幕在线亚洲精品| 97精品一区二区| 午夜探花在线观看| 亚洲精品小说| av动漫在线免费观看| 欧美日本一区| 久久精品国产sm调教网站演员| 影院欧美亚洲| av免费播放网址| 日韩精品免费视频人成| 久久久精品麻豆| 国内成人自拍视频| 中文字幕在线播放一区二区| 国产成人在线免费| 中文字幕精品视频在线| 久久综合九色综合97婷婷女人| 国产 欧美 在线| 国产精品第四页| 欧美成人精品一区二区免费看片| 亚洲宅男天堂在线观看无病毒| 国产无码精品在线观看| 欧美午夜无遮挡| 欧美激情一区二区三区免费观看| 欧美日韩一二区| jlzzjlzz亚洲女人18| 精品国产免费人成在线观看| 视频国产在线观看| 亚洲最新av在线| av电影高清在线观看| 97在线观看视频国产| 成人av色网站| 91黄在线观看| 日韩精品导航| 亚洲一区二区三区四区中文| 亚洲特色特黄| 国产免费视频传媒| 国模一区二区三区白浆| 欧类av怡春院| 国产精品久久久久久久午夜片| 我家有个日本女人| 欧美日韩亚洲一区二| 国产精品高潮呻吟久久久| 精品国产乱码久久久久久免费| 欧美高清电影在线| 久久精品国产精品亚洲| 美女在线视频免费| 国产日韩欧美在线播放| 丁香五月缴情综合网| 亚洲国产精品www| 激情综合电影网| 色婷婷成人在线| 99久久精品国产精品久久| 国产三级精品三级观看| 亚洲成av人**亚洲成av**| 久久久久久av无码免费看大片| 日韩欧美国产电影| 韩国三级在线观看久| 欧美激情伊人电影| 欧美视频精品| 精品国产一区二区三区久久久久久 | 中文字幕在线中文字幕在线中三区| 国产在线观看一区二区三区| 五月国产精品| 日韩极品视频在线观看| 免费成人美女在线观看.| 亚洲精品国产成人av在线| 中文字幕一区在线| 国内精品福利视频| 日韩视频免费观看高清完整版| 第一视频专区在线| 4438全国亚洲精品在线观看视频| 久久久久毛片免费观看| 日韩一区二区电影在线观看| 亚洲一区不卡| 中文字幕一区二区三区乱码不卡| 亚洲天天做日日做天天谢日日欢| 成人a v视频| 日韩av在线电影网| 啪啪免费视频一区| 成人免费xxxxx在线观看| 自拍偷拍精品| 免费av手机在线观看| 国产盗摄精品一区二区三区在线 | 午夜精品久久久久久久久久| 99久久精品日本一区二区免费| 最近2019免费中文字幕视频三| 奇米777日韩| 欧美福利精品| 国产人成精品一区二区三| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 国产精品久久久久久久免费大片 | 精品综合久久久久久97| 3d动漫一区二区三区在线观看| 五月天色一区| 丝袜美腿亚洲综合| 少妇人妻好深好紧精品无码| 色偷偷久久一区二区三区| 欧洲视频在线免费观看| 2018日韩中文字幕| 欧美日韩导航| 99精品人妻少妇一区二区| 99久久国产免费看| 日韩欧美三级在线观看| 亚洲国产中文字幕在线观看| free性欧美| 精品一区久久久| 久久国产成人| 亚洲AV无码国产成人久久| 日韩欧中文字幕| 国产香蕉视频在线看| 国产精品久久久久久久美男| 日本一区二区三区视频| 亚洲图色中文字幕| 亚洲欧美日韩国产手机在线| www.麻豆av| 91sao在线观看国产| 中文字幕伦av一区二区邻居| 中文字幕第36页| 亚洲人成在线观看一区二区| 成 人 免费 黄 色| 久久免费高清视频| 亚洲精品白浆高清| 污片在线免费看| 亚洲精品中文字幕乱码三区| 黄色美女一级片| 日本高清视频精品| 午夜视频久久久| 欧美日韩国产在线一区| 在线成人精品视频| 亚洲一区二区三区国产| 手机看片福利永久| 国产91在线播放| 999国产精品999久久久久久| 青青草精品在线| 欧美日韩人人澡狠狠躁视频| seseavlu视频在线| 91在线免费看网站| 国产欧美另类| 91香蕉视频污在线观看| 精品成人一区二区三区四区| 色香欲www7777综合网| 中文字幕一区二区三区四区五区| 国产91精品免费| 波多野结衣网站| 欧美尺度大的性做爰视频| 亚洲人成精品久久久| 免费av不卡在线| 欧美午夜xxx| 国产cdts系列另类在线观看| 久久国产精品99久久久久久丝袜| 蜜臀av性久久久久蜜臀av麻豆| 久草视频手机在线观看| 亚洲天堂av在线免费观看| 日本综合精品一区| 国语对白做受xxxxx在线中国| 悠悠色在线精品| 成人好色电影| 国产亚洲一区在线播放| 精品伊人久久久久7777人| 国产精品黄色大片| 久久精品在线视频|