Prometheus配置詳解

一、基礎配置

1、在Prometheus的配置文件中,需要定義scrape_configs字段,用於定義需要監控的目標。比如,我們要監控Node Exporter的metrics,可以這樣配置:

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

以上配置指定了一個任務(node_exporter),並定義了一個目標(localhost:9100)。這個目標需要在Node Exporter啟動後才能正常監控。

2、還可以通過relabel_configs字段對原始採集的metrics進行處理,比如修改Labels,過濾數據,等等。比如,修改Labels的配置如下:

relabel_configs:
  - source_labels: [__address__]
    target_label: instance
    replacement: my_custom_instance

以上配置指定了一個規則,將源標籤__address__替換為新標籤instance,將值替換為my_custom_instance。

二、服務發現

1、Prometheus支持許多服務發現方式,如Consul、Kubernetes、AWS、EC2、等等。下面是一個使用Kubernetes進行服務發現的配置示例:

scrape_configs:
  - job_name: 'kubernetes-pods'
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_container_port_number]
        regex: '.*'
        action: keep

以上配置指定了一個任務(kubernetes-pods),使用Kubernetes進行服務發現。Prometheus會自動從Kubernetes API中獲取Pod信息並監控其metrics。relabel_configs中的規則用於保留所有container port的metrics。

2、Prometheus還可以通過file_sd_configs字段讀取JSON文件進行服務發現。比如,我們有一個名為targets.json的JSON文件,內容如下:

[
  {"targets":["localhost:9100"],"labels":{"job":"node_exporter"}},
  {"targets":["localhost:8080"],"labels":{"job":"my_http_server"}}
]

我們可以通過以下配置讀取該文件:

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

以上配置指定了一個任務(file_sd),通過file_sd_configs從targets.json文件讀取目標列表。

三、告警配置

1、首先需要在Prometheus的初始配置中定義告警接收方式,如郵件、Slack、PagerDuty等。比如,我們要使用email作為告警方式,可以這樣配置:

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 'localhost:9093'
route:
  receiver: 'team-emails'
  routes:
  - match:
      severity: critical
    receiver: 'team-emails'

以上配置定義了一個alertmanager,以及一個receiver用於接收告警。還通過route指定了當嚴重程度(severity)為critical時發送給team-emails接收者。

2、在Prometheus中定義告警規則。比如,我們要監控Node Exporter的CPU使用率,當CPU使用率超過80%時觸發告警,可以這樣配置:

groups:
  - name: example
    rules:
      - alert: HighCpuUsage
        expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High CPU usage detected"
          description: "CPU usage has exceeded 80% over the last 5 minutes."

以上配置定義了一個規則,當CPU使用率超過80%時觸發告警。在告警觸發後,Prometheus會將告警發送給alertmanager。在alertmanager配置中定義了team-emails接收者,因此會將告警發送給該接收者。

四、模板配置

1、Prometheus支持模板配置,用於統一管理多個任務的配置。比如,我們要對多個任務定義相同的relabel_configs規則,可以使用模板。定義模板的示例配置如下:

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']
  - job_name: 'my_http_server'
    static_configs:
      - targets: ['localhost:8080']

- name: 'my_relabel_template'
  source_labels: [__address__]
  target_label: instance
  replacement: my_custom_instance

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']
    relabel_configs:
      - ${my_relabel_template}
  - job_name: 'my_http_server'
    static_configs:
      - targets: ['localhost:8080']
    relabel_configs:
      - ${my_relabel_template}

以上配置定義了一個名為my_relabel_template的模板,用於處理需要採集的metrics。在任務配置中,使用${my_relabel_template}引用該模板,實現了多個任務共享同一配置模板。

2、除了relabel_configs,Prometheus還支持其他模板類型,如scrape_configs模板、alerting規則模板、等等。通過使用模板,我們可以更好地組織和管理配置,提高靈活性和可維護性。

原創文章,作者:BQILA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/372267.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BQILA的頭像BQILA
上一篇 2025-04-24 06:40
下一篇 2025-04-24 06:40

相關推薦

  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論