promtheus 配置文件

全局配置

global 屬於全局的默認配置,它主要包含 4 個屬性,node

  • scrape_interval: 拉取 targets 的默認時間間隔。
  • scrape_timeout: 拉取一個 target 的超時時間。
  • evaluation_interval: 執行 rules 的時間間隔。
  • external_labels: 額外的屬性,會添加到拉取的數據並存到數據庫中。
  • global:
      scrape_interval:     15s # By default, scrape targets every 15 seconds.
      evaluation_interval: 15s # By default, scrape targets every 15 seconds.
      scrape_timeout: 10s # is set to the global default (10s).
    
      # Attach these labels to any time series or alerts when communicating with
      # external systems (federation, remote storage, Alertmanager).
      external_labels:
        monitor: 'codelab-monitor'

告警配置

一般咱們能夠使用運行參數 -alertmanager.xxx 來配置 Alertmanager, 可是這樣不夠靈活,沒有辦法作到動態更新加載,以及動態定義告警屬性。mysql

因此 alerting 配置主要用來解決這個問題,它可以更好的管理 Alertmanager, 主要包含 2 個參數:sql

  • alert_relabel_configs: 動態修改 alert 屬性的規則配置。
  • alertmanagers: 用於動態發現 Alertmanager 的配置。

其代碼結構體定義爲:數據庫

// AlertingConfig configures alerting and alertmanager related configs.
type AlertingConfig struct {
    AlertRelabelConfigs []*RelabelConfig      `yaml:"alert_relabel_configs,omitempty"`
    AlertmanagerConfigs []*AlertmanagerConfig `yaml:"alertmanagers,omitempty"`

    // Catches all undefined fields and must be empty after parsing.
    XXX map[string]interface{} `yaml:",inline"`
}

配置文件結構大概爲:數組

# Alerting specifies settings related to the Alertmanager.
alerting:
  alert_relabel_configs:
    [ - <relabel_config> ... ]
  alertmanagers:
    [ - <alertmanager_config> ... ]

其中 alertmanagers 爲 alertmanager_config 數組memcached

 

規則配置

rule_files 主要用於配置 rules 文件,它支持多個文件以及文件目錄。lua

其代碼結構定義爲:url

RuleFiles      []string        `yaml:"rule_files,omitempty"`

配置文件結構大體爲:code

rule_files:
  - "rules/node.rules"
  - "rules2/*.rules"


數據拉取配置

scrape_configs 主要用於配置拉取數據節點,每個拉取配置主要包含如下參數:server

  • job_name:任務名稱
  • honor_labels: 用於解決拉取數據標籤有衝突,當設置爲 true, 以拉取數據爲準,不然以服務配置爲準
  • params:數據拉取訪問時帶的請求參數
  • scrape_interval: 拉取時間間隔
  • scrape_timeout: 拉取超時時間
  • metrics_path: 拉取節點的 metric 路徑
  • scheme: 拉取數據訪問協議
  • sample_limit: 存儲的數據標籤個數限制,若是超過限制,該數據將被忽略,不入存儲;默認值爲0,表示沒有限制
  • relabel_configs: 拉取數據重置標籤配置
  • metric_relabel_configs:metric 重置標籤配置

遠程可寫存儲

remote_write 主要用於可寫遠程存儲配置,主要包含如下參數:

  • url: 訪問地址
  • remote_timeout: 請求超時時間
  • write_relabel_configs: 標籤重置配置, 拉取到的數據,通過重置處理後,發送給遠程存儲

遠程可讀存儲

remote_read 主要用於可讀遠程存儲配置,主要包含如下參數:

  • url: 訪問地址
  • remote_timeout: 請求超時時間

服務發現

在 Prometheus 的配置中,一個最重要的概念就是數據源 target,而數據源的配置主要分爲靜態配置和動態發現, 大體爲如下幾類:

  • static_configs: 靜態服務發現
  • dns_sd_configs: DNS 服務發現
  • file_sd_configs: 文件服務發現
  • consul_sd_configs: Consul 服務發現
  • serverset_sd_configs: Serverset 服務發現
  • nerve_sd_configs: Nerve 服務發現
  • marathon_sd_configs: Marathon 服務發現
  • kubernetes_sd_configs: Kubernetes 服務發現
  • gce_sd_configs: GCE 服務發現
  • ec2_sd_configs: EC2 服務發現
  • openstack_sd_configs: OpenStack 服務發現
  • azure_sd_configs: Azure 服務發現
  • triton_sd_configs: Triton 服務發現

配置樣例

Prometheus 的配置參數比較多,可是我的使用較多的是 global, rules, scrap_configs, statstic_config, rebel_config 等。

我平時使用的配置文件大體爲這樣:

global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.

rule_files:
  - "rules/node.rules"

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

  - job_name: 'node'
    scrape_interval: 8s
    static_configs:
      - targets: ['127.0.0.1:9100', '127.0.0.12:9100']

  - job_name: 'mysqld'
    static_configs:
      - targets: ['127.0.0.1:9104']
  - job_name: 'memcached'
    static_configs:
      - targets: ['127.0.0.1:9150']
相關文章
相關標籤/搜索