最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Prometheus常用告警規(guī)則 rules.yml的設(shè)置

 更新時間:2026年07月02日 09:39:57   作者:黑瘋雷  
本文整理了企業(yè)運維中常見服務(wù)的告警規(guī)則,包括服務(wù)器、Redis、RabbitMQ、Kafka、SSL證書和Elasticsearch,并提供了PromQL示例,感興趣的可以了解一下

說明:整理了企業(yè)運維中常見服務(wù)的告警規(guī)則,覆蓋服務(wù)器、Redis、RabbitMQ、Kafka、SSL證書、Elasticsearch。每條規(guī)則都給了 PromQL,復(fù)制到 Prometheus 就能用。

規(guī)則文件放哪

Prometheus 的告警規(guī)則以 YAML 文件存放在 rules/ 目錄下,然后在 prometheus.yml 中引用:

rule_files:
  - "rules/*.yml"

改完配置記得重載:

systemctl reload prometheus

一、服務(wù)器基礎(chǔ)告警(node_exporter)

文件node_exporter_rules.yml

服務(wù)器宕機

- alert: 服務(wù)器宕機
  expr: up == 0
  for: 3m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "服務(wù)器 {{ $labels.instance }} 宕機"
    description: "{{ $labels.instance }} 超過 3 分鐘無響應(yīng)"

CPU 使用率超過 90%

- alert: CPU 使用率過高
  expr: 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "服務(wù)器 {{ $labels.instance }} CPU 過高"
    description: "CPU 使用率 {{ $value }}%,超過 90%"

計算思路:用 irate 取 5 分鐘內(nèi) CPU 空閑率的瞬時變化,然后反算使用率。irate 適合 CPU 這種抖動大的指標,能更靈敏反映瞬時變化。

內(nèi)存使用率過高

