天天看點

Prometheus監控,生産可用告警規則(可擷取主機名)方法一:node_uname_info擷取方法二:relabel_configs增加主機名标簽

以下是生産環境中prometheus.rules.yml告警規則用例

prometheus預設的instance是ip:port格式的,無法知道主機名。

方法一:node_uname_info擷取

參考連結:https://blog.csdn.net/CHEndorid/article/details/106820612

主機名(nodename)在名額node_uname_info中,且node_uname_info的值恰巧為1,是以我們可以在PromQL中通過node_uname_info提取,隻需要在原有PromQL後添加

* on(instance) group_left(nodename) (node_uname_info)
           

這樣,在prometheus告警的labels中,就可以通過nodename擷取主機名了

特别的,up==0的值是0,做乘法是不會得到結果的

示例:

- alert: cpu使用率過高告警
      expr: (100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)* 100))* on(instance) group_left(nodename) (node_uname_info) > 85
      for: 5m
      labels:
        region: 成都
      annotations:
        summary: "{{$labels.instance}}({{$labels.nodename}})CPU使用率過高!"
        description: '伺服器{{$labels.instance}}({{$labels.nodename}})CPU使用率超過85%(目前使用:{{printf "%.2f" $value}}%)'
           

方法二:relabel_configs增加主機名标簽

此方法,可以适應所有報警的規則

在 prometheus增加主機配置是,添加配置即可

- job_name: 'hadoop-test-exporter'
    consul_sd_configs:
    - server: 'localhost:8500'
      services: [hadoop-test-exporter]
    relabel_configs: #把__meta_consul_service_id 映射主機名
    - source_labels: [__meta_consul_service_id]
      separator: ;
      regex: (.*)
      target_label: hostname
      replacement: $1
      action: replace
    - source_labels: [__meta_consul_service_address] #映射主機IP
      separator: ;
      regex: (.*)
      target_label: ip
      replacement: $1
      action: replace
    - source_labels: ['__meta_consul_tags'] #根據tag來比對分組
      regex: '^.*,hadoop-test,.*$'
      action: keep
           
Prometheus監控,生産可用告警規則(可擷取主機名)方法一:node_uname_info擷取方法二:relabel_configs增加主機名标簽
Prometheus監控,生産可用告警規則(可擷取主機名)方法一:node_uname_info擷取方法二:relabel_configs增加主機名标簽

繼續閱讀