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

Amazon ec2 如何在prometheus.yml中过滤EC2实例?,amazon-ec2,monitoring,prometheus,Amazon Ec2,Monitoring,Prometheus,我正在尝试过滤prometheus.yml中的EC2实例。假设以下内容是yml文件的一部分。如何在值中使用regex返回以prod或qa或其他标签开头的实例?是否可以在不配置重新标记的情况下执行此操作 ec2_sd_configs: - region: us-east-1 access_key: access secret_key: mysecret profile: profile filters: - name: tag:Name values:

我正在尝试过滤
prometheus.yml
中的EC2实例。假设以下内容是yml文件的一部分。如何在值中使用regex返回以
prod
qa
或其他标签开头的实例?是否可以在不配置重新标记的情况下执行此操作

  ec2_sd_configs:
- region: us-east-1
  access_key: access
  secret_key: mysecret
  profile: profile
  filters:
    - name: tag:Name
      values:
        - prod.*
        - qa.*

我对AWS没有任何经验,但我相信它的API在过滤API时不支持正则表达式

通常,重新标记是进行过滤的首选方法。如何做到这一点的一个例子是(对于领事来说,但这并不重要): 可用的ec2元标签列表在prometheus文档中


我看到普罗米修斯文档建议在可能有数千个实例的情况下,出于效率考虑,使用过滤器而不是重新标记。使用单独的标记(例如“Env”),该标记具有“qa”、“prod”等值,因此它们可以精确匹配(没有正则表达式/通配符),这将是一个优雅的解决方案,我想?

我对AWS没有任何经验,但我相信它的API不支持过滤API中的正则表达式

通常,重新标记是进行过滤的首选方法。如何做到这一点的一个例子是(对于领事来说,但这并不重要): 可用的ec2元标签列表在prometheus文档中


我看到普罗米修斯文档建议在可能有数千个实例的情况下,出于效率考虑,使用过滤器而不是重新标记。使用单独的标记(例如“Env”),该标记具有“qa”、“prod”等值,因此它们可以精确匹配(没有正则表达式/通配符),这将是一个优雅的解决方案,我想?

普罗米修斯现在似乎不支持过滤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

普罗米修斯现在似乎不支持过滤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

是的,我采用了类似的方法,但如果不重新标记,过滤是不完整的。我贴了一个详细的答案,以备将来有人需要。谢谢你的回复。是的,我采用了一种类似的方法,但如果不重新标记,过滤是不完整的。我贴了一个详细的答案,以备将来有人需要。谢谢你的回复。