- alert: 內(nèi)存使用率過高
  expr: 100 - ((node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100) < 10
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "服務(wù)器 {{ $labels.instance }} 內(nèi)存不足"
    description: "可用內(nèi)存(含緩存)不足 10%"

計算用了 MemFree + Cached + Buffers 來衡量剩余內(nèi)存。因為 Linux 的緩存可以回收,比只看 MemFree 更符合實際情況。

磁盤 IO 過高

- alert: 磁盤 IO 占用過高
  expr: avg by (instance)(irate(node_disk_io_time_seconds_total[1m])) * 100 > 90
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "服務(wù)器 {{ $labels.instance }} 磁盤 IO 過高"
    description: "磁盤 IO 占用率 {{ $value }}%"

網(wǎng)絡(luò)流入帶寬超過 100Mbps

- alert: 網(wǎng)絡(luò)流入帶寬過高
  expr: (sum by (instance)(rate(node_network_receive_bytes_total{device!~"tap.*|veth.*|br.*|docker.*|virbr.*|lo.*"}[5m])) / 100) > 102400
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "服務(wù)器 {{ $labels.instance }} 網(wǎng)絡(luò)流入過高"
    description: "流入帶寬 {{ $value }},持續(xù) 5 分鐘超過 100Mbps"

過濾掉了虛擬網(wǎng)卡(docker、veth、br 等),只監(jiān)控物理網(wǎng)卡。102400 對應(yīng) 100Mbps,因為除以 100 將 bytes 轉(zhuǎn)成了 bits。

網(wǎng)絡(luò)流出帶寬超過 100Mbps

- alert: 網(wǎng)絡(luò)流出帶寬過高
  expr: (sum by (instance)(rate(node_network_transmit_bytes_total{device!~"tap.*|veth.*|br.*|docker.*|virbr.*|lo.*"}[5m])) / 100) > 102400
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "服務(wù)器 {{ $labels.instance }} 網(wǎng)絡(luò)流出過高"
    description: "流出帶寬 {{ $value }},持續(xù) 5 分鐘超過 100Mbps"

TCP 連接數(shù)過多

- alert: TCP 連接數(shù)過高
  expr: node_netstat_Tcp_CurrEstab > 10000
  for: 2m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "服務(wù)器 {{ $labels.instance }} TCP 連接數(shù)過高"
    description: "當前 TCP ESTABLISHED 連接數(shù) {{ $value }},超過 10000"

磁盤使用率超過 90%

- alert: 磁盤使用率過高
  expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 90
  for: 1m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "{{ $labels.mountpoint }} 磁盤使用率過高"
    description: "分區(qū) {{ $labels.mountpoint }} 使用率 {{ $value }}%"

只監(jiān)控 ext4 和 xfs 格式的文件系統(tǒng),跳過 tmpfs、overlay 之類的虛擬文件系統(tǒng)。

二、Redis 告警(redis_exporter)

文件redis_exporter_rules.yml

- alert: Redis 服務(wù)停止
  expr: redis_up == 0
  for: 1m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "Redis {{ $labels.instance }} 服務(wù)停止"
    description: "Redis 服務(wù)不可達"
- alert: Redis 連接數(shù)超過 80%
  expr: redis_connected_clients / redis_config_maxclients * 100 > 80
  for: 1m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "Redis {{ $labels.instance }} 連接數(shù)過高"
    description: "當前連接數(shù) {{ $value }},超過最大連接數(shù)的 80%"

三、RabbitMQ 告警(rabbitmq_exporter)

文件rabbitmq_exporter_rules.yml

- alert: RabbitMQ 服務(wù)停止
  expr: rabbitmq_up == 0
  for: 3m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "RabbitMQ {{ $labels.instance }} 服務(wù)停止"
    description: "RabbitMQ 已停止運行"
- alert: RabbitMQ 內(nèi)存占用超過 2GB
  expr: rabbitmq_node_mem_used / 1024 / 1024 > 2048
  for: 3m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "RabbitMQ {{ $labels.instance }} 內(nèi)存過高"
    description: "當前內(nèi)存占用 {{ $value }} MB,超過 2048 MB"

四、Kafka 告警(kafka_exporter)

文件kafka_exporter_rules.yml

- alert: Kafka 消費組消息積壓
  expr: sum by (consumergroup, topic)(kafka_consumergroup_lag) > 50000
  for: 3m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "Topic {{ $labels.topic }} 消費滯后"
    description: "消費組 {{ $labels.consumergroup }} 積壓超過 50000 條消息"
- alert: Kafka 集群節(jié)點減少
  expr: kafka_brokers < 3
  for: 3m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "Kafka 集群節(jié)點減少"
    description: "當前 broker 數(shù)量 {{ $value }},少于 3 個"
- alert: Kafka Topic 無消息寫入
  expr: sum by (topic)(rate(kafka_topic_partition_current_offset[5m])) == 0
  for: 5m
  labels:
    severity: 警告
  annotations:
    summary: "Topic {{ $labels.topic }} 無消息流入"
    description: "持續(xù) 5 分鐘沒有新消息寫入該 Topic"

五、SSL 證書過期監(jiān)控(blackbox_exporter)

文件ssl_expiry.yml

- alert: SSL 證書即將過期
  expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 30
  for: 5m
  labels:
    severity: 重要告警
  annotations:
    summary: "SSL 證書將在 30 天內(nèi)過期"
    description: "證書剩余 {{ $value }} 秒,請及時更新"
- alert: SSL 證書已過期
  expr: probe_ssl_earliest_cert_expiry - time() <= 0
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "SSL 證書已過期"
    description: "證書已過期,請立即更新"

probe_ssl_earliest_cert_expiry 返回的是證書過期的時間戳(秒),減去當前時間 time() 就是剩余有效時間。86400 是一天的秒數(shù)。

六、Elasticsearch 告警(elasticsearch_exporter)

文件:elasticsearch_exporter_rules.yml

- alert: ES 集群節(jié)點減少
  expr: elasticsearch_cluster_health_number_of_nodes < 3
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "ES 集群節(jié)點數(shù)減少"
    description: "當前節(jié)點數(shù) {{ $value }},少于 3 個"
- alert: JVM 堆內(nèi)存使用率過高
  expr: elasticsearch_jvm_memory_used_bytes{area="heap"} / elasticsearch_jvm_memory_max_bytes{area="heap"} * 100 > 90
  for: 5m
  labels:
    severity: 嚴重告警
  annotations:
    summary: "ES JVM 內(nèi)存使用率過高"
    description: "堆內(nèi)存使用率 {{ $value }}%,超過 90%"

使用建議

  1. 閾值調(diào)整:上面的閾值是通用值,建議根據(jù)實際環(huán)境調(diào)整。比如磁盤告警,數(shù)據(jù)盤可以放到 95%,根分區(qū)建議 85% 就告警。
  2. 集群節(jié)點數(shù):kafka_brokers < 3 和 es 節(jié)點數(shù) < 3 假設(shè)你的集群至少 3 個節(jié)點,如果架構(gòu)不同記得改。
  3. for 參數(shù):for: 5m 表示持續(xù) 5 分鐘滿足條件才觸發(fā)告警,防止誤報??梢愿鶕?jù)業(yè)務(wù)容忍度調(diào)整。
  4. 86400 * 30 的筆誤:原文寫的是 86400 * 300(300天),實際應(yīng)為 30 天,這里已修正。

到此這篇關(guān)于Prometheus常用告警規(guī)則 rules.yml的設(shè)置的文章就介紹到這了,更多相關(guān)Prometheus rules.yml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

永胜县| 富顺县| 唐海县| 清水县| 高密市| 远安县| 普宁市| 慈利县| 乌拉特中旗| 澜沧| 积石山| 兴和县| 台南县| 洛南县| 大安市| 修文县| 武平县| 安西县| 兴国县| 邢台县| 叙永县| 新疆| 长葛市| 淮阳县| 加查县| 凌云县| 炉霍县| 盐边县| 邢台市| 凤翔县| 鄂伦春自治旗| 开平市| 汪清县| 延边| 长春市| 长岭县| 綦江县| 云安县| 界首市| 霍州市| 林州市|