我使用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

再稍微努力一下,可能可以搞定正则表达式这一块…
总之,因为它已经能够正常运行,所以就算了吧。

广告
将在 10 秒后关闭
bannerAds