2.服務發現
基於檔案的服務發現
1.建立json或yaml檔案
mkdir -p /usr/local/prometheus/files_sd/targets
以下為yaml格式
vim nodes.yaml
- targets:
- 192.168.13.140:9100
- 192.168.13.120:9100
labels:
app: node-exporter
job: node
以下為json格式
vim nodes.json
[{
"targets": [
"192.168.13.140:9100",
"192.168.13.141:9100",
],
"labels": {
"datacenter": "beijing"
}
}]
2.修改prometheus配置檔案
vim prometheus.yml
scrape_configs:
-
job_name: 'prometheus'
file_sd_configs:- files: # 自定義的和Prometheus程式同級目錄的targets目錄
- targets/prometheus-server.yaml # 指定服務發現的檔案
refresh_interval: 5m
- targets/prometheus-server.yaml # 指定服務發現的檔案
- files: # 自定義的和Prometheus程式同級目錄的targets目錄
-
job_name: 'node'
file_sd_configs:- files:
- targets/nodes.yaml # 可以使用json或yaml格式
refresh_interval: 5m
- targets/nodes.yaml # 可以使用json或yaml格式
- files:
基於consul的服務發現
基於DNS的服務發現
基於DNS的服務發現
- job_name: webapp
dns_sd_configs:- name: [ '_prometheus._tcp.example.com’ ]
預設情況下, Prometheus的DNS服務發現假定你會查詢SRV或服務記錄。
服務記錄是一種在DNS配置中定義服務的方法,服務通常由執行服務的一個或多個目標主機和埠組合組成。
DNS SRV條目的格式如下所示:
_service._proto.name. TTL class SRV priority weight port target
_service 服務名稱,字首 _ 是為了防止與DNS 標籤(域名)衝突
proto 服務使用的通訊協議 通常是 tcp udp
name 此記錄有效域名
TTL 標準DNS class 欄位,通常為IN
priority 記錄優先順序,數值越小,優先順序越高。 [0-65535]
weight 記錄權重,數值越大,權重越高。[0-65535]
port 服務使用埠
target 使用服務的主機地址名稱
示例SRV記錄
_prometheus._tcp.example.com. 300 IN SRV 10 1 9100 webapp1.
_prometheus._tcp.example.com. 300 IN SRV 10 1 9100 webapp2.
DNS A記錄服務發現作業
- job_name: webapp
dns_sd_configs:- name: ['example.com']
type: A
port: 9100
- name: ['example.com']