簡體   English   中英

如何在prometheus.yml中過濾EC2實例?

[英]How to filter EC2 instances in prometheus.yml?

我正在嘗試在prometheus.yml過濾EC2實例。 假設以下內容是yml文件的一部分。 如何在值中使用正則表達式以返回以prodqa或其他標簽開頭的實例? 不配置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM