我想将 Prometheus 中的实例名称设置为主机名
当在 Prometheus.yaml 中将目标指定为 IP 地址时,也会在指标的实例标签中记录 IP 地址。
解决方法有三种选项。
-
- 方法①:DNSサーバで名前解決できるようにして、prometheus.yamlにホスト名を書く
-
- 方法②:Prometheusサーバの/etc/hostsにホスト名とIPアドレスの対応を書き、prometheus.yamlにホスト名を書く
- 方法③:relabel_configsを使う
在本文中,我将介绍一种容易尝试的方法三。
只需得出结论。
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'linux'
static_configs:
- targets:
- 192.168.1.101:9100:server1 #<IP>:<PORT>:<HOSTNAME>
- 192.168.1.102:9100:server2
relabel_configs:
- source_labels: [__address__] # targetsエントリを分解してinstanceラベルの値を生成する
regex: '([^:]+):(\d+):(.*)'
target_label: instance
replacement: '${3}:${2}' # instance=<HOSTNAME>:<PORT>
- source_labels: [__address__] # targetsエントリを分解して、実際のアクセス先を生成する
regex: '([^:]+):(\d+):(.*)'
target_label: __address__
replacement: '${1}:${2}' # __address__=<IP>:<PORT>