1. 程式人生 > 其它 >Prometheus之配置詳解

Prometheus之配置詳解

prometheus的配置檔案prometheus.yml,它主要分以下幾個配置塊:
全域性配置        global
告警配置        alerting
規則檔案配置    rule_files
拉取配置        scrape_configs
遠端讀寫配置    remote_read、remote_write

全域性配置 global:
global指定在所有其他配置上下文中有效的引數。還可用作其他配置部分的預設設定。
global:
  # 預設拉取頻率
  [ scrape_interval: <duration> | default = 1m ]

  # 拉取超時時間
  [ scrape_timeout: <duration> | default = 10s ]

  # 執行規則頻率
  [ evaluation_interval: <duration> | default = 1m ]

  # 通訊時新增到任何時間序列或告警的標籤
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    [ <labelname>: <labelvalue> ... ]

  # 記錄PromQL查詢的日誌檔案
  [ query_log_file: <string> ]



告警配置 alerting:
alerting指定與Alertmanager相關的設定。
alerting:
  alert_relabel_configs:
    [ - <relabel_config> ... ]
  alertmanagers:
    [ - <alertmanager_config> ... ]



規則檔案配置 rule_files:
rule_files指定prometheus載入的任何規則的位置,從所有匹配的檔案中讀取規則和告警。目前沒有規則。
rule_files:
  [ - <filepath_glob> ... ]




拉取配置 scrape_configs:
scrape_configs指定prometheus監控哪些資源。預設會拉取prometheus本身的時間序列資料,通過http://localhost:9090/metrics進行拉取。
一個scrape_config指定一組目標和引數,描述如何拉取它們。在一般情況下,一個拉取配置指定一個作業。在高階配置中,這可能會改變。
可以通過static_configs引數靜態配置目標,也可以使用支援的服務發現機制之一動態發現目標。
此外,relabel_configs在拉取之前,可以對任何目標及其標籤進行修改。
scrape_configs:
job_name: <job_name>

# 拉取頻率
[ scrape_interval: <duration> | default = <global_config.scrape_interval> ]

# 拉取超時時間
[ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ]

# 拉取的http路徑
[ metrics_path: <path> | default = /metrics ]

# honor_labels 控制prometheus處理已存在於收集資料中的標籤與prometheus將附加在伺服器端的標籤("作業"和"例項"標籤、手動配置的目標標籤和由服務發現實現生成的標籤)之間的衝突
# 如果 honor_labels 設定為 "true",則通過保持從拉取資料獲得的標籤值並忽略衝突的伺服器端標籤來解決標籤衝突
# 如果 honor_labels 設定為 "false",則通過將拉取資料中衝突的標籤重新命名為"exported_<original-label>"來解決標籤衝突(例如"exported_instance"、"exported_job"),然後附加伺服器端標籤
# 注意,任何全域性配置的 "external_labels"都不受此設定的影響。在與外部系統的通訊中,只有當時間序列還沒有給定的標籤時,它們才被應用,否則就會被忽略
[ honor_labels: <boolean> | default = false ]

# honor_timestamps 控制prometheus是否遵守拉取資料中的時間戳
# 如果 honor_timestamps 設定為 "true",將使用目標公開的metrics的時間戳
# 如果 honor_timestamps 設定為 "false",目標公開的metrics的時間戳將被忽略
[ honor_timestamps: <boolean> | default = true ]

# 配置用於請求的協議
[ scheme: <scheme> | default = http ]


# 可選的http url引數
params:
  [ <string>: [<string>, ...] ]

# 在每個拉取請求上配置 username 和 password 來設定 Authorization 頭部,password 和 password_file 二選一
basic_auth:
  [ username: <string> ]
  [ password: <secret> ]
  [ password_file: <string> ]

# 在每個拉取請求上配置 bearer token 來設定 Authorization 頭部,bearer_token 和 bearer_token_file 二選一
[ bearer_token: <secret> ]

# 在每個拉取請求上配置 bearer_token_file 來設定 Authorization 頭部,bearer_token_file 和 bearer_token 二選一
[ bearer_token_file: /path/to/bearer/token/file ]

# 配置拉取請求的TLS設定
tls_config:
  [ <tls_config> ]


# 可選的代理URL
[ proxy_url: <string> ]

# Azure服務發現配置列表
azure_sd_configs:
  [ - <azure_sd_config> ... ]

# Consul服務發現配置列表
consul_sd_configs:
  [ - <consul_sd_config> ... ]

# DNS服務發現配置列表
dns_sd_configs:
  [ - <dns_sd_config> ... ]

# EC2服務發現配置列表
ec2_sd_configs:
  [ - <ec2_sd_config> ... ]


# OpenStack服務發現配置列表
openstack_sd_configs:
  [ - <openstack_sd_config> ... ]

# file服務發現配置列表
file_sd_configs:
  [ - <file_sd_config> ... ]

# GCE服務發現配置列表
gce_sd_configs:
  [ - <gce_sd_config> ... ]

# Kubernetes服務發現配置列表
kubernetes_sd_configs:
  [ - <kubernetes_sd_config> ... ]

# Marathon服務發現配置列表
marathon_sd_configs:
  [ - <marathon_sd_config> ... ]


# AirBnB's Nerve服務發現配置列表
nerve_sd_configs:
  [ - <nerve_sd_config> ... ]

# Zookeeper Serverset服務發現配置列表
serverset_sd_configs:
  [ - <serverset_sd_config> ... ]

# Triton服務發現配置列表
triton_sd_configs:
  [ - <triton_sd_config> ... ]

# 靜態配置目標列表
static_configs:
  [ - <static_config> ... ]

# 目標relabel配置列表
relabel_configs:
  [ - <relabel_config> ... ]


# metric relabel配置列表
metric_relabel_configs:
  [ - <relabel_config> ... ]

# 每次拉取樣品的數量限制
# metric relabelling之後,如果有超過這個數量的樣品,整個拉取將被視為失效。0表示沒有限制
[ sample_limit: <int> | default = 0 ]


遠端讀寫配置 remote_read/remote_write:
remote_read/remote_write將資料來源與prometheus分離,當前不做配置。
# 與遠端寫功能相關的設定
remote_write:
  [ - <remote_write> ... ]

# 與遠端讀功能相關的設定
remote_read:
  [ - <remote_read> ... ]



簡單配置示例:
vim /usr/local/prometheus/prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

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

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']