Telegraf によって収集された スーパーバイザー メトリックをカスタム可観測プラットフォームにストリーミングする方法について説明します。スーパーバイザー では Telegraf がデフォルトで有効になっており、Kubernetes API サーバ、仮想マシン サービス、Tanzu Kubernetes Grid などの スーパーバイザー コンポーネントから Prometheus 形式でメトリックが収集されます。vSphere 管理者は、VMware Aria Operations for Applications や Grafana などの可観測プラットフォームを構成して、収集された スーパーバイザー メトリックを表示したり分析したりすることができます。
Telegraf は、さまざまなシステム、データ ベース、IoT からメトリックを収集して送信することを目的としたサーバベースのエージェントです。Telegraf の接続先となるエンドポイントは、各 スーパーバイザー コンポーネントで公開されます。次に、Telegraf は収集されたメトリックを任意の可観測プラットフォームに送信します。スーパーバイザー メトリックは、可観測プラットフォームとして Telegraf がサポートする出力プラグインを構成することで集計、分析できます。サポートされている出力プラグインについては、Telegraf のドキュメントを参照してください。
Telegraf が接続してメトリックを収集するエンドポイントは、各種のコンポーネント、たとえば、Kubernetes API サーバ、etcd、kubelet、Kubernetes コントローラ マネージャ、Kubernetes スケジューラ、Tanzu Kubernetes Grid、仮想マシン サービス、仮想マシン イメージ サービス、NSX Container Plug-in (NCP)、コンテナ ストレージ インターフェイス (CSI)、証明書マネージャ、NSX、各種ホスト メトリック(CPU、メモリ、ストレージなど)によって公開されます。
Telegraf ポッドと構成の表示
Telegraf は、スーパーバイザー の vmware-system-monitoring システム名前空間で実行されます。Telegraf ポッドと ConfigMap を表示するには、次の手順を実行します。
- vCenter Single Sign-On 管理者アカウントで スーパーバイザー 制御プレーンにログインします。
kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
- 次のコマンドを使用して、Telegraf ポッドを表示します。
kubectl -n vmware-system-monitoring get pods
結果のポッドは次のとおりです。telegraf-csqsl telegraf-dkwtk telegraf-l4nxk
- 次のコマンドを使用して、Telegraf ConfigMaps を表示します。
kubectl -n vmware-system-monitoring get cm
結果の ConfigMap は次のとおりです。default-telegraf-config kube-rbac-proxy-config kube-root-ca.crt telegraf-config
default-telegraf-config
ConfigMap はデフォルトの Telegraf 構成を保持しており、読み取り専用です。ファイルが破損した場合、またはデフォルトにリストアする場合に備えて、telegraf-config
で構成をリストアするためのフォールバック オプションとして使用できます。編集できる ConfigMap はtelegraf-config
のみで、Telegraf エージェントに対して、どのコンポーネントから、どのプラットフォームにメトリックを送信するかを定義します。 telegraf-config
ConfigMap を表示します。kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
inputs
セクションで定義します。たとえば、次の入力では、Kubernetes API サーバをエンドポイントとして定義します。
[[inputs.prometheus]] # APIserver ## An array of urls to scrape metrics from. alias = "kube_apiserver_metrics" urls = ["https://127.0.0.1:6443/metrics"] bearer_token = "/run/secrets/kubernetes.io/serviceaccount/token" # Dropping metrics as a part of short term solution to vStats integration 1MB metrics payload limit # Dropped Metrics: # apiserver_request_duration_seconds namepass = ["apiserver_request_total", "apiserver_current_inflight_requests", "apiserver_current_inqueue_requests", "etcd_object_counts", "apiserver_admission_webhook_admission_duration_seconds", "etcd_request_duration_seconds"] # "apiserver_request_duration_seconds" has _massive_ cardinality, temporarily turned off. If histogram, maybe filter the highest ones? # Similarly, maybe filters to _only_ allow error code related metrics through? ## Optional TLS Config tls_ca = "/run/secrets/kubernetes.io/serviceaccount/ca.crt"
alias
プロパティは、収集されるメトリックの送信元コンポーネントを示します。namepass
プロパティは、どのコンポーネント メトリックが公開され、それぞれ Telegraf エージェントによって収集されるかを指定します。
telegraf-config ConfigMap にはさまざまなメトリックが最初から含まれていますが、別途メトリックを定義することもできます。「Metrics For Kubernetes System Components」および「Kubernetes Metrics Reference」を参照してください。
Telegraf への Observability プラットフォームの構成
telegraf-config
の outps
セクションで、Telegraf が収集したメトリックをストリーミングする場所を構成します。outputs.file
、outputs.wavefront
、outputs.prometheus_client
、outps-https
など、いくつかのオプションがあります。outps-https
セクションでは、スーパーバイザー メトリックの集約と監視に使用する可観測プラットフォームを構成できます。メトリックを複数のプラットフォームに送信するように Telegraf を構成できます。telegraf-config
ConfigMap を編集し、スーパーバイザー メトリックを表示するための可観測プラットフォームを構成するには、次の手順を実行します。
- vCenter Single Sign-On 管理者アカウントで スーパーバイザー 制御プレーンにログインします。
kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
telegraf-config
ConfigMap をローカル kubectl フォルダに保存します。kubectl get cm telegraf-config -n vmware-system-monitoring -o jsonpath="{.data['telegraf\.conf']}">telegraf.conf
以前のバージョンのファイルにリストアできるよう、
telegraf-config
ConfigMap は変更前にバージョン管理システムに保存しておいてください。デフォルトの構成にリストアする場合は、default-telegraf-config
ConfigMap の値を使用できます。- VIM などのテキスト エディタを使用して、選択した可観測プラットフォームの接続設定を含む
outputs.http
セクションを追加します。vim telegraf.config
次のセクションのコメントを直接解除して適宜、値を編集するか、または必要に応じて新しいoutputs.http
セクションを追加できます。#[[outputs.http]] # alias = "prometheus_http_output" # url = "<PROMETHEUS_ENDPOINT>" # insecure_skip_verify = <PROMETHEUS_SKIP_INSECURE_VERIFY> # data_format = "prometheusremotewrite" # username = "<PROMETHEUS_USERNAME>" # password = "<PROMETHEUS_PASSWORD>" # <DEFAULT_HEADERS>
たとえば、Grafana のoutputs.http
構成は次のようになります。[[outputs.http]] url = "http://<grafana-host>:<grafana-metrics-port>/<prom-metrics-push-path>" data_format = "influx" [outputs.http.headers] Authorization = "Bearer <grafana-bearer-token>"
ダッシュボードの構成と Telegraf からのメトリックの取り込みについて詳しくは、「Stream metrics from Telegraf to Grafana」を参照してください。
次に、VMware Aria Operations for Applications(旧 Wavefront)の例を示します。[[outputs.wavefront]] url = "http://<wavefront-proxy-host>:<wavefront-proxy-port>"
Aria Operations for Applications にメトリックを取り込む方法として推奨される方法は、プロキシを介して行う方法です。詳細については、「Wavefront Proxies」を参照してください。
- スーパーバイザー 上の既存の
telegraf-config
ファイルを、ローカル フォルダで編集したファイルに置き換えます。kubectl create cm --from-file telegraf.conf -n vmware-system-monitoring telegraf-config --dry-run=client -o yaml | kubectl replace -f -
- 新しい構成が正常に保存されているかどうかを確認します。
- 新しい telegraf-config ConfigMap を表示します。
kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
- すべての Telegraf ポッドが実行中であるかどうかを確認します。
kubectl -n vmware-system-monitoring get pods
- 実行されていない Telegraf ポッドがある場合は、そのポッドの Telegraf ログを確認してトラブルシューティングを行います。
kubectl -n vmware-system-monitoring logs <telegraf-pod>
- 新しい telegraf-config ConfigMap を表示します。
Operations for Applications ダッシュボードの例
以下のダッシュボードには、Telegraf を介して API サーバおよび etcd から受信した スーパーバイザー メトリックのサマリが表示されています。
緑色で示されているように、API サーバ書き込み要求時間のメトリックは、telegraf-config
ConfigMap に指定されたメトリックに基づきます。