Prometheus+Grafana+Alertmanager實現告警推送教程 ----- 圖文詳解


前言

本文主要介紹的是Prometheus采集數據,通過Grafana加上PromQL語句實現數據可視化以及通過Alertmanage實現告警推送功能。溫馨提示,本篇文章特長,2w多的文字加上幾十張圖片,建議收藏觀看。

Prometheus 介紹

Prometheus 是一套開源的系統監控報警框架。它啟發於 Google 的 borgmon 監控系統,由工作在 SoundCloud 的 google 前員工在 2012 年創建,作為社區開源項目進行開發,並於 2015 年正式發布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成為受歡迎度僅次於 Kubernetes 的項目。

作為新一代的監控框架,Prometheus 具有以下特點:

  • 強大的多維度數據模型: 時間序列數據通過 metric 名和鍵值對來區分。 所有的 metrics 都可以設置任意的多維標簽。
  • 數據模型更隨意,不需要刻意設置為以點分隔的字符串。 可以對數據模型進行聚合,切割和切片操作。
  • 支持雙精度浮點類型,標簽可以設為全unicode。 靈活而強大的查詢語句(PromQL):在同一個查詢語句,可以對多個 metrics進行乘法、加法、連接、取分數位等操作。
  • 易於管理: Prometheus server是一個單獨的二進制文件,可直接在本地工作,不依賴於分布式存儲。 高效:平均每個采樣點僅占 3.5 bytes,且一個 Prometheus server 可以處理數百萬的 metrics。 使用 pull模式采集時間序列數據,這樣不僅有利於本機測試而且可以避免有問題的服務器推送壞的 metrics。 可以采用 push gateway 的方式把時間序列數據推送至 Prometheus server 端。 可以通過服務發現或者靜態配置去獲取監控的 targets。
  • 有多種可視化圖形界面。 易於伸縮。 需要指出的是,由於數據采集可能會有丟失,所以 Prometheus 不適用對采集數據要 100%
  • 准確的情形。但如果用於記錄時間序列數據,Prometheus 具有很大的查詢優勢,此外,Prometheus 適用於微服務的體系架構。

示例圖:
在這里插入圖片描述

Prometheus的適用場景

在選擇Prometheus作為監控工具前,要明確它的適用范圍,以及不適用的場景。
Prometheus在記錄純數值時間序列方面表現非常好。它既適用於以服務器為中心的監控,也適用於高動態的面向服務架構的監控。
在微服務的監控上,Prometheus對多維度數據采集及查詢的支持也是特殊的優勢。
Prometheus更強調可靠性,即使在故障的情況下也能查看系統的統計信息。權衡利弊,以可能丟失少量數據為代價確保整個系統的可用性。因此,它不適用於對數據准確率要求100%的系統,比如實時計費系統(涉及到錢)。

Prometheus核心組件介紹

Prometheus Server:

Prometheus Server是Prometheus組件中的核心部分,負責實現對監控數據的獲取,存儲以及查詢。 Prometheus Server可以通過靜態配置管理監控目標,也可以配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據。其次Prometheus Server需要對采集到的監控數據進行存儲,Prometheus Server本身就是一個時序數據庫,將采集到的監控數據按照時間序列的方式存儲在本地磁盤當中。最后Prometheus Server對外提供了自定義的PromQL語言,實現對數據的查詢以及分析。 Prometheus Server內置的Express Browser UI,通過這個UI可以直接通過PromQL實現數據的查詢以及可視化。 Prometheus Server的聯邦集群能力可以使其從其他的Prometheus Server實例中獲取數據,因此在大規模監控的情況下,可以通過聯邦集群以及功能分區的方式對Prometheus Server進行擴展。

Exporters:

