[英]How to filter EC2 instances in prometheus.yml?
我正在嘗試在prometheus.yml
過濾EC2實例。 假設以下內容是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.*
我沒有使用AWS的經驗,但是我相信它的API不支持過濾API的正則表達式。
通常,重新標記是進行過濾的首選方法。 如何實現這一目標的一個示例是(對於領事,但這並不重要): Prometheus:如何基於Consul標簽刪除目標可用的ec2元標簽列表在https://prometheus.io上的 prometheus文檔中。 / docs / prometheus / latest / configuration / configuration /#ec2_sd_config
我看到Prometheus文檔建議您在可能有成千上萬個實例的情況下,出於效率原因,建議在重新標記時使用過濾器。 使用具有值“ qa”,“ prod”等的單獨標記(例如“ Env”),以便它們可以精確匹配(不使用正則表達式/通配符),這是一個很好的解決方案,我猜呢?
似乎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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.