我使用GCE试着使用Prometheus
我在GCE上创建了一些实例,根据其角色进行管理,例如api,web,db,staging,production等,并随意为其添加了标签以进行运维。
在那种情况下,我开始考虑引入Prometheus来收集各种指标。
所以,我做了以下这些事情。
生成凭证
请参考此链接:https://developers.google.com/identity/protocols/application-default-credentials,获取凭据的JSON,并将其放置在执行Prometheus的主机的~/.config/gcloud/application_default_credentials.json 文件中。
GCE_SD配置
如果`__meta_gce_tags`上有`foo`和`bar`标签,它似乎会返回值`,foo,bar,`。
关于redis_exporter
为了简化管理,redis_exporter在启动时的参数中会列出多个Redis服务器的地址。然而,这样做可能会不太方便,所以我们决定在每个Redis实例中运行一个redis_exporter,并将其指向本地主机。
最终的 prometheus.yml
最终结果是这样的。
- job_name: 'node'
gce_sd_configs:
- project: XXXXXXXXX
zone: asia-east1-c
port: 9100
relabel_configs:
- source_labels: [__meta_gce_instance_name]
target_label: instance
regex: (.*)
replacement: $1
- source_labels: [__meta_gce_tags]
target_label: stage
regex: ".*,(staging|production),.*"
replacement: $1
- source_labels: [__meta_gce_tags]
target_label: role
regex: ".*,(api|web|db|redis),.*"
replacement: $1
- job_name: 'redis_exporter'
gce_sd_configs:
- project: XXXXXXXXX
zone: asia-east1-c
port: 9121
relabel_configs:
- source_labels: [__meta_gce_instance_name]
target_label: instance
regex: (.*)
replacement: $1
- source_labels: [__meta_gce_tags]
target_label: stage
regex: ".*,(staging|production),.*"
replacement: $1
- source_labels: [__meta_gce_tags]
target_label: role
regex: ".*,redis,.*"
action: keep
再稍微努力一下,可能可以搞定正则表达式这一块…
总之,因为它已经能够正常运行,所以就算了吧。