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']