|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
Kubernetes上でのOpenTelemetryの始め方
このガイドでは、アプリケーションの監視に関する手順を提供します。
-
クラスターAで実行されている監視対象のアプリケーション/ワークロード。
-
クラスターA内の監視対象アプリケーションの近くで実行されるOpenTelemetryコレクターが、データをSUSE® Observabilityに送信します。
-
クラスターBで実行されているSUSE® Observability、またはSUSE Cloud Observability。
OpenTelemetryコレクター
|
本番環境のセットアップでは、コレクターをインストールすることを強く推奨します。これにより、サービスがデータを迅速にオフロードでき、コレクターが再試行、バッチ処理、暗号化、さらには機密データのフィルタリングなどの追加処理を行うことができます。 |
クラスターAにOTel(OpenTelemetry)コレクターをインストールし、次のように設定します:
-
多くの計測されたアプリケーションからデータを受信します。
-
収集したデータにKubernetesの属性を付加します。
-
トレースのメトリクスを生成します。
-
APIキーを使用して認証を含むデータをSUSE® Observabilityに転送します。
| SUSE® Observabilityは接続に問題がある場合、データの送信を再試行します。 |
サービストークンを作成する
サービストークンを作成するには、次の2つの方法があります:
-
SUSE® Observability UI - 画面の左上をクリックしてメインメニューを開き、
StackPacks> `Open Telemetry`に移動します。 まだ行っていない場合は、`INSTALL`ボタンをクリックします。`CREATE NEW SERVICE TOKEN`ボタンをクリックし、値をクリップボードにコピーします。 -
SUSE® Observability CLI - サービストークンの管理を参照してください。
サービストークンの値は、以下の指示で <SERVICE_TOKEN> に言及されている場所で使用する必要があります。
サービストークンのためのネームスペースとシークレットを作成します。
`open-telemetry`ネームスペースにインストールし、サービストークンを使用します:
kubectl create namespace open-telemetry
kubectl create secret generic open-telemetry-collector \
--namespace open-telemetry \
--from-literal=API_KEY='<SERVICE_TOKEN>'
コレクターを設定してインストールします。
私たちは、Open Telemetry プロジェクトが提供する Helm チャートを使用してコレクターをインストールします。Open Telemetry Helm チャートリポジトリが設定されていることを確認してください:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
Helm チャート用の otel-collector.yaml 値ファイルを作成します。SUSE® Observability での使用に適した良い出発点はここです。<otlp-suse-observability-endpoint:port> をあなたの OTLP エンドポイントに置き換え(エンドポイントについては OTLP API を参照)、<your-cluster-name> の代わりに Kubernetes クラスターの名前を挿入してください:
# Set the API key from the secret as an env var:
extraEnvsFrom:
- secretRef:
name: open-telemetry-collector
mode: deployment
image:
# Use the collector container image that has all components important for k8s. In case of missing components the ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib image can be used which
# has all components in the contrib repository: https://github.com/open-telemetry/opentelemetry-collector-contrib
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
ports:
metrics:
enabled: true
presets:
kubernetesAttributes:
enabled: true
extractAllPodLabels: true
# This is the config file for the collector:
config:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
# Scrape the collectors own metrics
prometheus:
config:
scrape_configs:
- job_name: opentelemetry-collector
scrape_interval: 10s
static_configs:
- targets:
- ${env:MY_POD_IP}:8888
extensions:
# Use the API key from the env for authentication
bearertokenauth:
scheme: SUSEObservability
token: "${env:API_KEY}"
exporters:
nop: {}
otlp/suse-observability:
auth:
authenticator: bearertokenauth
# Put in your own otlp endpoint, for example otlp-suse-observability.my.company.com:443
endpoint: <otlp-suse-observability-endpoint:port>
compression: snappy
processors:
memory_limiter:
check_interval: 5s
limit_percentage: 80
spike_limit_percentage: 25
batch: {}
resource:
attributes:
- key: k8s.cluster.name
action: upsert
# Insert your own cluster name
value: <your-cluster-name>
- key: service.instance.id
from_attribute: k8s.pod.uid
action: insert
# Use the k8s namespace also as the open telemetry namespace
- key: service.namespace
from_attribute: k8s.namespace.name
action: insert
connectors:
# Generate metrics for spans
spanmetrics:
metrics_expiration: 5m
namespace: otel_span
service:
extensions: [ health_check, bearertokenauth ]
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, resource, batch]
exporters: [debug, spanmetrics, otlp/suse-observability]
metrics:
receivers: [otlp, spanmetrics, prometheus]
processors: [memory_limiter, resource, batch]
exporters: [debug, otlp/suse-observability]
logs:
receivers: [otlp]
processors: []
exporters: [nop]
telemetry:
metrics:
address: ${env:MY_POD_IP}:8888
|
SUSE® Observability エージェントのインストール時に使用したものと同じクラスター名を、Kubernetes スタックパックと SUSE® Observability エージェントを併用する場合にも使用してください。異なるクラスター名を使用すると、Kubernetes コンポーネントのトレースの視点が空になり、SUSE® Observability とあなたのユーザーにとって情報を相関させることが非常に難しくなります。 |
設定ファイルを使ってコレクターをインストールします。
helm upgrade --install opentelemetry-collector open-telemetry/opentelemetry-collector \
--values otel-collector.yaml \
--namespace open-telemetry
結果を表示します。
SUSE® Observability に移動し、Open Telemetry スタックパックがインストールされていることを確認してください(メインメニュー -> スタックパック経由)。
ポッドにトラフィックがある場合は、Open Telemetry のサービスおよびサービスインスタンスの概要で、サービス名の下にそれらを見つけることができるはずです。トレースは、サービスおよびサービスインスタンスのコンポーネントの トレースエクスプローラー および トレースの視点 に表示されます。スパンメトリクスおよび言語特有のメトリクス(利用可能な場合)は、コンポーネントの メトリクスの視点 で利用可能になります。
Kubernetes スタックパックがインストールされている場合、計測されたポッドも トレースの視点 でトレースを利用できるようになります。
Rancher RBAC
Rancher RBACが機能するためには、テレメトリデータに以下のリソース属性が含まれている必要があります:
-
k8s.cluster.name- Kubernetesスタックパックで使用される*クラスター名* -
k8s.namespace.name- Rancher の プロジェクト によって管理される ネームスペース
これは、上記のような設定によって達成できます。 ここで、kubernetesAttributes の opentelemetry-collector Helm チャートのプリセットが各パイプラインに k8sattributes プロセッサを注入します。