通常、コンテナ/ポッドの代わりに通常のノードを使用する場合と同じように、ポッドごとのメトリックが必要になります。
this Prometheus configurationを使用すると、クラスタ上で実行されているすべてのポッドのターゲットが自動的に取得されます。これがtrueにprometheus.io/scrape
セットが含まれていポッドは、対象となる、プロメテウスによって掻き取りされますので、これが設定されている、
# Example scrape config for pods
#
# The relabeling allows the actual pod scrape endpoint to be configured via the
# following annotations:
#
# * `prometheus.io/scrape`: Only scrape pods that have a value of `true`
# * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
# * `prometheus.io/port`: Scrape the pod on the indicated port instead of the
# pod's declared ports (default is a port-free target if none are declared).
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name
としては、上記のコメントで説明した重要な部分です。ポッドには、プロメテウス形式のメトリックを公開するメトリクスエンドポイントが必要です。 prometheus.io/path
とprometheus.io/port
を使用して、Prometheusがポッドのメトリックを探す場所を設定できます。
クラスタに複数のリソースを配置する作業を自動化したい場合は、ヘルムチャートを参照してください。 –
ヘルムチャートは配備を容易にします。しかし、私の質問は、主に「サービス名に基づいて自動的にPrometheusジョブを作成する」ことです。 – Kodar