如何在 prometheus.yml 中过滤 EC2 实例?

Ham*_*med 2 monitoring amazon-ec2 prometheus

我正在尝试过滤prometheus.yml. 假设以下内容是 yml 文件的一部分。如何使用中的值的正则表达式返回实例与启动,让说,prod或者qa还是其他的标签?这可以不配置relabeling吗?

  ec2_sd_configs:
- region: us-east-1
  access_key: access
  secret_key: mysecret
  profile: profile
  filters:
    - name: tag:Name
      values:
        - prod.*
        - qa.*
Run Code Online (Sandbox Code Playgroud)

Ham*_*med 6

Prometheus 目前似乎不支持过滤 API 中的正则表达式,但如果他们可以在未来版本中添加它,那将是一个不错的功能。在这种情况下可以做的是,您可以在 EC2 实例上添加单独的标签,以便您可以根据这些标签进行过滤。如果您有大量实例,早期过滤非常有用。否则,您将获得一个巨大的列表,并且您需要通过重新标记来经历删除/保留阶段,这仍然在服务发现面板中保留一长串列表并使其难以阅读。

在下一步中,您可以使用重新标记将每个发现的实例的地址从私有 IP 替换为公共 IP。最后,您可以用标签名称替换实例名称,例如,所有 QA 实例都标记为 QA。

 ec2_sd_configs:
  - region: value
    access_key: value
    secret_key: value
    port: value
    filters:
      - name: tag:Name
        values:
          - qa
          - prod
          - some other types
relabel_configs:
  - source_labels: [__meta_ec2_public_ip]
    replacement: '${1}:your port number'
    target_label: __address__
  - source_labels: [__meta_ec2_tag_Name]
    target_label: instance
Run Code Online (Sandbox Code Playgroud)