3.7.14 PrometheusのKubernetesマニフェスト作成
Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。
- 〈この項の構成〉
(1) Prometheusのマニフェスト作成
Prometheusの公式ドキュメントを参考に、ConfigMap以外のKubernetesマニフェストを作成してください。パラメタの内容および設定値の詳細については、Prometheusの公式ドキュメントを参照してください。
(2) ConfigMapの作成
メトリクス収集対象の定義、およびにMetricbeatへのメトリクス送信のため、KubernetesマニフェストのConfigMapを作成してください。次に記述例を示します。
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: my-namespace
data:
prometheus.yml: |
global:
scrape_interval: 15s
evaluation_interval: 30s
scrape_configs: …1
- job_name: 'hmppcto-metrics-scraper'
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: ([^\n]+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: (.+):(?:\d+);(\d+)
replacement: ${1}:${2}
target_label: __address__
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: pod_name
- source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
action: replace
target_label: label_app_kubernetes_io_name
- source_labels: [__meta_kubernetes_pod_container_name]
regex: "dependency-checker"
action: drop
- source_labels: [__meta_kubernetes_pod_container_name]
regex: "filebeat-sidecar"
action: drop
- job_name: 'jaeger-collector-scraper' …2
kubernetes_sd_configs:
- role: endpoints
metrics_path: /metrics
relabel_configs:
- source_labels: [__address__]
regex: (.+):\d+
replacement: ${1}:14269
target_label: __address__
action: replace
- source_labels: [__meta_kubernetes_service_name]
regex: jaeger-collector
action: keep
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: pod_name
- source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
action: replace
target_label: label_app_kubernetes_io_name
remote_write: …3
- url: http://metricbeat:9201/write
queue_config:
capacity: 10000
max_shards: 50
max_samples_per_send: 2000
enable_http2: true …4
記述例の番号は、説明の番号と対応しています。
この例では、各KubernetesオブジェクトのNamespace名(metadata.namespaceフィールド)は、「my-namespace」としています。
<説明>
-
「scrape_configs:」の行から「- job_name: 'jaeger-collector-scraper'」の1つ上の「action: drop」の行で、HMP-PCTOのメトリクスを収集します。
次の設定で、Kubernetesマニフェストの.spec.template.metadata.annotationsに設定されている3つのキーの値を参照して、メトリクスを収集します。この設定は変更しないでください。
-
prometheus.io/scrape
-
prometheus.io/path
-
prometheus.io/port
- job_name: 'hmppcto-metrics-scraper' 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__次の設定で、Podに設定されているKubernetesのメタデータをラベルとして設定します。追加されるラベルを次に示します。ラベルに関する設定は必要に応じて追加してください。
-
namespace:Podの名前空間
-
pod_name:Pod名
-
label_app_kubernetes_io_name:Podの.spec.template.metadata.labelsの「app.kubernetes.io/name」に設定されている値
- source_labels: [__meta_kubernetes_namespace] action: replace target_label: namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: pod_name - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name] action: replace target_label: label_app_kubernetes_io_name次の設定で、HMP-PCTOのPod内に存在するコンテナを、メトリクスの収集対象から除く設定をします。この設定は変更しないでください。
- source_labels: [__meta_kubernetes_pod_container_name] regex: "dependency-checker" action: drop - source_labels: [__meta_kubernetes_pod_container_name] regex: "filebeat-sidecar" action: drop -
-
「- job_name: 'jaeger-collector-scraper'」の行から「target_label: label_app_kubernetes_io_name」の行で、Jaeger-collectorのメトリクスを収集します。Jaeger-collectorのメトリクスを収集することで、受信したSpanを格納する内部キューの使用状況を確認し、チューニングができます。Jaeger-collectorを使用する場合に設定してください。
次の設定で、Jaeger-collectorのメトリクスを収集します。この設定は変更しないでください。
- job_name: 'jaeger-collector-scraper' kubernetes_sd_configs: - role: endpoints metrics_path: /metrics relabel_configs: - source_labels: [__address__] regex: (.+):\\d+ replacement: ${1}:14269 target_label: __address__ action: replace - source_labels: [__meta_kubernetes_service_name] regex: jaeger-collector action: keep次の設定で、Podに設定されているKubernetesのメタデータをラベルとして設定します。追加されるラベルを次に示します。ラベルに関する設定は必要に応じて追加してください。
-
namespace:Podの名前空間
-
pod_name:Pod名
-
label_app_kubernetes_io_name:Podの.spec.template.metadata.labelsの「app.kubernetes.io/name」に設定されている値
- source_labels: [__meta_kubernetes_namespace] action: replace target_label: namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: pod_name - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name] action: replace target_label: label_app_kubernetes_io_name -
-
「remote_write:」の行から「max_samples_per_send: 2000」の行で、Metricbeatにメトリクスを送信するための設定を定義します。
-
Metricbeatはデータを送信する際の通信プロトコルとしてHTTP/2に対応しているため、HTTP/2の通信を利用できるように明示的に設定します。