##【問題】
以前Prometheusのすすめ - Service Discovery -にて設定したやり方だと
PublicIPを持っていないインスタンスに対してはEndPointが「http://:9100/metrics」になって
自分自身にexporterを入れてる場合に、「http://:9100/metrics」になっているインスタンスは自分自身のexporterに取得しに行ってしまう。
##【解決策】
色々と悩んだ結果、PublicIPがちゃんと設定されている場合のみrelabelがされれば良いようにする。
prometheus.yml抜粋
relabel_configs:
- source_labels: [__meta_ec2_public_ip]
- regex: '(.*)'
+ regex: '([1-9].*)'
target_label: __address__
replacement: '${1}:9100'
- source_labels: [__meta_ec2_tag_Name]
target_label: instance
これで、PublicIPを持ってないインスタンスはそのままプライベートIPになるので、問題なし。