Exporter將監控數據采集的端點通過HTTP服務的形式暴露給Prometheus Server,Prometheus
Server通過訪問該Exporter提供的Endpoint端點,即可獲取到需要采集的監控數據。 一般來說可以將Exporter分為2類:
直接采集:這一類Exporter直接內置了對Prometheus監控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接內置了用於向Prometheus暴露監控數據的端點。
間接采集:間接采集,原有監控目標並不直接支持Prometheus,因此我們需要通過Prometheus提供的Client Library編寫該監控目標的監控采集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。

PushGateway:

在Prometheus Server中支持基於PromQL創建告警規則,如果滿足PromQL定義的規則,則會產生一條告警,而告警的后續處理流程則由AlertManager進行管理。在AlertManager中我們可以與郵件,Slack等等內置的通知方式進行集成,也可以通過Webhook自定義告警處理方式。

Service Discovery:

服務發現在Prometheus中是特別重要的一個部分,基於Pull模型的抓取方式,需要在Prometheus中配置大量的抓取節點信息才可以進行數據收集。有了服務發現后,用戶通過服務發現和注冊的工具對成百上千的節點進行服務注冊,並最終將注冊中心的地址配置在Prometheus的配置文件中,大大簡化了配置文件的復雜程度,
也可以更好的管理各種服務。 在眾多雲平台中(AWS,OpenStack),Prometheus可以
通過平台自身的API直接自動發現運行於平台上的各種服務,並抓取他們的信息Kubernetes掌握並管理着所有的容器以及服務信息,那此時Prometheus只需要與Kubernetes打交道就可以找到所有需要監控的容器以及服務對象.

  • Consul(官方推薦)等服務發現注冊軟件
  • 通過DNS進行服務發現
  • 通過靜態配置文件(在服務節點規模不大的情況下)

Prometheus UI

Prometheus UI是Prometheus內置的一個可視化管理界面,通過Prometheus UI用戶能夠輕松的了解Prometheus當前的配置,監控任務運行狀態等。 通過Graph面板,用戶還能直接使用PromQL實時查詢監控數據。訪問ServerIP:9090/graph打開WEB頁面,通過PromQL可以查詢數據,可以進行基礎的數據展示。
在這里插入圖片描述

如下所示,查詢主機負載變化情況,可以使用關鍵字node_load1可以查詢出Prometheus采集到的主機負載的樣本數據,這些樣本數據按照時間先后順序展示,形成了主機負載隨時間變化的趨勢圖表:
在這里插入圖片描述

Grafana介紹

Grafana是一個跨平台的開源的度量分析和可視化工具,可以通過將采集的數據查詢然后可視化的展示。Grafana提供了對prometheus的友好支持,各種工具幫助你構建更加炫酷的數據可視化。

Grafana特點

  • 可視化:快速和靈活的客戶端圖形具有多種選項。面板插件為許多不同的方式可視化指標和日志。
  • 報警:可視化地為最重要的指標定義警報規則。Grafana將持續評估它們,並發送通知。
  • 通知:警報更改狀態時,它會發出通知。接收電子郵件通知。
  • 動態儀表盤:使用模板變量創建動態和可重用的儀表板,這些模板變量作為下拉菜單出現在儀表板頂部。
  • 混合數據源:在同一個圖中混合不同的數據源!可以根據每個查詢指定數據源。這甚至適用於自定義數據源。
  • 注釋:注釋來自不同數據源圖表。將鼠標懸停在事件上可以顯示完整的事件元數據和標記。
  • 過濾器:過濾器允許您動態創建新的鍵/值過濾器,這些過濾器將自動應用於使用該數據源的所有查詢。

這里我們使用上面Prometheus使用關鍵字node_load1來使用Grafana進行可視化,點擊側邊欄的加號圖標,然后單擊Dashboard點擊創建,然后把剛剛Prometheus使用的查詢語句放到Metries,點擊右上角的apply即可。

示例圖:
在這里插入圖片描述

Grafana UI

