この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

セレクターとスクレイプ設定

Rancher-IstioはRancher v2.12.0以降廃止されました。セキュリティを強化するために、 SUSE Application CollectionのIstioビルドに切り替えてください(SUSE Rancher Primeサブスクリプションに含まれています)。 詳細情報は この発表にあります。

モニタリングアプリは`prometheus.prometheusSpec.ignoreNamespaceSelectors=false`を設定し、これによりデフォルトで全てのネームスペースの監視が可能になります。

これにより、`istio-injection=enabled`ラベルが付けられたネームスペースにデプロイされたリソースのトラフィック、メトリクス、グラフを表示できます。

Prometheusを特定のネームスペースに制限したい場合は、`prometheus.prometheusSpec.ignoreNamespaceSelectors=true`を設定してください。これを行うと、リソースの監視を続けるために追加の設定を行う必要があります。

ignoreNamespaceSelectorsをTrueに設定して特定のネームスペースに監視を制限する

特定のネームスペースに監視を制限するには、ignoreNamespaceSelectors Helmチャートオプションを編集します。モニタリングHelmチャートをインストールまたはアップグレードする際に、このオプションを設定します:

  1. モニタリングHelmチャートをインストールまたはアップグレードする際に、values.ymlを編集し、prometheus.prometheusSpec.ignoreNamespaceSelectors=trueを設定します。

  2. インストールまたはアップグレードを完了します。

*結果:*Prometheusは特定のネームスペースに制限されるため、さまざまなダッシュボードでデータを表示し続けるために、次のいずれかの設定を行う必要があります。

Prometheusが他のネームスペースのリソースを検出できるようにする

`prometheus.prometheusSpec.ignoreNamespaceSelectors=true`の際に、Prometheusが他のネームスペースのリソースを検出できるようにする方法は2つあります:

  • *特定のネームスペースの監視:*スクレイプしたいターゲットがあるネームスペースにサービスモニターまたはポッドモニターを追加します。

  • *ネームスペース間の監視:*すべてのネームスペースのすべてのターゲットをスクレイプするために、rancher-monitoringインスタンスに`additionalScrapeConfig`を追加します。

特定のネームスペースの監視:サービスモニターまたはポッドモニターを作成する

このオプションにより、特定のネームスペースで監視したい特定のサービスやポッドを定義できます。

使いやすさのトレードオフは、ネームスペースをまたいで監視できないため、ネームスペースごとにサービスモニターまたはポッドモニターを作成する必要があることです。

前提条件:

`<your namespace>`のためにServiceMonitorまたはPodMonitorを定義してください。以下に例としてServiceMonitorを示します。

  1. *☰ > クラスター管理*をクリックします。

  2. 作成したクラスターに移動し、*探索*をクリックします。

  3. 上部のナビゲーションバーで、kubectl シェルを開きます。

  4. ServiceMonitorまたはPodMonitorファイルがクラスター内にローカルに保存されている場合、`kubectl create -f <name of service/pod monitor file>.yaml`にあります。

  5. ServiceMonitorまたはPodMonitorがローカルに保存されていない場合は、`cat<< EOF | kubectl apply -f -`を実行し、ファイルの内容をターミナルに貼り付けてから、`EOF`を実行してコマンドを完了してください。

  6. `kubectl label namespace <your namespace> istio-injection=enabled`を実行して、envoyサイドカーの注入を有効にします。

結果: `<your namespace>`はPrometheusによってスクレイプ可能です。

Istio プロキシ用のサンプル ServiceMonitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: envoy-stats-monitor
  namespace: istio-system
  labels:
    monitoring: istio-proxies
spec:
  selector:
    matchExpressions:
    - {key: istio-prometheus-ignore, operator: DoesNotExist}
  namespaceSelector:
    any: true
  jobLabel: envoy-stats
  endpoints:
  - path: /stats/prometheus
    targetPort: 15090
    interval: 15s
    relabelings:
    - sourceLabels: [__meta_kubernetes_pod_container_port_name]
      action: keep
      regex: '.*-envoy-prom'
    - action: labeldrop
      regex: "__meta_kubernetes_pod_label_(.+)"
    - sourceLabels: [__meta_kubernetes_namespace]
      action: replace
      targetLabel: namespace
    - sourceLabels: [__meta_kubernetes_pod_name]
      action: replace
      targetLabel: pod_name

ネームスペースをまたいだ監視:ignoreNamespaceSelectorsをFalseに設定します。

これにより、Prometheusに追加のスクレイプ設定を提供することで、ネームスペースをまたいだ監視が可能になります。

使いやすさのトレードオフは、Prometheusのすべての`additionalScrapeConfigs`が単一のSecretに保持されることです。これは、Istioをインストールする前にadditionalScrapeConfigsで監視がすでにデプロイされている場合、アップグレードが困難になる可能性があります。

  1. Monitoring Helmチャートをインストールまたはアップグレードする際は、values.ymlを編集し、`prometheus.prometheusSpec.additionalScrapeConfigs`配列を以下に示す*追加のスクレイプ設定*に設定してください。

  2. インストールまたはアップグレードを完了します。

結果:`istio-injection=enabled`ラベルを持つすべてのネームスペースはPrometheusによってスクレイプされます。

追加のスクレイプ設定
- job_name: 'istio/envoy-stats'
  scrape_interval: 15s
  metrics_path: /stats/prometheus
  kubernetes_sd_configs:
    - role: pod
  relabel_configs:
    - source_labels: [__meta_kubernetes_pod_container_port_name]
      action: keep
      regex: '.*-envoy-prom'
    - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: $1:15090
      target_label: __address__
    - action: labelmap
      regex: __meta_kubernetes_pod_label_(.+)
    - source_labels: [__meta_kubernetes_namespace]
      action: replace
      target_label: namespace
    - source_labels: [__meta_kubernetes_pod_name]
      action: replace
      target_label: pod_name