[ja] add translation of platforms/kubernetes (#6586)
This commit is contained in:
parent
25dc8c49cf
commit
18d1f9811b
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
title: KubernetesとOpenTelemetry
|
||||
linkTitle: Kubernetes
|
||||
redirects: [{ from: /docs/kubernetes/*, to: ':splat' }]
|
||||
default_lang_commit: 0cdf20f0dcbf7305541f8eab3001c95ce805fbc0
|
||||
---
|
||||
|
||||
[Kubernetes](https://kubernetes.io/)は、コンテナ化されたアプリケーションの自動デプロイ、スケーリング、管理のためのオープンソースシステムです。
|
||||
Kubernetesは広く採用され、業界で普及したツールとなっており、オブザーバビリティツールの必要性が高まっています。
|
||||
これを受けて、OpenTelemetryはKubernetesユーザーがクラスターやサービスを観測するのを支援するさまざまなツールを作成しました。
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: OpenTelemetryコレクターとKubernetes
|
||||
linkTitle: Collector
|
||||
default_lang_commit: e8f18928513b726068be250802ebe7ece25e8851
|
||||
---
|
||||
|
||||
[OpenTelemetry Collector](/docs/collector/) は、テレメトリーデータを受信、処理、エクスポートするためのベンダーにとらわれない方法です。
|
||||
コレクターはさまざまな場所で使用できますが、このドキュメントではKubernetesとKubernetes上で動作するサービスを監視するためにコレクターを使用する方法に焦点を当てます。
|
||||
設定やトラブルシューティングなど、より一般的なコレクターのドキュメントについては、[コレクター](/docs/collector/)を参照してください。
|
|
@ -0,0 +1,655 @@
|
|||
---
|
||||
title: Kubernetesのための重要なコンポーネント
|
||||
linkTitle: コンポーネント
|
||||
default_lang_commit: e8f18928513b726068be250802ebe7ece25e8851
|
||||
# prettier-ignore
|
||||
cSpell:ignore: alertmanagers filelog horizontalpodautoscalers hostfs hostmetrics k8sattributes kubelet kubeletstats replicasets replicationcontrollers resourcequotas statefulsets varlibdockercontainers varlogpods
|
||||
---
|
||||
|
||||
[OpenTelemetry Collector](/docs/collector/)は、Kubernetesの監視を容易にするために、多くの異なるレシーバーとプロセッサーをサポートしています。
|
||||
このセクションでは、Kubernetesのデータを収集し、それを拡張するためにもっとも重要なコンポーネントを取り上げます。
|
||||
|
||||
このページで取り上げているコンポーネントは以下の通りです。
|
||||
|
||||
- [Kubernetes属性プロセッサー](#kubernetes-attributes-processor): 受信するアプリケーションのテレメトリーにKubernetesメタデータを追加します。
|
||||
- [Kubeletstatsレシーバー](#kubeletstats-receiver): Kubelet上のAPIサーバーからノード、ポッド、コンテナのメトリクスを取得します。
|
||||
- [ファイルログレシーバー](#filelog-receiver): 標準出力/標準エラーに書き込まれたKubernetesログとアプリケーションログを収集します。
|
||||
- [Kubernetesクラスターレシーバー](#kubernetes-cluster-receiver): クラスタレベルのメトリクスとエンティティイベントを収集します。
|
||||
- [Kubernetesオブジェクトレシーバー](#kubernetes-objects-receiver): Kubernetes APIサーバーからイベントなどのオブジェクトを収集します。
|
||||
- [Prometheusレシーバー](#prometheus-receiver): [Prometheus](https://prometheus.io/)フォーマットのメトリクスを受信します。
|
||||
- [ホストメトリクスレシーバー](#host-metrics-receiver): Kubernetesノードからホストメトリクスをスクレイピングします。
|
||||
|
||||
アプリケーションのトレース、メトリクス、またはログの場合は、[OTLPレシーバー](https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver) をおすすめしますが、データに合ったレシーバーであれば何でも構いません。
|
||||
|
||||
## Kubernetes属性プロセッサー (Kubernetes Attributes Processor) {#kubernetes-attributes-processor}
|
||||
|
||||
| デプロイメントパターン | 利用可能 |
|
||||
| --------------------------- | -------- |
|
||||
| DaemonSet (エージェント) | Yes |
|
||||
| Deployment (ゲートウェイ) | Yes |
|
||||
| サイドカー | No |
|
||||
|
||||
Kubernetes属性プロセッサーは、Kubernetesポッドを自動的に検出し、そのメタデータを抽出し、抽出したメタデータをリソース属性としてスパン、メトリクス、ログに追加します。
|
||||
|
||||
**Kubernetes属性プロセッサーは、Kubernetesで動作するコレクターにとってもっとも重要なコンポーネントの1つです。アプリケーションデータを受信するコレクターは、これを使用すべきです。**
|
||||
Kubernetes属性プロセッサーはテレメトリーにKubernetesのコンテキストを追加するため、アプリケーションのトレース、メトリクス、ログのシグナルをポッドのメトリクスやトレースなどのKubernetesテレメトリーと関連付けることができます。
|
||||
|
||||
Kubernetes属性プロセッサーは、Kubernetes APIを使用してクラスタ内で実行されているすべてのポッドを検出し、それらのIPアドレス、ポッドのUID、および興味深いメタデータの記録を保持します。
|
||||
デフォルトでは、プロセッサーを通過するデータは、受信リクエストのIPアドレスを介してポッドに関連付けられますが、異なるルールを設定することもできます。
|
||||
プロセッサーはKubernetes APIを使用するため、特別なパーミッションが必要です(以下の例を参照)。 [OpenTelemetryコレクターHelmチャート](../../helm/collector/) を使っている場合は、[`kubernetesAttributes` preset](../../helm/collector/#kubernetes-attributes-preset) を使って開始できます。
|
||||
|
||||
デフォルトでは以下の属性が追加されます。
|
||||
|
||||
- `k8s.namespace.name`
|
||||
- `k8s.pod.name`
|
||||
- `k8s.pod.uid`
|
||||
- `k8s.pod.start_time`
|
||||
- `k8s.deployment.name`
|
||||
- `k8s.node.name`
|
||||
|
||||
Kubernetes属性プロセッサーは、ポッドと名前空間に追加したKubernetesラベルとKubernetesアノテーションを使用して、トレース、メトリクス、ログのカスタムリソース属性を設定することもできます。
|
||||
|
||||
```yaml
|
||||
k8sattributes:
|
||||
auth_type: 'serviceAccount'
|
||||
extract:
|
||||
metadata: # ポッドから抽出
|
||||
- k8s.namespace.name
|
||||
- k8s.pod.name
|
||||
- k8s.pod.start_time
|
||||
- k8s.pod.uid
|
||||
- k8s.deployment.name
|
||||
- k8s.node.name
|
||||
annotations:
|
||||
# キー `annotation-one` を持つポッドアノテーションの値を取り出し、キー `a1` を持つリソース属性として挿入します。
|
||||
- tag_name: a1
|
||||
key: annotation-one
|
||||
from: pod
|
||||
# キー `annotation-two` を持つ名前空間アノテーションの値を正規表現で抽出し、キー `a2` を持つリソースに挿入します。
|
||||
- tag_name: a2
|
||||
key: annotation-two
|
||||
regex: field=(?P<value>.+)
|
||||
from: namespace
|
||||
labels:
|
||||
# キー `label1` を持つ名前空間ラベルの値を取り出し、キー `l1` を持つリソース属性として挿入します。
|
||||
- tag_name: l1
|
||||
key: label1
|
||||
from: namespace
|
||||
# キー `label2` を持つポッドラベルの値を正規表現で抽出し、キー `l2` を持つリソース属性として挿入します。
|
||||
- tag_name: l2
|
||||
key: label2
|
||||
regex: field=(?P<value>.+)
|
||||
from: pod
|
||||
pod_association: # データをポッドに関連付ける方法(順序が重要)
|
||||
- sources: # まず、リソース属性k8s.pod.ipの値を使用してみます。
|
||||
- from: resource_attribute
|
||||
name: k8s.pod.ip
|
||||
- sources: # 次に、リソース属性k8s.pod.uidの値を使用してみます。
|
||||
- from: resource_attribute
|
||||
name: k8s.pod.uid
|
||||
- sources: # どちらもうまくいかない場合は、リクエストのコネクションを使ってポッドのIPを取得します。
|
||||
- from: connection
|
||||
```
|
||||
|
||||
コレクターが Kubernetes DaemonSet (エージェント) または Kubernetes Deployment (ゲートウェイ) としてデプロイされる場合の特別な設定オプションもあります。
|
||||
詳細は[デプロイメントシナリオ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/k8sattributesprocessor#deployment-scenarios)を参照してください。
|
||||
|
||||
Kubernetes属性プロセッサーの設定の詳細については、[Kubernetes Attributes Processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/k8sattributesprocessor)を参照してください。
|
||||
|
||||
プロセッサーはKubernetes APIを使用するため、正しく動作するには適切なパーミッションが必要です。
|
||||
ほとんどのユースケースでは、コレクターを実行するサービスアカウントにClusterRoleを介して以下の権限を与える必要があります。
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: collector
|
||||
namespace: <OTEL_COL_NAMESPACE>
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: otel-collector
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ''
|
||||
resources:
|
||||
- 'pods'
|
||||
- 'namespaces'
|
||||
verbs:
|
||||
- 'get'
|
||||
- 'watch'
|
||||
- 'list'
|
||||
- apiGroups:
|
||||
- 'apps'
|
||||
resources:
|
||||
- 'replicasets'
|
||||
verbs:
|
||||
- 'get'
|
||||
- 'list'
|
||||
- 'watch'
|
||||
- apiGroups:
|
||||
- 'extensions'
|
||||
resources:
|
||||
- 'replicasets'
|
||||
verbs:
|
||||
- 'get'
|
||||
- 'list'
|
||||
- 'watch'
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: otel-collector
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: collector
|
||||
namespace: <OTEL_COL_NAMESPACE>
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: otel-collector
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
```
|
||||
|
||||
## Kubeletstatsレシーバー (Kubeletstats Receiver) {#kubeletstats-receiver}
|
||||
|
||||
| デプロイメントパターン | 利用可能 |
|
||||
| --------------------------- | ------------------------------------------------------------ |
|
||||
| DaemonSet (エージェント) | 推奨 |
|
||||
| Deployment (ゲートウェイ) | Yes ただし、デプロイされたノードからのみメトリクスを収集する |
|
||||
| サイドカー | No |
|
||||
|
||||
各Kubernetesノードは、APIサーバーを含むkubeletを実行します。
|
||||
KubeletstatsレシーバーはAPIサーバーを介してそのkubeletに接続し、ノードとノード上で実行されているワークロードに関するメトリクスを収集します。
|
||||
|
||||
認証にはさまざまな方法がありますが、通常はサービスアカウントが使用されます。
|
||||
サービスアカウントは、Kubeletからデータをプルするための適切なパーミッションも必要となります(下記参照)。
|
||||
[OpenTelemetryコレクターHelmチャート](../../helm/collector/) を使用している場合は、[`kubeletMetrics` preset](../../helm/collector/#kubelet-metrics-preset) を使用して開始できます。
|
||||
|
||||
デフォルトでは、メトリクスはポッドとノードに対して収集されますが、コンテナとボリュームのメトリクスも収集するようにレシーバーを設定できます。
|
||||
レシーバーでは、メトリクスを収集する頻度も設定できます。
|
||||
|
||||
```yaml
|
||||
receivers:
|
||||
kubeletstats:
|
||||
collection_interval: 10s
|
||||
auth_type: 'serviceAccount'
|
||||
endpoint: '${env:K8S_NODE_NAME}:10250'
|
||||
insecure_skip_verify: true
|
||||
metric_groups:
|
||||
- node
|
||||
- pod
|
||||
- container
|
||||
```
|
||||
|
||||
収集されるメトリクスの具体的な詳細については、[デフォルトメトリクス](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/kubeletstatsreceiver/documentation.md)を参照してください。
|
||||
具体的な設定の詳細については、[Kubeletstatsレシーバーのドキュメント](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/kubeletstatsreceiver)を参照してください。
|
||||
|
||||
プロセッサーはKubernetes APIを使用するため、正しく動作するには適切なパーミッションが必要です。
|
||||
ほとんどのユースケースでは、コレクターを実行しているサービスアカウントにClusterRoleを介して以下の権限を与える必要があります。
|
||||
|
||||
```yaml
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: otel-collector
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: otel-collector
|
||||
rules:
|
||||
- apiGroups: ['']
|
||||
resources: ['nodes/stats']
|
||||
verbs: ['get', 'watch', 'list']
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: otel-collector
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: otel-collector
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: otel-collector
|
||||
namespace: default
|
||||
```
|
||||
|
||||
## ファイルログレシーバー (Filelog Receiver) {#filelog-receiver}
|
||||
|
||||
| デプロイメントパターン | 利用可能 |
|
||||
| --------------------------- | ---------------------------------------------------------------------- |
|
||||
| DaemonSet (エージェント) | 推奨 |
|
||||
| Deployment (ゲートウェイ) | Yes ただし、ログを収集するのは、それがデプロイされているノードからのみ |
|
||||
| サイドカー | Yes しかし、これは高度な設定とみなされるでしょう |
|
||||
|
||||
ファイルログレシーバーは、ファイルからのログをテイルし、解析します。
|
||||
Kubernetesに特化したレシーバーではないですが、Kubernetesからあらゆるログを収集するための事実上のソリューションであることに変わりありません。
|
||||
|
||||
ファイルログレシーバーは、ログを処理するために連結されるオペレーターで構成されます。
|
||||
各オペレーターは、タイムスタンプやJSONの解析など、単純な責任を実行します。
|
||||
ファイルログレシーバーの設定は簡単ではありません。
|
||||
[OpenTelemetryコレクターHelmチャート](../../helm/collector/) を使っている場合は、[`logsCollection` preset](../../helm/collector/#logs-collection-preset) を使って開始できます。
|
||||
|
||||
Kubernetesのログは通常、一連の標準フォーマットに適合するため、Kubernetes用の典型的なFilelogレシーバー設定は次のようになります。
|
||||
|
||||
```yaml
|
||||
filelog:
|
||||
include:
|
||||
- /var/log/pods/*/*/*.log
|
||||
exclude:
|
||||
# Exclude logs from all containers named otel-collector
|
||||
- /var/log/pods/*/otel-collector/*.log
|
||||
start_at: end
|
||||
include_file_path: true
|
||||
include_file_name: false
|
||||
operators:
|
||||
# parse container logs
|
||||
- type: container
|
||||
id: container-parser
|
||||
```
|
||||
|
||||
ファイルログレシーバーの設定の詳細については、[ファイルログレシーバーのドキュメント](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/filelogreceiver)を参照してください。
|
||||
|
||||
Filelog Receiverの設定に加えて、KubernetesにインストールしたOpenTelemetryコレクターは、収集したいログにアクセスする必要があります。
|
||||
通常、これはコレクターマニフェストにボリュームとボリュームマウントを追加することを意味します。
|
||||
|
||||
```yaml
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
...
|
||||
spec:
|
||||
...
|
||||
template:
|
||||
...
|
||||
spec:
|
||||
...
|
||||
containers:
|
||||
- name: opentelemetry-collector
|
||||
...
|
||||
volumeMounts:
|
||||
...
|
||||
# ボリュームをコレクターコンテナにマウントする
|
||||
- name: varlogpods
|
||||
mountPath: /var/log/pods
|
||||
readOnly: true
|
||||
- name: varlibdockercontainers
|
||||
mountPath: /var/lib/docker/containers
|
||||
readOnly: true
|
||||
...
|
||||
volumes:
|
||||
...
|
||||
# 通常、コレクターはポッドログとコンテナログにアクセスしたいでしょう
|
||||
- name: varlogpods
|
||||
hostPath:
|
||||
path: /var/log/pods
|
||||
- name: varlibdockercontainers
|
||||
hostPath:
|
||||
path: /var/lib/docker/containers
|
||||
...
|
||||
```
|
||||
|
||||
## Kubernetesクラスターレシーバー (Kubernetes Cluster Receiver) {#kubernetes-cluster-receiver}
|
||||
|
||||
| デプロイメントパターン | 利用可能 |
|
||||
| --------------------------- | ----------------------------------------------------------- |
|
||||
| DaemonSet (エージェント) | Yes しかし、データが重複する |
|
||||
| Deployment (ゲートウェイ) | Yes しかし、2つ以上のレプリカを使用すると、データが重複する |
|
||||
| サイドカー | No |
|
||||
|
||||
Kubernetesクラスターレシーバーは、Kubernetes APIサーバーを使用してクラスタ全体に関するメトリクスとエンティティイベントを収集します。
|
||||
ポッドのフェーズ、ノードの状態、およびその他のクラスタ全体の疑問に答えるためには、このレシーバーを使用します。
|
||||
レシーバーはクラスタ全体のテレメトリーを収集するので、すべてのデータを収集するためにクラスタ全体で必要なレシーバーのインスタンスは1つだけです。
|
||||
|
||||
認証にはさまざまな方法がありますが、通常はサービスアカウントが使われます。
|
||||
サービスアカウントには、Kubernetes API サーバーからデータを引き出すための適切なパーミッションも必要です(下記参照)。
|
||||
[OpenTelemetryコレクターHelmチャート](../../helm/collector/) を使っている場合は、[`clusterMetrics` preset](../../helm/collector/#cluster-metrics-preset) を使って開始できます。
|
||||
|
||||
ノードの状態については、デフォルトでは `Ready` のみを収集しますが、それ以上を収集するように設定することもできます。
|
||||
また、`cpu` や `memory` などの割り当て可能なリソースを報告するように設定することも可能です。
|
||||
|
||||
```yaml
|
||||
k8s_cluster:
|
||||
auth_type: serviceAccount
|
||||
node_conditions_to_report:
|
||||
- Ready
|
||||
- MemoryPressure
|
||||
allocatable_types_to_report:
|
||||
- cpu
|
||||
- memory
|
||||
```
|
||||
|
||||
収集されるメトリクスの詳細については、[デフォルトメトリクス](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/k8sclusterreceiver/documentation.md) を参照してください。
|
||||
設定の詳細については、[Kubernetesクラスターレシーバーのドキュメント](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sclusterreceiver)を参照してください。
|
||||
|
||||
プロセッサーはKubernetes APIを使用するため、正しく動作するには適切なパーミッションが必要です。
|
||||
ほとんどのユースケースでは、コレクターを実行しているサービスアカウントにClusterRoleを介して以下の権限を与える必要があります。
|
||||
|
||||
```yaml
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: otel-collector-opentelemetry-collector
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: otel-collector-opentelemetry-collector
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ''
|
||||
resources:
|
||||
- events
|
||||
- namespaces
|
||||
- namespaces/status
|
||||
- nodes
|
||||
- nodes/spec
|
||||
- pods
|
||||
- pods/status
|
||||
- replicationcontrollers
|
||||
- replicationcontrollers/status
|
||||
- resourcequotas
|
||||
- services
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- daemonsets
|
||||
- deployments
|
||||
- replicasets
|
||||
- statefulsets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- extensions
|
||||
resources:
|
||||
- daemonsets
|
||||
- deployments
|
||||
- replicasets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- batch
|
||||
resources:
|
||||
- jobs
|
||||
- cronjobs
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- autoscaling
|
||||
resources:
|
||||
- horizontalpodautoscalers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: otel-collector-opentelemetry-collector
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: otel-collector-opentelemetry-collector
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: otel-collector-opentelemetry-collector
|
||||
namespace: default
|
||||
```
|
||||
|
||||
## Kubernetesオブジェクトレシーバー (Kubernetes Objects Receiver) {#kubernetes-objects-receiver}
|
||||
|
||||
| デプロイメントパターン | 利用可能 |
|
||||
| --------------------------- | ----------------------------------------------------------- |
|
||||
| DaemonSet (エージェント) | Yes しかし、データが重複する |
|
||||
| Deployment (ゲートウェイ) | Yes しかし、2つ以上のレプリカを使用すると、データが重複する |
|
||||
| サイドカー | No |
|
||||
|
||||
Kubernetesオブジェクトレシーバーは、Kubernetes APIサーバからオブジェクトをプルまたはウォッチして収集します。
|
||||
このレシーバーのもっとも一般的な使用例はKubernetesイベントの監視ですが、あらゆるタイプのKubernetesオブジェクトを収集するために使用できます。
|
||||
レシーバーはクラスタ全体のテレメトリーを収集するため、すべてのデータを収集するためにはクラスタ全体で1つのインスタンスしか必要ありません。
|
||||
|
||||
現在、認証に使用できるのはサービスアカウントのみです。
|
||||
サービスアカウントはまた、Kubernetes API サーバーからデータを取り込むために適切なパーミッションが必要です(下記参照)。
|
||||
[OpenTelemetryコレクターHelmチャート](../../helm/collector/) を使用していて、イベントを取り込みたい場合は、[`kubernetesEvents` preset](../../helm/collector/#cluster-metrics-preset) を使用して開始できます。
|
||||
|
||||
プル用に設定されたオブジェクトについては、レシーバーはKubernetes APIを使用して、クラスタ内のすべてのオブジェクトを定期的にリストします。
|
||||
各オブジェクトは独自のログに変換されます。
|
||||
監視用に設定されたオブジェクトの場合、レシーバーはKubernetes APIでストリームを作成し、オブジェクトが変更されると更新を受け取ります。
|
||||
|
||||
クラスタで実行可能なオブジェクトを確認するには `kubectl api-resources` を実行します。
|
||||
|
||||
<!-- cspell:disable -->
|
||||
|
||||
```console
|
||||
kubectl api-resources
|
||||
NAME SHORTNAMES APIVERSION NAMESPACED KIND
|
||||
bindings v1 true Binding
|
||||
componentstatuses cs v1 false ComponentStatus
|
||||
configmaps cm v1 true ConfigMap
|
||||
endpoints ep v1 true Endpoints
|
||||
events ev v1 true Event
|
||||
limitranges limits v1 true LimitRange
|
||||
namespaces ns v1 false Namespace
|
||||
nodes no v1 false Node
|
||||
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
|
||||
persistentvolumes pv v1 false PersistentVolume
|
||||
pods po v1 true Pod
|
||||
podtemplates v1 true PodTemplate
|
||||
replicationcontrollers rc v1 true ReplicationController
|
||||
resourcequotas quota v1 true ResourceQuota
|
||||
secrets v1 true Secret
|
||||
serviceaccounts sa v1 true ServiceAccount
|
||||
services svc v1 true Service
|
||||
mutatingwebhookconfigurations admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration
|
||||
validatingwebhookconfigurations admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration
|
||||
customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition
|
||||
apiservices apiregistration.k8s.io/v1 false APIService
|
||||
controllerrevisions apps/v1 true ControllerRevision
|
||||
daemonsets ds apps/v1 true DaemonSet
|
||||
deployments deploy apps/v1 true Deployment
|
||||
replicasets rs apps/v1 true ReplicaSet
|
||||
statefulsets sts apps/v1 true StatefulSet
|
||||
tokenreviews authentication.k8s.io/v1 false TokenReview
|
||||
localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview
|
||||
selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview
|
||||
selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview
|
||||
subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview
|
||||
horizontalpodautoscalers hpa autoscaling/v2 true HorizontalPodAutoscaler
|
||||
cronjobs cj batch/v1 true CronJob
|
||||
jobs batch/v1 true Job
|
||||
certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest
|
||||
leases coordination.k8s.io/v1 true Lease
|
||||
endpointslices discovery.k8s.io/v1 true EndpointSlice
|
||||
events ev events.k8s.io/v1 true Event
|
||||
flowschemas flowcontrol.apiserver.k8s.io/v1beta2 false FlowSchema
|
||||
prioritylevelconfigurations flowcontrol.apiserver.k8s.io/v1beta2 false PriorityLevelConfiguration
|
||||
ingressclasses networking.k8s.io/v1 false IngressClass
|
||||
ingresses ing networking.k8s.io/v1 true Ingress
|
||||
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy
|
||||
runtimeclasses node.k8s.io/v1 false RuntimeClass
|
||||
poddisruptionbudgets pdb policy/v1 true PodDisruptionBudget
|
||||
clusterrolebindings rbac.authorization.k8s.io/v1 false ClusterRoleBinding
|
||||
clusterroles rbac.authorization.k8s.io/v1 false ClusterRole
|
||||
rolebindings rbac.authorization.k8s.io/v1 true RoleBinding
|
||||
roles rbac.authorization.k8s.io/v1 true Role
|
||||
priorityclasses pc scheduling.k8s.io/v1 false PriorityClass
|
||||
csidrivers storage.k8s.io/v1 false CSIDriver
|
||||
csinodes storage.k8s.io/v1 false CSINode
|
||||
csistoragecapacities storage.k8s.io/v1 true CSIStorageCapacity
|
||||
storageclasses sc storage.k8s.io/v1 false StorageClass
|
||||
volumeattachments storage.k8s.io/v1 false VolumeAttachment
|
||||
```
|
||||
|
||||
<!-- cspell:enable -->
|
||||
|
||||
具体的な設定の詳細については、[Kubernetesオブジェクトレシーバーのドキュメント](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sobjectsreceiver)を参照してください。
|
||||
|
||||
プロセッサーはKubernetes APIを使用するため、正しく動作するには適切なパーミッションが必要です。
|
||||
サービスアカウントが唯一の認証オプションなので、サービスアカウントに適切なアクセス権を与える必要があります。
|
||||
収集したいオブジェクトについては、その名前がクラスターロールに追加されていることを確認する必要があります。
|
||||
たとえば、ポッドを収集したい場合、クラスターロールは次のようになります。
|
||||
|
||||
```yaml
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: otel-collector-opentelemetry-collector
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: otel-collector-opentelemetry-collector
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ''
|
||||
resources:
|
||||
- pods
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: otel-collector-opentelemetry-collector
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: otel-collector-opentelemetry-collector
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: otel-collector-opentelemetry-collector
|
||||
namespace: default
|
||||
```
|
||||
|
||||
## Prometheusレシーバー {#prometheus-receiver}
|
||||
|
||||
| デプロイメントパターン | 利用可能 |
|
||||
| --------------------------- | -------- |
|
||||
| DaemonSet (エージェント) | Yes |
|
||||
| Deployment (ゲートウェイ) | Yes |
|
||||
| サイドカー | No |
|
||||
|
||||
Prometheusは、KubernetesとKubernetes上で動作するサービスの両方に共通のメトリクスフォーマットです。
|
||||
Prometheusレシーバーは、これらのメトリクスを収集するためにすぐに利用できる最小限の置き換えです。
|
||||
Prometheus [`scrape_config` オプション](https://prometheus.io/docs/prometheus/1.8/configuration/configuration/#scrape_config) のフルセットをサポートしています。
|
||||
|
||||
レシーバーがサポートしていない Prometheus の高度な機能がいくつかあります。
|
||||
設定 YAML/コードに以下のいずれかが含まれている場合、レシーバーはエラーを返します。
|
||||
|
||||
- `alert_config.alertmanagers`
|
||||
- `alert_config.relabel_configs`
|
||||
- `remote_read`
|
||||
- `remote_write`
|
||||
- `rule_files`
|
||||
|
||||
具体的な設定の詳細については、[Prometheusレシーバーのドキュメント](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/prometheusreceiver)を参照してください。
|
||||
|
||||
Prometheusのレシーバーは[ステートフル](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#statefulness)であり、使用する際に考慮すべき重要な点があります。
|
||||
|
||||
- コレクターの複数のレプリカを実行すると、コレクターはスクレイピングプロセスを自動スケールできません。
|
||||
- コレクターの複数のレプリカを同じ設定で実行すると、ターゲットを複数回スクレイピングします。
|
||||
- 手動でスクレイピングプロセスをシャーディングしたい場合、ユーザーは各レプリカを異なるスクレイピング構成で構成する必要があります。
|
||||
|
||||
Prometheus レシーバーの設定を簡単にするために、OpenTelemetryオペレーターには [ターゲットアロケーター](../../operator/target-allocator) というオプションのコンポーネントがあります。
|
||||
このコンポーネントを使用して、どの Prometheus エンドポイントをスクレイピングすべきかをコレクターに指示できます。
|
||||
|
||||
レシーバーの設計については、[設計](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/DESIGN.md)を参照のこと。
|
||||
|
||||
## ホストメトリクスレシーバー (Host Metrics Receiver) {#host-metrics-receiver}
|
||||
|
||||
| デプロイメントパターン | 利用可能 |
|
||||
| --------------------------- | ------------------------------------------------------------ |
|
||||
| DaemonSet (エージェント) | 推奨 |
|
||||
| Deployment (ゲートウェイ) | Yes ただし、デプロイされたノードからのみメトリクスを収集する |
|
||||
| サイドカー | No |
|
||||
|
||||
ホストメトリクスレシーバーは、さまざまなスクレイパーを使用してホストからメトリクスを収集します。
|
||||
[Kubeletstatsレシーバー](#kubeletstats-receiver)と重複する部分があるので、両方を使うことにした場合は、これらの重複するメトリクスを無効にしたほうがいいかもしれません。
|
||||
|
||||
Kubernetes では、レシーバーが正しく動作するためには `hostfs` ボリュームにアクセスする必要があります。
|
||||
[OpenTelemetryコレクターHelmチャート](../../helm/collector/) を使っている場合は、[`hostMetrics` preset](../../helm/collector/#host-metrics-preset) を使って開始できます。
|
||||
|
||||
使用可能なスクレーパーは以下の通りです。
|
||||
|
||||
| スクレーパー | サポートされているOS | 説明 |
|
||||
| ------------ | --------------------- | ---------------------------------------------------------------- |
|
||||
| cpu | All except macOS[^1] | CPU使用率のメトリクス |
|
||||
| disk | All except macOS[^1] | ディスクI/Oのメトリクス |
|
||||
| load | All | CPU負荷のメトリクス |
|
||||
| filesystem | All | ファイルシステム使用量のメトリクス |
|
||||
| memory | All | メモリ使用量のメトリクス |
|
||||
| network | All | ネットワークインターフェースI/OのメトリクスとTCP接続のメトリクス |
|
||||
| paging | All | ページ空間/スワップ空間の使用量とI/Oのメトリクス |
|
||||
| processes | Linux, macOS | プロセス数のメトリクス |
|
||||
| process | Linux, macOS, Windows | プロセス毎のCPU、Memory、ディスクI/Oのメトリクス |
|
||||
|
||||
[^1]: Collector SIGがリリースしたイメージのデフォルトであるcgoなしでコンパイルした場合、macOSではサポートされません。
|
||||
|
||||
どのメトリクスが収集されるか、および具体的な構成の詳細については、[ホストメトリクスレシーバーのドキュメント](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver)を参照してください。
|
||||
|
||||
コンポーネントを自分で構成する必要がある場合、コンテナではなくノードのメトリクスを収集したい場合は、必ず `hostfs` ボリュームをマウントしてください。
|
||||
|
||||
```yaml
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
...
|
||||
spec:
|
||||
...
|
||||
template:
|
||||
...
|
||||
spec:
|
||||
...
|
||||
containers:
|
||||
- name: opentelemetry-collector
|
||||
...
|
||||
volumeMounts:
|
||||
...
|
||||
- name: hostfs
|
||||
mountPath: /hostfs
|
||||
readOnly: true
|
||||
mountPropagation: HostToContainer
|
||||
volumes:
|
||||
...
|
||||
- name: hostfs
|
||||
hostPath:
|
||||
path: /
|
||||
...
|
||||
```
|
||||
|
||||
そして `volumeMount` を使用するようにホストメトリクスレシーバーを設定します。
|
||||
|
||||
```yaml
|
||||
receivers:
|
||||
hostmetrics:
|
||||
root_path: /hostfs
|
||||
collection_interval: 10s
|
||||
scrapers:
|
||||
cpu:
|
||||
load:
|
||||
memory:
|
||||
disk:
|
||||
filesystem:
|
||||
network:
|
||||
```
|
||||
|
||||
レシーバーをコンテナ内で使用する方法の詳細については、[コンテナ内からホストメトリクスを収集する(Linuxのみ)](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver#collecting-host-metrics-from-inside-a-container-linux-only)を参照してください。
|
|
@ -0,0 +1,218 @@
|
|||
---
|
||||
title: はじめに
|
||||
weight: 1
|
||||
default_lang_commit: 0cdf20f0dcbf7305541f8eab3001c95ce805fbc0
|
||||
# prettier-ignore
|
||||
cSpell:ignore: filelog kubelet kubeletstats kubeletstatsreceiver loggingexporter otlpexporter sattributes sattributesprocessor sclusterreceiver sobjectsreceiver
|
||||
---
|
||||
|
||||
このページでは、OpenTelemetry を使って Kubernetes クラスターの監視を始める最速の方法を説明します。
|
||||
Kubernetesクラスター、ノード、ポッド、コンテナのメトリクスとログの収集、そしてクラスタがOTLPデータを出力するサービスをサポートできるようにすることに焦点を当てます。
|
||||
|
||||
Kubernetes で OpenTelemetry が動いているところを見たいのであれば、[OpenTelemetryデモ](/docs/demo/kubernetes-deployment/) から始めるのがベストです。
|
||||
このデモは OpenTelemetry の実装を説明するためのものですが、Kubernetes 自体を監視する方法の例ではありません。
|
||||
このウォークスルーを終えたら、デモをインストールして、すべての監視がアクティブなワークロードにどのように反応するかを見るのは楽しい実験になるでしょう。
|
||||
|
||||
PrometheusからOpenTelemetryへの移行を始めようとしている場合、あるいはOpenTelemetryコレクターを使ってPrometheusメトリクスを収集することに興味がある場合は、[Prometheusレシーバーa](../collector/components/#prometheus-receiver) を参照してください。
|
||||
|
||||
## 概要 {#overview}
|
||||
|
||||
Kubernetesは多くの重要なテレメトリーをさまざまな方法で公開しています。
|
||||
ログ、イベント、多くの異なるオブジェクトのメトリクス、そしてワークロードによって生成されたデータがあります。
|
||||
|
||||
このすべてのデータを収集するために、[OpenTelemetryコレクター](/docs/collector/) を使用します。
|
||||
コレクターは、このデータを効率的に収集し、意味のある方法で強化できる、自由に使えるさまざまなツールを備えています。
|
||||
|
||||
すべてのデータを収集するには、コレクターを2つの方法でインストールする必要があります。
|
||||
1つは[デーモンセット](/docs/collector/deployment/agent/)として、もう1つは[デプロイメント](/docs/collector/deployment/gateway/)としてです。
|
||||
コレクターのデーモンセットインストールは、ノード、ポッド、コンテナのサービス、ログ、メトリクスが発するテレメトリーを収集するために使用されます。
|
||||
コレクターのデプロイメントインストールは、クラスタのメトリクスとイベントの収集に使用されます。
|
||||
|
||||
コレクターをインストールするには、[OpenTelemetry Collector Helm チャート](../helm/collector/) を使用します。
|
||||
Helm には、コレクターを簡単に設定するためのいくつかの設定オプションが付属しています。
|
||||
Helm に慣れていない場合は、[Helm プロジェクトサイト](https://helm.sh/) を確認してください。
|
||||
Kubernetes オペレーターを使うことに興味があるなら、[OpenTelemetry Operator](../operator/) を参照してほしいですが、このガイドでは Helm チャートにフォーカスします。
|
||||
|
||||
## 準備 {#preparation}
|
||||
|
||||
このガイドでは、[Kindクラスター](https://kind.sigs.k8s.io/)を使用することを前提に説明しますが、適切と思われるKubernetesクラスターを自由に使用することができます。
|
||||
|
||||
すでに[Kindがインストールされている](https://kind.sigs.k8s.io/#installation-and-usage)と仮定して、新しいKindクラスタを作成します。
|
||||
|
||||
```sh
|
||||
kind create cluster
|
||||
```
|
||||
|
||||
すでに [Helm がインストールされている](https://helm.sh/docs/intro/install/) と仮定して、OpenTelemetry Collector Helm チャートを追加し、後でインストールできるようにします。
|
||||
|
||||
```sh
|
||||
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
|
||||
```
|
||||
|
||||
## デーモンセットコレクター {#daemonset-collector}
|
||||
|
||||
Kubernetesのテレメトリーを収集する最初のステップは、ノードとそのノード上で実行されているワークロードに関連するテレメトリーを収集するために、OpenTelemetry Collectorのデーモンセットインスタンスをデプロイすることです。
|
||||
デーモンセットは、コレクターのこのインスタンスがすべてのノードにインストールされていることを保証するために使用されます。
|
||||
デーモンセット内のコレクターの各インスタンスは、それが実行されているノードからのみデータを収集します。
|
||||
|
||||
コレクターのこのインスタンスは、以下のコンポーネントを使用します。
|
||||
|
||||
- [OTLP レシーバー](https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver): アプリケーションのトレース、メトリクス、ログを収集します。
|
||||
- [Kubernetes 属性プロセッサー](../collector/components/#kubernetes-attributes-processor): 受信するアプリケーションのテレメトリーにKubernetesメタデータを追加します。
|
||||
- [Kubeletstats レシーバー](../collector/components/#kubeletstats-receiver): Kubelet上のAPIサーバーからノード、ポッド、コンテナのメトリクスをプルします。
|
||||
- [Filelog レシーバー](../collector/components/#filelog-receiver): Kubernetesログとstdout/stderrに書き込まれたアプリケーションログを収集します。
|
||||
|
||||
これらを1つひとつ見ていきましょう。
|
||||
|
||||
### OTLPレシーバー {#otlp-receiver}
|
||||
|
||||
[OTLP レシーバー](https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver) は、[OTLP フォーマット](/docs/specs/otel/protocol/) でトレース、メトリクス、ログを収集するための最良のソリューションです。
|
||||
他のフォーマットでアプリケーションのテレメトリーを発信している場合、[コレクターがそのためのレシーバーを持っている](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver)可能性が高いですが、このチュートリアルでは、テレメトリーが OTLP でフォーマットされていると仮定します。
|
||||
|
||||
要件ではないですが、ノード上で実行されているアプリケーションが、そのトレース、メトリクス、ログを同じノード上で実行されているコレクターに送信することは一般的なプラクティスです。
|
||||
これにより、ネットワークの相互作用がシンプルに保たれ、`k8sattributes` プロセッサーを使用してKubernetesのメタデータを簡単に相関させることができます。
|
||||
|
||||
### Kubernetes属性プロセッサー (Kubernetes Atributes Processor) {#kubernetes-attributes-processor}
|
||||
|
||||
[Kubernetes属性プロセッサー](../collector/components/#kubernetes-attributes-processor)は、Kubernetesポッドからテレメトリーを受信するコレクターで強く推奨されるコンポーネントです。
|
||||
このプロセッサーは、Kubernetesポッドを自動的に検出し、ポッド名やノード名などのメタデータを抽出し、抽出したメタデータをリソース属性としてスパン、メトリクス、ログに追加します。
|
||||
テレメトリーにKubernetesコンテキストを追加するため、Kubernetes属性プロセッサーを使用すると、アプリケーションのトレース、メトリクス、ログのシグナルを、ポッドのメトリクスやトレースなどのKubernetesテレメトリーと関連付けられます。
|
||||
|
||||
### Kubeletstatsレシーバー (Kubeletstats Receiver) {#kubeletstats-receiver}
|
||||
|
||||
[Kubeletstatsレシーバー](../collector/components/#kubeletstats-receiver) は、ノードに関するメトリクスを収集するレシーバーです。
|
||||
コンテナのメモリ使用量、ポッドのCPU使用量、ノードのネットワークエラーなどのメトリクスを収集します。
|
||||
すべてのテレメトリーには、ポッド名やノード名などのKubernetesメタデータが含まれます。
|
||||
ここではKubernetes属性プロセッサーを使用しているため、アプリケーションのトレース、メトリクス、ログをKubeletstatsレシーバーが生成したメトリクスと関連付けることができます。
|
||||
|
||||
### ファイルログレシーバー (Filelog Receiver) {#filelog-receiver}
|
||||
|
||||
[ファイルログレシーバー](../collector/components/#filelog-receiver)は、Kubernetesが `/var/log/pods/*/*.log` に書き込むログをテイルすることで、標準出力/標準エラーに書き込まれたログを収集します。
|
||||
ほとんどのログテイルツールと同様に、ファイルログレシーバーは、必要な方法でファイルをパースできるように、堅牢なアクションセットを提供します。
|
||||
|
||||
いつか自分でファイルログレシーバーを設定する必要が出てくるかもしれませんが、このウォークスルーでは、OpenTelemetry Helmチャートが複雑な設定をすべて処理してくれます。
|
||||
さらに、ファイル名に基づいて有用なKubernetesメタデータを抽出してくれます。
|
||||
ここではKubernetes属性プロセッサーを使用しているので、アプリケーションのトレース、メトリクス、ログをファイルログレシーバーが生成したログと相関できるでしょう。
|
||||
|
||||
---
|
||||
|
||||
OpenTelemetryコレクターHelmチャートは、コレクターのDeamonSetでのインストールにおいて、これらすべてのコンポーネントの設定を簡単にします。
|
||||
また、RBAC、マウント、ホストポートなど、Kubernetes特有の詳細もすべて引き受けてくれます。
|
||||
|
||||
1つ注意事項があります。チャートはデフォルトではどのバックエンドにもデータを送信しません。
|
||||
お気に入りのバックエンドで実際にデータを使いたい場合は、自分でエクスポーターを設定する必要があります。
|
||||
|
||||
このウォークスルーの例では、以下の`values.yaml`を使用します。
|
||||
|
||||
```yaml
|
||||
mode: daemonset
|
||||
|
||||
image:
|
||||
repository: otel/opentelemetry-collector-k8s
|
||||
|
||||
presets:
|
||||
# k8sattributesprocessorを有効にし、トレース、メトリクス、ログのパイプラインに追加します
|
||||
kubernetesAttributes:
|
||||
enabled: true
|
||||
# kubeletstatsreceiverを有効にし、メトリクスパイプラインに追加します
|
||||
kubeletMetrics:
|
||||
enabled: true
|
||||
# ファイルログレシーバーを有効にし、ログパイプラインに追加します
|
||||
logsCollection:
|
||||
enabled: true
|
||||
## チャートにはデフォルトでloggingexporterしか含まれていません
|
||||
## データをどこかに送りたい場合は、otlpexporterのようなエクスポーターを設定する必要があります
|
||||
# config:
|
||||
# exporters:
|
||||
# otlp:
|
||||
# endpoint: "<SOME BACKEND>"
|
||||
# service:
|
||||
# pipelines:
|
||||
# traces:
|
||||
# exporters: [ otlp ]
|
||||
# metrics:
|
||||
# exporters: [ otlp ]
|
||||
# logs:
|
||||
# exporters: [ otlp ]
|
||||
```
|
||||
|
||||
この `values.yaml` をチャートと一緒に使うには、ファイルを好きな場所に保存してから、以下のコマンドを実行してチャートをインストールします。
|
||||
|
||||
```sh
|
||||
helm install otel-collector open-telemetry/opentelemetry-collector --values <チャートを保存した場所へのパス>
|
||||
```
|
||||
|
||||
これで、OpenTelemetry コレクターのDaemonSetのインストールがクラスタ内で実行され、各ノードからテレメトリーが収集されるはずです!
|
||||
|
||||
## デプロイメントコレクター {#deployment-collector}
|
||||
|
||||
Kubernetesのテレメトリーを収集する次のステップは、クラスタ全体に関連するテレメトリーを収集するためにコレクターのデプロイメントインスタンスをデプロイすることです。
|
||||
正確に1つのレプリカを持つデプロイは、重複したデータを生成しないことを保証します。
|
||||
|
||||
コレクターのこのインスタンスは、以下のコンポーネントを使用します。
|
||||
|
||||
- [Kubernetesクラスターレシーバー](../collector/components/#kubernetes-cluster-receiver): クラスターレベルのメトリクスとエンティティイベントを収集します。
|
||||
- [Kubernetesオブジェクトレシーバー](../collector/components/#kubernetes-objects-receiver): Kubernetes APIサーバーからイベントなどのオブジェクトを収集します。
|
||||
|
||||
これらを1つずつ見ていきましょう。
|
||||
|
||||
### Kubernetesクラスターレシーバー (Kubernetes Cluster Receiver) {#kubernetes-cluster-receiver}
|
||||
|
||||
[Kubernetesクラスターレシーバー](../collector/components/#kubernetes-cluster-receiver)は、クラスター全体の状態に関するメトリクスを収集するためのコレクターのソリューションです。
|
||||
このレシーバーは、ノードの状態、ポッドのフェーズ、コンテナの再起動、利用可能なデプロイメントと希望するデプロイメントなどに関するメトリクスを収集できます。
|
||||
|
||||
### Kubernetesオブジェクトレシーバー (Kubernetes Objects Receiver) {#kubernetes-objects-receiver}
|
||||
|
||||
[Kubernetesオブジェクトレシーバー](../collector/components/#kubernetes-objects-receiver) は、Kubernetesオブジェクトをログとして収集するためのコレクターのソリューションです。
|
||||
どんなオブジェクトでも収集できますが、一般的で重要なユースケースはKubernetesイベントを収集することです。
|
||||
|
||||
---
|
||||
|
||||
OpenTelemetryコレクターHelmチャートは、コレクターのデプロイメントインストールにおけるこれらすべてのコンポーネントの設定を効率化します。
|
||||
また、RBAC やマウントといった Kubernetes 固有の詳細もすべて引き受けてくれます。
|
||||
|
||||
1つ注意事項があります。
|
||||
チャートはデフォルトではどのバックエンドにもデータを送信しません。
|
||||
もし実際にあなたの好みのバックエンドでデータを使いたい場合は、自分でエクスポーターを設定する必要があります。
|
||||
|
||||
このウォークスルーの例では、以下の`values.yaml`を使用します。
|
||||
|
||||
```yaml
|
||||
mode: deployment
|
||||
|
||||
image:
|
||||
repository: otel/opentelemetry-collector-k8s
|
||||
|
||||
# これらのコレクターは1つだけ必要で、それ以上は重複したデータを生成することになります
|
||||
replicaCount: 1
|
||||
|
||||
presets:
|
||||
# k8sclusterreceiverを有効にし、メトリクスパイプラインに追加します
|
||||
clusterMetrics:
|
||||
enabled: true
|
||||
# k8sobjectsreceiverがイベントのみを収集するようにし、ログパイプラインに追加します
|
||||
kubernetesEvents:
|
||||
enabled: true
|
||||
## チャートにはデフォルトでloggingexporterしか含まれていません
|
||||
## データをどこかに送りたい場合は、otlpexporterのようなエクスポーターを設定する必要があります
|
||||
# config:
|
||||
# exporters:
|
||||
# otlp:
|
||||
# endpoint: "<SOME BACKEND>"
|
||||
# service:
|
||||
# pipelines:
|
||||
# traces:
|
||||
# exporters: [ otlp ]
|
||||
# metrics:
|
||||
# exporters: [ otlp ]
|
||||
# logs:
|
||||
# exporters: [ otlp ]
|
||||
```
|
||||
|
||||
この `values.yaml` をチャートで使用するには、ファイルを好きな場所に保存してから、以下のコマンドを実行してチャートをインストールしてください。
|
||||
|
||||
```sh
|
||||
helm install otel-collector-cluster open-telemetry/opentelemetry-collector --values <チャートを保存した場所へのパス>
|
||||
```
|
||||
|
||||
これで、クラスタメトリクスとイベントを収集するコレクターのデプロイメントインストールがクラスタで実行されるはずです!
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
title: OpenTelemetry Helmチャート
|
||||
linkTitle: Helm Charts
|
||||
default_lang_commit: e8f18928513b726068be250802ebe7ece25e8851
|
||||
---
|
||||
|
||||
## はじめに {#introduction}
|
||||
|
||||
[Helm](https://helm.sh/) は、Kubernetesアプリケーションを管理するためのCLIソリューションです。
|
||||
|
||||
Helm を使うことにした場合、[OpenTelemetry Helmチャート](https://github.com/open-telemetry/opentelemetry-helm-charts) を使って、[OpenTelemetryコレクター](/docs/collector), [OpenTelemetryオペレーター](/docs/platforms/kubernetes/operator), [OpenTelemetryデモ](/docs/demo) のインストールを管理することができます。
|
||||
|
||||
次のコマンドでOpenTelemetry Helmリポジトリを追加します。
|
||||
|
||||
```sh
|
||||
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
|
||||
```
|
Loading…
Reference in New Issue