一、基礎配置
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-hk/n/372267.html