上面的示例中我們通過prometheus+grafana通過PromQL進行了簡單的服務器負載的監控可視化。我們也可以通過第三方提供可視化JSON文件來幫助我們快速實現服務器、Elasticsearch、MYSQL等等監控。這里我們在grafana提供的第三方dashboards的地址https://grafana.com/grafana/dashboards來下載對應的json文件然后導入到grafana實現服務器的監控。

監控服務器的示例圖:
在這里插入圖片描述
除了服務端的監控,可以監控應用服務。Prometheus 監控應用的方式非常簡單,只需要進程暴露了一個用於獲取當前監控樣本數據的 HTTP 訪問地址。這樣的一個程序稱為Exporter,Exporter 的實例稱為一個 Target 。Prometheus 通過輪訓的方式定時從這些 Target 中獲取監控數據樣本,對於應用來講,只需要暴露一個包含監控數據的 HTTP 訪問地址即可,當然提供的數據需要滿足一定的格式,這個格式就是 Metrics 格式: metric name>{

Prometheus+Grafana+Alertmanager等安裝配置

Prometheus以及相關組件使用的是2.x版本,Grafana使用的是7.x版本。

下載地址推薦使用清華大學或華為的開源鏡像站。

下載地址:
https://prometheus.io/download/
https://mirrors.tuna.tsinghua.edu.cn/grafana/

Prometheus以及相關組件百度網盤地址:

鏈接:https://pan.baidu.com/s/1btErwq8EyAzG2-34lwGO4w
提取碼:4nlh

Prometheus安裝

1,文件准備

將下載好的Prometheus文件解壓

輸入

tar -zxvf prometheus-2.19.3.linux-amd64.tar.gz

然后移動到/opt/prometheus文件夾里面,沒有該文件夾則創建

2,配置修改

在prometheus-2.19.3.linux-amd64文件夾目錄下找到prometheus.yml配置文件並更改

prometheus.yml文件配置如下:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.8.181:9090']

3,prometheus 啟動

在/opt/prometheus/prometheus-2.19.3.linux-amd64的目錄下輸入:

nohup ./prometheus   >/dev/null   2>&1 &

啟動成功之后,在瀏覽器上輸入 ip+9090可以查看相關信息。

在這里插入圖片描述
在這里插入圖片描述

Grafana安裝

1,文件准備

將下載下來的grafana-7.1.1-1.x86_64.rpm的文件通過apm方式安裝
輸入:

 rpm -ivh grafana-7.1.1-1.x86_64.rpm

進行安裝
如果出現如下錯誤:

error: Failed dependencies:
urw-fonts is needed by grafana-6.1.4-1.x86_64

一個依賴包沒有安裝,需要先安裝這個依賴包,然后再安裝grafana

# yum install -y urw-fonts

2,grafana 啟動

root用戶下啟動

輸入:

sudo /bin/systemctl start grafana-server.service

啟動成功之后,在瀏覽器上輸入 ip+3000可以查看相關信息

在這里插入圖片描述

Alertmanager安裝

1,文件准備

將下載好的Alertmanager文件解壓

輸入

tar -zxvf alertmanager-0.21.0.linux-386.tar.gz

然后移動到/opt/prometheus文件夾里面,沒有該文件夾則創建

2,alertmanager啟動

root用戶下啟動

輸入:

nohup ./alertmanager   >/dev/null   2>&1 &

啟動成功之后,在瀏覽器上輸入 ip+9093可以查看相關信息

示例圖:
在這里插入圖片描述

Pushgateway 安裝

1,文件准備

將下載好的pushgateway文件解壓

輸入
tar -zxvf pushgateway-1.2.0.linux-amd64.tar.gz
然后移動到/opt/prometheus文件夾里面,沒有該文件夾則創建

2,啟動

root用戶下啟動

輸入:

nohup ./pushgateway   >/dev/null   2>&1 &

啟動成功之后,在瀏覽器上輸入 ip+9091可以查看相關信息

在這里插入圖片描述

5,Node_export安裝

1,文件准備

將下載好的Node_export文件解壓

輸入

tar -zxvf node_exporter-0.17.0.linux-amd64.tar.gz

然后移動到/opt/prometheus文件夾里面,沒有該文件夾則創建

2,啟動

root用戶下啟動

輸入:

nohup ./consul_exporter   >/dev/null   2>&1 &

啟動成功之后,在瀏覽器上輸入 ip+9100可以查看相關信息

在這里插入圖片描述

Prometheus使用教程

Prometheus界面地址: ip+9090。
這里我就使用圖片加上注釋來進行講解。

1,基本使用

1>,Prometheus主界面說明

在這里插入圖片描述

2>,Graph使用示例

在這里插入圖片描述

3>,查看運行信息

在這里插入圖片描述

4>,查看命令標記值

在這里插入圖片描述

5>,查看配置信息

在這里插入圖片描述

6,>查看集成的組件

集成的組件需要下載對應export服務並啟動運行,並且在prometheus的配置中進行添加!

在這里插入圖片描述

7>,查看服務發現

在這里插入圖片描述

8>,查看告警規則

first_rules.yml的配置。

在這里插入圖片描述

9>,查看是否觸發告警

在這里插入圖片描述

相關文檔:https://prometheus.io/docs/prometheus/latest/getting_started/

Grafana使用

Grafanf 界面地址: ip+3000
初始賬號密碼: admin, admin
這里我依舊用圖片加注釋來進行講解,想必這樣會更容易理解吧。。。

1>,主界面信息

在這里插入圖片描述

2>,創建儀表盤監控實現

1.添加數據源

在這里插入圖片描述

在這里插入圖片描述
2.選擇prometheus
在這里插入圖片描述

3.點擊創建儀表盤

在這里插入圖片描述

4.點擊創建

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

5.輸入node_load1表示語句,填寫相關信息,點擊apply完成,並將名稱保存為Test
在這里插入圖片描述

6.點擊搜索Test,點擊就可以查看

在這里插入圖片描述

在這里插入圖片描述

3>,使用第三方儀表盤監控實現

注:需提前添加好數據源。

1.點擊左上角的加號,點擊import

在這里插入圖片描述

在線模式
地址:https://grafana.com/grafana/dashboards

在這里插入圖片描述

在這里插入圖片描述

離線模式

在這里插入圖片描述

監控示例:

在這里插入圖片描述

監控告警實現

監控告警實現需要依賴 Alertmanager,已經相關的組件,比如上述實例中的監控服務器應用的node_server組件。

郵件告警實現

需要安裝Alertmanager,這里因為郵件發送比較簡單,所以這里我就直接貼配置了,其中帶有xxx字符的參數是需要根據情況進行更改的。下面的企業微信告警同理。
Alertmanagers服務的alertmanager.yml的配置如下:

global:
  resolve_timeout: 5m
  smtp_from: 'xxx@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: 'xxx@qq.com'
  smtp_auth_password: 'xxx'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: 'xxx@qq.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

注: smtp_from、smtp_auth_username、to的郵箱可以填寫同一個,smtp_auth_password填寫鑒權碼,需要開啟POS3。

如果不知道怎么開啟POS3,可以查看我的這篇文章: https://www.cnblogs.com/xuwujing/p/10945698.html

Prometheus服務的Prometheus.yml配置如下:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: 
      - '192.168.214.129:9093'
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
   - "/opt/prometheus/prometheus-2.19.3.linux-amd64/first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.214.129:9090']

  - job_name: 'server'
    static_configs:
    - targets: ['192.168.214.129:9100']

注:targets如果有多個配置的話,在后面加上其他服務的節點即可。alertmanagers最好寫服務器的ip,不然可能會出現告警數據無法發送的情況。

Error sending alert" err="Post \"http://alertmanager:9093/api/v1/alerts\": context deadline exceeded

配置了Prometheus.yml之后,我們還需要配置告警的規則,也就是觸發條件,達到條件之后就進行觸發。我們新建一個first_rules.yml,用於檢測服務器掛掉的時候進行發送消息

first_rules.yml告警配置:

注:job等於的服務名稱填寫Prometheus.yml配置對應的名稱,比如這里設置的server對應Prometheus.yml配置的server。

groups:
- name: node
  rules:
  - alert: server_status
    expr: up{job="server"} == 0 
    for: 15s
    annotations:
      summary: "機器{{ $labels.instance }} 掛了"
      description: "報告.請立即查看!"

依次啟動prometheus、altermanagers、node_server服務,查看告警,然后停止node_export服務,等待一段時間在查看。

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

企業微信告警實現

和上面的示例操作基本一致,主要是配置的區別。

1.在企業微信中創建一個應用,並得到secret、corp_id和agent_id配置。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
2.然后修改alertmanager.yml配置,alertmanager.yml配置如下:

global:
  resolve_timeout: 5s
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
  wechat_api_secret: 'xxx'
  wechat_api_corp_id: 'xxx'
templates:
- '/opt/prometheus/alertmanager-0.21.0.linux-386/template/wechat.tmpl'
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 10s
  receiver: 'wechat'
receivers:
- name: 'wechat'
  wechat_configs:
  - send_resolved: true
    to_party: '2'
    agent_id: xxx
    corp_id: 'xxx'
    api_secret: 'xxx'
    api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

在這里插入圖片描述

配置成功之后,操作和上述郵件發送的一致,即可在企業微信看到如下信息。

在這里插入圖片描述

如果覺得上述的示例不好友好的話,我們也可以制定告警模板。

添加告警模板:

在alertmanagers的文件夾下創建一個template文件夾,然后在該文件夾創建一個微信告警的模板wechat.tmpl,添加如下配置:

{{ define "wechat.default.message" }}
{{ range .Alerts }}
========start=========
告警程序: prometheus_alert
告警級別: {{ .Labels.severity}}
告警類型: {{ .Labels.alertname }}
故障主機: {{ .Labels.instance }}
告警主題: {{ .Annotations.summary }}
告警詳情: {{ .Annotations.description }}
=========end===========
{{ end }}
{{ end }}

然后再到alertmanager.yml 添加如下配置:

templates:
- '/opt/prometheus/alertmanager-0.21.0.linux-386/template/wechat.tmpl'

在這里插入圖片描述

效果圖:
在這里插入圖片描述

應用服務監控告警實現

Prometheus 監控應用的方式非常簡單,只需要進程暴露了一個用於獲取當前監控樣本數據的 HTTP
訪問地址。這樣的一個程序稱為Exporter,Exporter 的實例稱為一個 Target 。Prometheus通過輪訓的方式定時從這些 Target 中獲取監控數據樣本,對於應用來講,只需要暴露一個包含監控數據的 HTTP訪問地址即可,當然提供的數據需要滿足一定的格式,這個格式就是 Metrics 格式: metric name>{

Springboot應用實現步驟
1.在pom文件添加

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.在代碼中添加如下配置:

private Counter requestErrorCount;
    private final MeterRegistry registry;
    @Autowired
    public PrometheusCustomMonitor(MeterRegistry registry) {
        this.registry = registry;
    }
    @PostConstruct
    private void init() {
        requestErrorCount = registry.counter("requests_error_total", "status", "error");
    }
    public Counter getRequestErrorCount() {
        return requestErrorCount;
    }

3.在異常處理中添加如下記錄:

monitor.getRequestErrorCount().increment();

4.在prometheus的配置中添加springboot應用服務監控

-  job_name: 'springboot' 
     metrics_path: '/actuator/prometheus' 
     scrape_interval: 5s
     static_configs:
     - targets: ['192.168.8.45:8080'] 

5.Prometheu.yml配置如下:

  - job_name: 'springboot' 
    metrics_path: '/actuator/prometheus' 
    scrape_interval: 5s
    static_configs:
    - targets: ['192.168.8.45:8080']  

規則文件配置如下:
在這里插入圖片描述

6.在prometheus監控即可查看

在這里插入圖片描述
企業微信告警效果圖:
在這里插入圖片描述
監控的springboot項目地址:https://github.com/xuwujing/springBoot-study

其他配置

prometheus動態加載配置

Prometheus數據源的配置主要分為靜態配置和動態發現, 常用的為以下幾類:

  • static_configs: 靜態服務發現
  • file_sd_configs: 文件服務發現
  • dns_sd_configs: DNS 服務發現
  • kubernetes_sd_configs: Kubernetes 服務發現
  • consul_sd_configs:Consul 服務發現(推薦使用)

file_sd_configs的方式提供簡單的接口,可以實現在單獨的配置文件中配置拉取對象,並監視這些文件的變化並自動加載變化。基於這個機制,我們可以自行開發程序,監控監控對象的變化自動生成配置文件,實現監控對象的自動發現。

在prometheus文件夾目錄下創建targets.json文件
配置如下:

[
    {
      "targets": [ "192.168.214.129:9100"],
      "labels": {
        "instance": "node",
        "job": "server-129"
      }
    },
    {
        "targets": [ "192.168.214.134:9100"],
        "labels": {
          "instance": "node",
          "job": "server-134"
        }
      }
  ]

然后在prometheus目錄下新增如下配置:

 - job_name: 'file_sd'   
    file_sd_configs:
      - files:
        - targets.json  

在這里插入圖片描述

一些告警配置

這是本人整理的一些服務應用告警的配置,也歡迎大家共同討論一些常用的相關配置。

內存告警設置

- name: test-rule
  rules:
  - alert: "內存報警"
    expr: 100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes) > 30
    for: 15s
    labels:
      severity: warning
    annotations:
      summary: "服務名:{{$labels.instance}}內存使用率超過30%了"
      description: "業務500報警: {{ $value }}"
      value: "{{ $value }}"

示例圖:

在這里插入圖片描述

在這里插入圖片描述

磁盤設置:

總量百分比設置:

(node_filesystem_size_bytes {mountpoint ="/"} - node_filesystem_free_bytes {mountpoint ="/"}) / node_filesystem_size_bytes {mountpoint ="/"} * 100

在這里插入圖片描述

查看某一目錄的磁盤使用百分比

(node_filesystem_size_bytes{mountpoint="/boot"}-node_filesystem_free_bytes{mountpoint="/boot"})/node_filesystem_size_bytes{mountpoint="/boot"} * 100

正則表達式來匹配多個掛載點

(node_filesystem_size_bytes{mountpoint="/|/run"}-node_filesystem_free_bytes{mountpoint="/|/run"})
/ node_filesystem_size_bytes{mountpoint=~"/|/run"} * 100

預計多長時間磁盤爆滿

predict_linear(node_filesystem_free_bytes {mountpoint ="/"}[1h],
43600) < 0 predict_linear(node_filesystem_free_bytes
{job="node"}[1h], 4
3600) < 0

CPU使用率

100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by
(instance) * 100)

空閑內存剩余率

(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes)
/ node_memory_MemTotal_bytes * 100

內存使用率

100 -
(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes)
/ node_memory_MemTotal_bytes * 100

磁盤使用率

100 - (node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} /
node_filesystem_size_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100)

其他

這段時間比較忙,ELK相關得等待一段時間在進行更新,雖然發表的博客才對應去年整理的博客。。。。
本篇文章准備了好久,邊整理編寫,沒想到寫了這么多。不過感覺這樣也不錯,一次寫出來或許比分開一次次的寫對讀者而言要好上不上,畢竟不用一篇篇的去找了。

音樂推薦

原創不易,如果感覺不錯,希望給個推薦!您的支持是我寫作的最大動力!
版權聲明:
作者:虛無境
博客園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm
掘金出處:https://juejin.im/user/5ae45d5bf265da0b8a6761e4    
個人博客出處:http://www.panchengming.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM