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

人人妻人人藻人人爽欧美一区| 人人妻人人澡人人爽欧美一区| 日韩手机在线视频| 欧美色图一区| 8v天堂国产在线一区二区| 无码人妻精品一区二区三区99v| 亚洲精品久久久久久无码色欲四季 | 麻豆精品国产传媒| 九色porny自拍视频在线观看| 91美女在线视频| 国产一区红桃视频| 亚洲日本韩国在线| 2023国产精品久久久精品双| 亚洲精品久久久久久久久| av污在线观看| 欧美巨大丰满猛性社交| 亚洲女人小视频在线观看| 就去色蜜桃综合| jlzzjlzzjlzz亚洲人| 三级欧美韩日大片在线看| 久国内精品在线| 阿v天堂2014| 欧美日韩直播| 精品久久久久久久人人人人传媒 | 日韩成人在线视频观看| 免费成年人高清视频| 日韩激情电影| 亚洲综合免费观看高清完整版| 婷婷久久五月天| 日本精品专区| 成人免费av网站| 91久久精品美女| 亚洲中文无码av在线| 一本久道久久久| 欧美日韩xxx| 五月天色婷婷丁香| 日本久久精品| 亚洲视频axxx| 新91视频在线观看| 日韩激情网站| 日韩精品欧美国产精品忘忧草 | 日韩中文字幕视频| 白白色免费视频| 色吊丝一区二区| 亚洲第一区中文99精品| 国产51自产区| 成人三级av在线| 日韩亚洲欧美一区二区三区| 一二三级黄色片| 亚洲热av色在线播放| 欧美日韩在线综合| 国产三级国产精品国产专区50| 日韩毛片免费观看| 色综合天天性综合| 久久久久久久久久久免费视频| 国产免费拔擦拔擦8x高清在线人| 1024成人网| 佐佐木明希av| 在线午夜影院| 亚洲夂夂婷婷色拍ww47| 日本免费a视频| 国产美女福利在线观看| 亚洲一二三区不卡| 日日摸日日碰夜夜爽无码| h片在线观看下载| 精品国产成人在线| 欧美日韩亚洲第一| 桃花岛tv亚洲品质| 精品视频一区 二区 三区| 亚洲黄色片免费| 精品国产乱码一区二区三区| 日韩精品一区二区三区蜜臀| 99riav国产精品视频| 欧美大胆a级| 亚洲午夜精品久久久久久性色| 中文字幕第20页| 99久久99久久精品国产片桃花| 精品国内产的精品视频在线观看| www.毛片com| 亚洲成人原创| 国产v综合ⅴ日韩v欧美大片| 中文字幕福利视频| 国产高清精品网站| 美女精品国产| 黄在线免费观看| 洋洋成人永久网站入口| 欧美牲交a欧美牲交aⅴ免费真| 久久69成人| 欧美zozozo| 亚洲日本精品视频| 中文字幕午夜精品一区二区三区| 91精品国产色综合久久不卡98| 三级网站在线播放| 国产一区二区三区av电影| 激情小说网站亚洲综合网| 国产精品一级伦理| 一区二区三区四区中文字幕| www.中文字幕在线| 日日夜夜精品| 亚洲国产日韩精品在线| www.涩涩爱| 亚洲欧洲日本mm| 国产日韩精品综合网站| 内射无码专区久久亚洲| 日本一区二区三区dvd视频在线| 中文字幕精品在线播放| 免费观看一级欧美片| 4438x亚洲最大成人网| 亚洲第九十七页| 亚洲国产精品日韩专区av有中文| 668精品在线视频| 国产又粗又猛又黄又爽无遮挡| aaa欧美色吧激情视频| 精品一区二区成人免费视频| xxxxx性欧美特大| 欧美mv日韩mv国产网站app| 免费看黄色av| 国产亚洲一区在线| 操一操视频一区| 暖暖日本在线观看| 色老汉一区二区三区| 国产免费a级片| 91精品国偷自产在线电影| 日本免费在线精品| 人妻一区二区三区免费| 亚洲美女视频一区| 中文字幕永久有效| av在线不卡免费观看| 51久久精品夜色国产麻豆| 国产av无码专区亚洲av麻豆| 国产精品每日更新| 超碰网在线观看| 精品国产亚洲一区二区三区大结局 | 国产成人一区二区在线| 五月婷婷丁香花| 亚洲宅男天堂在线观看无病毒| 中文字幕精品一区二区三区在线| 国产亚洲一卡2卡3卡4卡新区| 91精品国产91久久久久久不卡| 精品国产无码一区二区三区| 亚洲欧美日韩中文播放| 不卡的av中文字幕| 日韩在线高清| 国产欧美一区二区三区在线| av在线收看| 91成人在线观看喷潮| 成人精品999| 久久亚洲一区| 欧美精品中文字幕一区二区| 性国裸体高清亚洲| 精品无人国产偷自产在线| 日韩污视频在线观看| 99久久伊人网影院| www.com毛片| 欧美人妖在线| 国产精品久久久亚洲| 成人不用播放器| 在线亚洲高清视频| 少妇太紧太爽又黄又硬又爽小说| 日本美女一区二区三区视频| 日韩久久精品一区二区三区| 亚洲国产尤物| 久久精品国产2020观看福利| 国产美女三级无套内谢| 一区二区三区日本| 免费a v网站| 免费欧美日韩| 亚洲国产另类久久久精品极度| 欧美日韩va| 欧美另类高清videos| 风流少妇一区二区三区91| 欧美三级欧美成人高清www| 一级片手机在线观看| 免费成人美女在线观看.| 欧美 日韩 国产 在线观看| 视频一区中文字幕精品| 91精品国产高清久久久久久91| 日本不卡视频一区二区| 欧美视频在线观看一区二区| 性欧美videos| 91丨九色丨黑人外教| 亚洲天堂av线| 欧美xxx在线观看| 国模精品一区二区三区| jizz欧美| 欧美国产精品人人做人人爱| 青青国产在线| 在线电影国产精品| 日韩无码精品一区二区三区| 国产欧美视频一区二区三区| 992tv人人草| 亚洲欧美日本国产专区一区| 在线无限看免费粉色视频| 欧美男人操女人视频| 国产在线拍偷自揄拍精品| 男女在线视频| 国产精品欧美综合在线| 国产欧美一区二区三区久久人妖| 成人av黄色| 亚洲精品国产综合区久久久久久久| jizz国产在线观看| 综合激情成人伊人| 性久久久久久久久久| 狠狠色狠狠色综合日日91app| 国产在线播放观看| 久久蜜桃av| 久久av一区二区| **国产精品| 日本久久精品视频| 国产精品一区hongkong| 中文字幕综合在线| 亚洲av毛片成人精品| 欧美一区二区三区四区在线观看| 九一国产在线观看| 一二三区精品视频| 欧美极品jizzhd欧美18| wwwwww.欧美系列| 日本特黄在线观看| 蜜臀av性久久久久av蜜臀妖精 | 激情视频一区二区三区| 一区二区91美女张开腿让人桶| 欧美变态挠脚心| 动漫美女被爆操久久久| 国产精品久久免费视频| 国产精品久久久久久搜索| 亚洲美女久久精品| 97国产精品视频| 亚洲综合图区| 久久精品久久精品亚洲人| 成人在线观看一区| 亚洲日本欧美日韩高观看| 天天舔天天干天天操| 日韩精品一区二区在线| 99久久国产热无码精品免费| 欧美三级欧美一级| 国产免费www| 91国内精品野花午夜精品| 欧美性猛交bbbbb精品| 午夜久久福利影院| 日本一级淫片色费放| 亚洲五月六月丁香激情| 久久久久久久福利| 亚洲一级在线观看| 九九精品在线观看视频| 一区二区三区四区在线播放| 欧美老熟妇一区二区三区| 国产精品传媒视频| 一区二区三区影视| 亚洲欧美偷拍三级| 久草免费新视频| 亚洲精品美腿丝袜| 久久久精品一区二区涩爱| 亚洲一区二区偷拍精品| 色网站在线播放| 欧美午夜xxx| 无码任你躁久久久久久久| 色久综合一二码| 一级日韩一级欧美| 欧美一区二区视频在线观看2020| 99热这里只有精| 欧美精品一区二区高清在线观看 | 小说区视频区图片区| 亚洲国产老妈| 高清无码一区二区在线观看吞精| 欧美日一区二区在线观看| 欧美狂野激情性xxxx在线观| 雨宫琴音一区二区在线| 欧美a在线视频| 日韩和的一区二区| 911福利视频| 国产精品99久久久久久久女警 | 九九视频这里只有精品| 色女人在线视频| 91精品国产九九九久久久亚洲| 欧美色999| 成人免费视频网| 盗摄牛牛av影视一区二区| 牛人盗摄一区二区三区视频| 成人情趣视频| 免费网站在线观看视频 | 91av在线免费观看| 日韩在线影院| 成人写真视频福利网| 岛国av一区| 亚洲精品国产系列| 欧美精品啪啪| 无码人妻丰满熟妇区五十路百度| 日韩精品视频网| 佐山爱在线视频| 国产亚洲欧美一级| 欧美日韩在线观看免费| 欧美午夜丰满在线18影院| 国产精品一区二区av白丝下载| 精品久久久久久久久久久久久久久 | 久久在线视频精品| 欧洲一区在线观看| 丁香花免费高清完整在线播放| 亚洲人成电影在线观看天堂色| 精品麻豆一区二区三区| 欧美主播福利视频| 久久久久久爱| 日本一区二区三区免费看| 综合一区av| 黄色在线视频网| 9人人澡人人爽人人精品| 亚洲欧洲综合网| 欧美视频免费在线| 亚洲第一页视频| 最新日韩中文字幕| 97se综合| 国产精品一区二区欧美| 午夜影院欧美| 久久午夜夜伦鲁鲁一区二区| 99国产精品久久久久久久久久久| 欧美性生交大片| 欧美日韩性生活视频| www.av日韩| 菠萝蜜影院一区二区免费| 日韩电影免费观| 国产美女精品久久久| 亚洲综合小说| 亚洲综合日韩欧美| 国产亚洲欧美一级| 国产精品视频一区在线观看| 精品国产乱码久久久久久浪潮 | 丰满大乳国产精品| 欧美精品中文字幕一区| 久久夜夜久久| 日韩一区二区三区资源| 香蕉av777xxx色综合一区| 国产成人精品无码片区在线| 亚洲精品综合在线| 国产伦精品一区二区三区四区| 亚洲午夜激情免费视频| 老司机2019福利精品视频导航| 狠狠色噜噜狠狠色综合久| 在线播放亚洲| 免费看毛片的网站| 亚洲第一成人在线| 亚洲精品国产精品乱码不卡| 欧美精品在线观看91| 国产精品亚洲一区二区在线观看| 亚洲精品高清视频| 久久精品国产色蜜蜜麻豆| 日韩av片在线免费观看| 欧美日本不卡视频| 欧美人xxx| 91在线看网站| 欧美色图首页| 中文字幕第3页| 天天综合色天天综合| 日本一卡二卡四卡精品| 欧美中文在线观看| 精品国产不卡| 伊人国产在线视频| 亚洲女同一区二区| 亚洲乱熟女一区二区| 97视频在线观看网址| 香蕉久久夜色精品国产使用方法 | 日韩午夜在线观看视频| а√天堂在线官网| av日韩中文字幕| 亚洲美女91| 深爱五月激情网| 在线国产电影不卡| 色影院视频在线| 99精彩视频| 亚洲专区欧美专区| 337人体粉嫩噜噜噜| 欧美一区在线视频| 国产精选在线| 日韩和欧美的一区二区| 黄页视频在线91| 青青操国产视频| 精品视频偷偷看在线观看| а√天堂资源国产精品| 91大学生片黄在线观看| 91麻豆免费视频| 一本久道久久综合无码中文| 久久91亚洲精品中文字幕奶水| 天天躁日日躁成人字幕aⅴ| 五月天亚洲视频| 亚洲高清中文字幕| 精品影院一区| 99re国产| 日韩电影网1区2区| 九九视频免费观看| 亚洲深夜福利在线| 51vv免费精品视频一区二区| 韩国一区二区av| 一区二区三区中文字幕精品精品| 日本大片在线观看| 亚洲一区二区三区视频| 免播放器亚洲| 麻豆成人在线视频| 国产亚洲成精品久久| 99精品中文字幕在线不卡| 精品久久久久久中文字幕2017| 一区二区三区精品视频| av资源网在线观看|