Kubernetes のモニター
Instana これにより、 Kubernetes の詳細情報の確認、 Kubernetes の呼び出しの分析、 Kubernetes のサービスと論理サービスの関連付け、 Kubernetes エンティティのアラートに対する組み込みまたはカスタムの健全性ルールの適用、およびサービスメッシュ上にデプロイされたワークロードのトレースが可能になります。
サポートされるバージョン
Instana 現在、 Kubernetes の最新の安定版に対応しています。 Kubernetes のバージョン互換性ポリシーに従い、 Instana は最新の Kubernetes およびそれ以前の4つのバージョンをサポートしています。 ただし、最初の2つのバージョンは、ソフトな非推奨と見なされています。
たとえば、現在の最新バージョンが 1.31 である場合、 Instana は 1.31、 1.30、 1.29、 1.28、および 1.27 をサポートします。なお、 1.28 および 1.27 はソフト非推奨とみなされます。
サポートされる管理対象 Kubernetes
- IBM Cloud Kubernetes Service モニターおよびパフォーマンス管理
- Amazon Elastic Container Service for Kubernetes (EKS)
- Azure Kubernetes Service (AKS)
- Google Kubernetes Engine (GKE)
- IBM Cloud Kubernetes Service
- VMware Tanzu Kubernetes Grid (TKG) および VMware Tanzu Kubernetes Grid Integration (TKGI) (旧称 Pivotal Container Service (PKS))
サポートされるサービス・メッシュ
Instana Istio の直近3つの安定版に対応しています。
Kubernetes への Instana エージェントのインストール
Instana を使用して Kubernetes を監視するには、 Kubernetes クラスターに Instana ホストエージェントをインストールする必要があります。
ホストエージェントのインストール手順の詳細については、 「 Kubernetes へのホストエージェントのインストール」 を参照してください。
VMware Tanzu Kubernetes Grid への Instana エージェントのインストールは、「 Instana Microservices Application Monitoring for VMware Tanzu 」タイルによって完全に自動化されています。
Kubernetes センサー
Instana 以下の Kubernetes センサーを提供しています:
- レガシー Kubernetes センサー
- 次世代 K8sensor
Legacy Kubernetes センサーは、製造終了(EOL)製品です。 すべての新機能と修正は K8sensor に公開されていますので、環境を更新してご利用ください。
次世代のK8sensorには次のような利点がある:
- 高可用性
- デプロイメントにおけるリソース制限のコントロールが向上
- レガシーセンサーにはバックポートされていない新機能、機能拡張、および修正
K8sensor で水平ポッド自動スケーリング(HPA)を有効にするには、 「 k8sensor の自動スケーリング(HPA)を有効にする(回避策)」 を参照してください。
「Legacy Kubernetes 」センサーは、デフォルトで無効になっています。 確認するには、エージェント configuration.yaml ファイルを確認してください:
com.instana.plugin.kubernetes:
enabled: false
この設定が有効であることを確認するには、レガシーセンサーのステータスとバージョンを確認するの手順を完了します。 センサーが正しく無効化されている場合、 Instana のUI上では「Legacy Kubernetes 」センサーの一致する項目は表示されません。
次世代K8sensorは、エージェントのインストール後、デフォルトで自動的にインストールされます。 K8sensorがクラスタ上で動作しているかどうかを調べるには、K8sensorのステータスとバージョンを確認するセクションでコマンドを実行してください。
レガシー Kubernetes センサー
Kubernetes センサー(旧モデル)は製造終了(EOL)となりました。 最新版は引き続きインストール可能です。
インストール
システムが次世代の「 K8sensor 」に移行されていない場合、レガシー版の「 Kubernetes 」センサーを再インストールする必要がある場合は、インストール時に設定を --set k8s_sensor.deployment.enabled=false 指定して、 非推奨 1.X となったエージェント「 Helm 」チャートの 1.2.74 最終バージョンを使用できます。
レガシーセンサーの状態とバージョンの確認
Legacy Kubernetes センサーのステータスと実行中のバージョンを確認するには、以下の手順を実行します:
- ナビゲーションメニューから、インフラを選択します。
- Maps タブで、Kubernetes ノードをクリックします。
- ノードの詳細パネルで、 「 Instana Agent (1)」 を展開し、該当するエージェントをクリックします。
- エージェントパネルで、ダッシュボードを開くをクリックします。
- エージェントページで、情報エリアのセンサー情報をクリックします。
- センサー情報ウィンドウで、検索フィールドで
Instana - Kubernetes - Sensorを検索します。
センサーが適切に有効化されていれば、表に一致するものが表示される。 状態列には値Activeが表示され、バージョン列にはバージョン番号、例えば1.2.143が表示されます。
トラブルシューティング
エージェントログの検索 Instana - Kubernetes - Sensor およびフィルタリングを行 com.instana.sensor-kubernetes っても結果が得られない場合は、次のコマンドを実行して、 Instana エージェントの設定マップを確認してください:
kubectl -n instana-agent get cm instana-agent -o yaml
以下の設定がないことを確認してください:
com.instana.plugin.kubernetes:
enabled: false
Instana - Kubernetes - Sensorの状態欄が数分間Waitingと表示された場合、センサーの起動に失敗したことを意味します。
エージェントのログを検索し、com.instana.sensor-kubernetesをフィルタリングし、Activating Kubernetes Sensorを探します。 具体的には、次のようなメッセージが表示されていないかチェックする:
ERROR : bundle com.instana.sensor-kubernetes:1.2.143 (246)[com.instana.agent.kubernetes.sensor.Kubernetes(479)] : The activate method has thrown an exception
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://10.43.0.1/apis/apps/v1/deployments?labelSelector=app%3Dk8sensor. Message: Forbidden!Configured serv
ice account doesn't have access. Service account may have been revoked. deployments.apps is forbidden: User "system:serviceaccount:instana-agent:instana-agent" cannot list resource "deployme
nts" in API group "apps" at the cluster scope.
このエラーメッセージは、 Kubernetes API サーバーへのアクセスにサービスアカウントが使用できないことを示しています。
次世代 K8sensor
インストール
エージェントをインストールすると、デフォルトでは ` K8sensor ` タグ icr.io/instana/k8sensor:latest を介して Next Generation が自動的にインストールされます。 この k8s_sensor.deployment.enabled 値を指定する場合は、必ず(デフォルト true 値)に設定してください。
ポーリング間隔の設定によるデータ取り込みの最適化
K8sensor のポーリングレートは、以下のいずれかの場所で k8s_sensor.pollrate 設定を行うことで変更できます:
- Helm 図表(例:
--set k8s_sensor.pollrate=15s) InstanaAgentカスタムリソース(例:k8s_sensor.pollrate: "15s")
1s です 30s。 この範囲外の値は、自動的に最も近いしきい値にクリップされます。| この属性 | 以下に最適 | 考慮事項 |
|---|---|---|
| 1s | 詳細なトラブルシューティング、高速な過渡現象の検出 | ノイズが増大し、インフラコストが高くなる。また、一時的な異常が発生する可能性がある |
| 10s | 主な利用シーン | 応答性と信号品質のバランスが良く、一時的なスパイクを過度に強調することなく、重要な変化を捉える |
| 30s | 大規模で、コスト効率に配慮した、安定した環境 | 問題の発見が遅れる;一時的な問題は検出されない可能性がある |
K8sensor のステータスとバージョンを確認する
K8sensor がクラスタ上で動作しているかどうかを確認するには、次のコマンドを実行して app: k8sensor というラベルの付いたデプロイメントを一覧表示します。
kubectl get deployments --all-namespaces -l app=k8sensor
K8sensorがリストにあれば、K8sensorが有効になる。 K8sensor が有効な場合、レガシー Kubernetes センサーは自動的に無効になります。 configuration.yamlファイルでは、enabledの値が次のようにfalseに変更されているのがわかる:
com.instana.plugin.kubernetes:
enabled: false
K8sensorのバージョンは、sha256の画像のハッシュによって最もよく識別される。 実行中の K8sensor コンテナのイメージ・ハッシュをチェックするには、以下のコマンドを実行する:
kubectl get po -n instana-agent -l app=k8sensor -o jsonpath='{ .items[0].status.containerStatuses[0].imageID }'
K8sensor のオートスケーリング(HPA)を有効にする(回避策)
Instana 現在、Next Generation K8sensor 向けの組み込みのオートスケーリング(HPAテンプレート)は提供されていません。 ただし、 k8sensor のデプロイメントに標準の Kubernetes (HPA) HorizontalPodAutoscaler を適用することで、オートスケーリングを有効にすることができます。 この回避策を実行するには、metrics-server がインストールされたクラスターが必要です。
Instana エージェントオペレーターは、カスタム InstanaAgent リソース(CR)から k8sensor デプロイメントの初期レプリカ数を管理します。 HPAとの競合を避けるため、CRのレプリカ数を一度設定したら、HPAの設定値と同じに minReplicas保ってください。
前提条件
クラスタにメトリクスサーバーがインストールされ、正常に動作していることを確認してください。
手順
オートスケーリングを有効にするには、以下の手順を実行してください:
- CR
InstanaAgentでリソース要求と安定したレプリカ数を設定する:CR内のデプロイメントのレプリカ数を必要な最小値に設定し、変更しないようにしてください。 使用量ベースのHPAの場合、以下の例に示すように、 k8sensor コンテナのCPUおよびメモリのリクエストを定義しますkubectl patch agents.instana.io instana-agent -n instana-agent \ --type='merge' -p '{ "spec": { "k8s_sensor": { "deployment": { "replicas": 2, "pod": { "requests": { "memory": "512Mi", "cpu": "200m" } } } } } }'お使いの環境に合わせて、レプリカ、メモリ、およびCPUを調整してください。 名前空間とCR名(
instana-agent)が、お使いのインストール環境と一致していることを確認してください。 HPAマニフェストを適用します:
次の例のように
k8sensor-hpa.yamlファイルを作成してください。 名前空間が異なる場合は、更新してください。apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: instana-agent-k8sensor namespace: instana-agent spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: instana-agent-k8sensor minReplicas: 2 maxReplicas: 8 behavior: scaleUp: stabilizationWindowSeconds: 60 policies: - type: Percent value: 100 periodSeconds: 60 scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 50 periodSeconds: 60 metrics: - type: Resource resource: name: memory target: type: Utilization averageUtilization: 80 - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 75次のコマンドを実行してマニフェストを適用します:
kubectl apply -f k8sensor-hpa.yaml注: 利用率目標の設定リクエスト。 リクエストを設定できない場合は、バイト単位のターゲットを指定した「Utilization」の代わりに「 AverageValue 」を使用してください(例: averageValue: 800Mi )。 通常、メモリが主な要因となりますが、CPUを安全策として追加することも可能です。
以下のコマンドを実行して、HPAが有効になっているか確認してください:
kubectl get hpa instana-agent-k8sensor -n instana-agentkubectl get deploy instana-agent-k8sensor -n instana-agent -o jsonpath='{.spec.replicas}'; echokubectl top pods -n instana-agent | grep k8sensor後でCR
InstanaAgentを編集すると、 Instana エージェントオペレーターが一時的にリセットされる場合があります.spec.replicas。 ただし、HPAは必要なレプリカ数を調整し、復元します。 HPAの動作設定により、フラッピングが防止されます。
トラブルシューティング
app: k8sensorというラベルでデプロイメントをリストしても結果が返らない場合、クラスタはK8sensorを実行していません。 この問題は、エージェントのデプロイ時にK8sensorが無効になっていたことを意味します。 この問題を解決するには、K8sensorを有効にしてエージェントを再デプロイします。
Kubernetes 情報へのアクセス
エージェントがクラスターにデプロイされると、 Kubernetes センサーは、クラスターとそこにデプロイされているリソースに関する詳細データを報告します。
Instana Kubernetes クラスタ内で実行されているすべてのリソースを自動的に検出し、監視します:
- クラスター
- CronJobs
- ノード
- 名前空間
- デプロイメント数
- DaemonSets
- StatefulSets
- サービス
- ポッド数
Kubernetes 情報は容易にアクセスでき、アプリケーションのあらゆる側面に深く組み込まれています。
Kubernetes ページ
Instana のUIのナビゲーションメニューで 「Platforms 」>「 Kubernetes 」をクリックすると、 Kubernetes のクラスターおよびネームスペースの情報が表示されます。
Kubernetes ダッシュボード
Kubernetes ページで、クラスターまたは名前空間をクリックします。 特定の Kubernetes エンティティーのすべての情報を表示する Kubernetes ダッシュボードを表示できます。 コンテキストは、常にコンテキストパスからアクセス可能です。 以下のスクリーン・ショットでは、「k8s-demo-cluster」というクラスターに「robot-shop」という名前の名前空間が表示されています。

Kubernetes ダッシュボードは、以下のように構造化されています。
「要約」 には、特定のエンティティーに最も関連性の高い情報が表示されます。 このダッシュボードは、状況と関連情報 (経過時間など) を示す状況表示行から始まります。 次のセクションでは、ポッドを含む、消費されたリソースを提供する CPU、メモリー、およびポッドの情報を確認できます。 以下のスクリーン・ショットの 「トップ・デプロイメント (Top Deployments)」 や 「トップ・ポッド (Top Pods)」 などのセクションには、潜在的なホット・スポットが表示されます。これらのホット・スポットを確認することをお勧めします。 「ログ」 セクションには、エンティティー・メトリックを補完する、そのエンティティーの関連ログの分布図が表示されます。 グラフは対話式で、すべての測定値を選択して強調表示することができます。 選択した期間にフォーカスすることも、 「分析」 セクションにジャンプしてトラブルシューティングを続行することもできます。
「詳細」には、「ラベル」、「注釈」、および「仕様」などの詳細情報が表示されます。
「イベント」には、関連するすべての Kubernetes イベントが表示され、それぞれのダッシュボードにリンクされます。
「デプロイメント」、「K8s Services」、および「ポッド」などの 関連エンティティー は、 Kubernetes ダッシュボードのタブとして表示されます。 表示される内容は、選択したエンティティーによって異なります。
CPU およびメモリーの使用率
Kubernetes ポッド、デプロイメント、サービス、名前空間、およびノードの場合、CPU とメモリーの制限、およびこれらのリソースに設定された要求と比較して、現在の CPU とメモリーの使用量を表示できます。
使用可能な場合、使用量情報は、リソースを構成するコンテナーを実行しているコンテナー・ランタイムから収集されたデータから計算されます。
アプリケーション・ページ
Instana UI のナビゲーションメニューで [アプリケーション] をクリックし、 [アプリケーション ] または [ サービス ] タブをクリックします。 サービスまたはアプリケーションが Kubernetes クラスター上で実行されている場合、「 インフラストラクチャ 」タブでそれぞれのコンテキスト情報を確認できます:

コンテナーの場合、ポッドと名前空間が表示され、直接リンクされます。ホストの場合、クラスターとノードも表示され、リンクされます。
インフラストラクチャのページ
Instana UIのナビゲーションメニューで 「インフラストラクチャ」 をクリックします。 「インフラストラクチャ」マップでは、選択したホストまたはコンテナに関する Kubernetes の情報をサイドバーで確認できます。

「ダイナミックフォーカス」 を使用してデータを絞り込むことができます。 例えば、クラスター内の特定のデプロイメントを検索します。 さらに、キーワード entity.kubernetes.cluster.distribution と entity.kubernetes.cluster.managedBy を使用すると、ディストリビューション層と管理層で Kubernetes クラスターを検索することもできます。 entity.kubernetes.cluster.distribution でサポートされる値は、 gke、 eks、 openshift、および kubernetesです。 entity.kubernetes.cluster.managedBy に対してサポートされる値は rancher および none です。
Kubernetes AIアシスタント
「 Kubernetes 」AIアシスタントを使用して、 Kubernetes クラスタのトラブルシューティングを行うことができます。 クラスタの状態、ポッドの問題、ネームスペースのリソース、およびデプロイメントのステータスについて、自然な言葉で質問してください。 あらかじめ用意されたプロンプトライブラリが含まれており、イベントの対応のためにアクションカタログに保存できる自動化スクリプトや手動アクションを生成できます。
Kubernetes のAIアシスタントをご利用になる前に、以下の前提条件が満たされていることを確認してください:
- SaaS 環境: SaaS 環境の場合、 Instana がデフォルトのLLMゲートウェイを提供します。 この機能を利用するために、特別な設定は必要ありません。 必要に応じて、独自のランタイム用に個別のゲートウェイを設定することができます。 詳細については、 SaaS をご覧ください。
この機能はフィーチャーフラグを使用しており feature.kubernetes.ai.agent.enabled、デフォルトでは有効(trueに設定)になっています。
- セルフホスト環境: Standard Edition およびCustom Editionでは、この機能を利用するためにLLMゲートウェイを設定する必要があります。 詳細については、 「セルフホスト型」 をご覧ください。
AIアシスタントをご利用になるには、以下の手順に従ってください:
- 「 Kubernetes 」のクラスタビューで、クラスタをクリックします。
- AIアイコンをクリックして、チャット画面を開いてください。 チャットウィンドウが開きます。 クエリは自然言語で入力することも、既存のプロンプトライブラリを使用することもできます。
Kubernetes の呼び出しを分析する
Unbounded Analyticsは、Kubernetes クラスター内のすべての通話を詳細に分析するための強力なツールを提供します。 Kubernetes ダッシュボードから 「呼び出しの分析 (Analyze Calls)」 をクリックすると、適切なフィルターとグループ化が既に設定されています。 この場合、 robot-shop 名前空間内のすべての呼び出しがポッド別にグループ化されて表示されます。

Kubernetes のログの分析
Unbounded Analyticsは、Kubernetes クラスタ内のあらゆるログを多角的に分析するための強力なツールを提供します。 Kubernetes ダッシュボードから 「ログの分析」 をクリックすると、適切なフィルタリングが既に設定されています。 この場合、以下のようにして、 robot-shop 名前空間内のすべてのログを表示できます。

文脈を変えずに適切な情報を提供するため、 Instana はログメッセージにインフラストラクチャおよび Kubernetes のメタデータを付加します。これらの情報は、ログメッセージを展開するとタグテーブルに表示されます。 以下のタグ表を参照してください。

Kubernetes サービスと論理サービスとのリンク
単一の Kubernetes サービスと複数の論理サービスとのリンク
サービス・マッピング・ルールが一致し、その Kubernetes サービスで呼び出しが生成される場合、複数の論理サービスを単一の Kubernetes サービスに関連付けることができます。 たとえば、ラベルセレクタを持つ "service=my-service"Kubernetes サービスには、追加の "env=dev" ラベルとを持つポッドが含まれている可能性があります。これらは、 Instana 内のカスタムサービスマッピング設定で、 kubernetes.pod.label以下のタグ kubernetes.container.name、および key: env、と "env=staging" 組み合わされています。 その結果、その単一の Kubernetes サービスに関連付けられた複数の論理サービスが作成され、 Kubernetes Service のダッシュボードに表示されます。
単一の論理サービスと複数の Kubernetes サービスとのリンク
複数の Kubernetes サービスは、それらの Kubernetes サービスが破棄され、時間の経過とともに再作成されるときに、単一の論理サービスに関連付けることができます。 例えば、生成された呼び出しを持つ Kubernetes サービス shop-service-a が、時間の経過とともに shop-service-b によって生成された呼び出しに置き換えられる場合、選択された期間が生成された呼び出しと重複すると、両方のサービスが論理サービス・ダッシュボードに表示されます。
メトリックの表示
Instana Kubernetes クラスタ、 CronJob,、 DaemonSet, のデプロイメント、ジョブ、 Kubernetes のサービス、ネームスペース、ノード、 StatefulSet, の水平ポッドオートスケーラー、パーシステントボリューム、およびパーシステントボリュームクレームに関する情報を収集します。
クラスター
| メトリック | 説明 |
|---|---|
| ポッドの割り振り | ポッド容量に対する割り振り済みポッドの比率 |
| CPU 要求の割り振り | CPU 容量に対する CPU 要求の比率 |
| CPU 制限の割り振り | CPU 容量に対する CPU 制限の比率 |
| メモリー要求の割り振り | メモリー容量に対するメモリー要求の比率 |
| メモリー制限の割り振り | メモリー容量に対するメモリー制限の比率 |
| CPU 要求 | すべての実行中コンテナーの CPU 要求の総計 |
| CPU 制限 | すべての実行中コンテナーの CPU 制限の総計 |
| CPU 容量 | すべてのノードの CPU 容量の総計 |
| メモリー要求 | すべての実行中コンテナーのメモリー要求の総計 |
| メモリー制限 | すべての実行中コンテナーのメモリー制限の総計 |
| メモリー容量 | すべてのノードのメモリー容量の総計 |
| 実行中ポッド | このクラスター内の実行中ポッドの総数 |
| 保留中ポッド | このクラスター内の保留中ポッドの総数 |
| 割り振り済みポッド | このクラスターの割り振り済みポッドの総数 |
| ポッド容量 | すべてのノードのポッド容量の総計 |
| ディスク不足ノード | このクラスター内のディスク不足ノードの数 |
| メモリー・プレッシャー・ノード | このクラスター内のメモリー・プレッシャー・ノードの数 |
| ディスク・プレッシャー・ノード | このクラスター内のディスク・プレッシャー・ノードの数 |
| Kubelet Ready=False のノード | このクラスター内でステータスが「Ready=False」のkubeletノードの数 |
| kubelet 作動不能ノード | このクラスター内で、ステータスが「Ready=Unknown」または「Ready=False」のkubeletノードの数 |
| 使用可能なレプリカ | すべてのデプロイメントの使用可能なレプリカの数 |
| 必要なレプリカ | すべてのデプロイメントの必要なレプリカの数 |
| ノード数 | このクラスター内のノード数 |
CronJob
| メトリック | 説明 |
|---|---|
| 最後のジョブ期間 | 最後のジョブが実行された期間 |
| アクティブ・ジョブ | アクティブ・ジョブの数 |
| 最後のスケジュール・ジョブまでの時間 | このクーロン・ジョブに対するジョブがスケジュールされてから経過した時間 |
DaemonSet
| メトリック | 説明 |
|---|---|
| 使用可能なレプリカ | 使用可能なレプリカの数 |
| 必要なレプリカ | 必要なレプリカの数 |
| 使用不可のレプリカ | 使用不可のレプリカの数 |
| 誤ってスケジュールされたレプリカ | 誤ってスケジュールされたレプリカの数 |
| レプリカの必要数に対する使用可能数の比率 | 必要なレプリカに対する使用可能なレプリカの比率 |
デプロイメント
| メトリック | 説明 |
|---|---|
| 使用可能なレプリカ | 使用可能なレプリカの数 |
| 必要なレプリカ | 必要なレプリカの数 |
| レプリカの必要数に対する使用可能数の比率 | 必要なレプリカに対する使用可能なレプリカの比率 |
| 保留中ポッド | 保留中のポッドの数 |
| 未スケジュール・ポッド | スケジュールされていないポッドの数 |
| 準備未完了ポッド | 準備が完了していないポッドの数 |
| 保留中フェーズ期間 | 保留中フェーズの期間 |
| ポッド数 | このデプロイメントのポッドの数 |
| メモリー要求 | このデプロイメントのすべての実行中コンテナーのメモリー要求の総計 |
| メモリー制限 | このデプロイメントのすべての実行中コンテナーのメモリー制限の総計 |
| CPU 要求 | このデプロイメントのすべての実行中コンテナーの CPU 要求の総計 |
| CPU 制限 | このデプロイメントのすべての実行中コンテナーの CPU 制限の総計 |
ジョブ
| メトリック | 説明 |
|---|---|
| アクティブなポッド | このジョブでのアクティブなポッドの数 |
| 失敗したポッド | このジョブでの失敗したポッドの数 |
| 成功したポッド | このジョブでの正常終了したポッドの数 |
| ジョブ期間 | ジョブが実行された期間 |
Kubernetes サービス
| メトリック | 説明 |
|---|---|
| CPU 要求 | このサービスの CPU 要求の総計 |
| CPU 制限 | このサービスの CPU 制限の総計 |
| メモリー要求 | このサービスのメモリー要求の総計 |
| メモリー制限 | このサービスのメモリー制限の総計 |
名前空間
| メトリック | 説明 |
|---|---|
| メモリー要求容量 | この名前空間でのメモリー要求に対してサポートされる最大メモリー |
| 使用メモリー要求 | 使用メモリー要求に割り振られたメモリーの量 |
| メモリー制限容量 | この名前空間でのメモリー制限に対してサポートされる最大メモリー |
| 使用メモリー制限 | 使用メモリー制限に割り振られたメモリーの量 |
| CPU 要求容量 | この名前空間での CPU 要求に対してサポートされる最大 CPU |
| 使用 CPU 要求 | 使用 CPU 要求に割り振られた CPU の量 |
| CPU 制限容量 | この名前空間での CPU 制限に対してサポートされる最大 CPU |
| 使用 CPU 制限 | 使用 CPU 制限に割り振られた CPU の量 |
| 使用中ポッド | この名前空間に使用されるポッドの数 |
| ポッド容量 | 名前空間で使用できるポッドの数 |
| 使用中ポッドの割り振り | ポッド容量に対する使用中ポッドの比率 |
| CPU 要求の割り振り | CPU 容量に対する CPU 要求の比率 |
| CPU 制限の割り振り | CPU 容量に対する CPU 制限の比率 |
| メモリー要求の割り振り | メモリー要求容量に対するメモリー要求の比率 |
| メモリー制限の割り振り | メモリー制限容量に対するメモリー制限の比率 |
| ポッドの割り振り | ポッド容量に対する割り振り済みポッドの比率 |
ノード
| メトリック | 説明 |
|---|---|
| 割り振り済みポッド | このノード上の割り振り済みポッドの数 |
| ポッド容量 | ノード上で使用できるポッドの数 |
| メモリー要求 | このノード上のすべての実行中コンテナーのメモリー要求の総計 |
| メモリー制限 | このノード上のすべての実行中コンテナーのメモリー制限の総計 |
| メモリー容量 | このノード上でサポートされる最大メモリー |
| CPU 要求 | このノード上のすべての実行中コンテナーの CPU 要求の総計 |
| CPU 制限 | このノード上のすべての実行中コンテナーの CPU 制限の総計 |
| CPU 容量 | このノード上でサポートされる最大 CPU |
| ポッドの割り振り | ポッド容量に対する割り振り済みポッドの比率 |
| CPU 要求の割り振り | CPU 容量に対する CPU 要求の比率 |
| CPU 制限の割り振り | CPU 容量に対する CPU 制限の比率 |
| メモリー要求の割り振り | メモリー容量に対するメモリー要求の比率 |
| メモリー制限の割り振り | メモリー容量に対するメモリー制限の比率 |
ポッド
| メトリック | 説明 |
|---|---|
| コンテナー数 | このポッドのコンテナーの数 |
| CPU 要求 | このポッドのすべてのコンテナーでの CPU 要求の総計 |
| CPU 制限 | このポッドのすべてのコンテナーでの CPU 制限の総計 |
| メモリー要求 | このポッドのすべてのコンテナーでのメモリー要求の総計 |
| メモリー制限 | このポッドのすべてのコンテナーでのメモリー制限の総計 |
| 再始動数 | このポッドのすべてのコンテナーでの再始動の総計 |
StatefulSet
| メトリック | 説明 |
|---|---|
| 使用可能なレプリカ | 使用可能なレプリカの数 |
| 必要なレプリカ | 必要なレプリカの数 |
| レプリカの必要数に対する使用可能数の比率 | 必要なレプリカに対する使用可能なレプリカの比率 |
水平ポッドオートスケーラー(HPA)
次世代 K8sensor でHPAを有効にするには、「 k8sensor でのオートスケーリング(HPA)の有効化(回避策)」 を参照してください。
HPAに関する以下の指標が利用可能です:
| メトリック | 説明 |
|---|---|
| 現在のレプリカ | 使用可能なレプリカの数 |
| 必要なレプリカ | 必要なレプリカの数 |
| 最大レプリカ数 | オートスケーラーがスケールアップできるレプリカの最大数 |
| 最小レプリカ数 | オートスケーラーがスケールダウンできるレプリカの最小数 |
| 現在のレプリカ数 / 最大レプリカ数 | 現在のレプリカ数と最大レプリカ数の比率 |
| 現在のレプリカ数 / 最小レプリカ数 | 現在のレプリカ数と最小レプリカ数の比率 |
| 監視対象世代 | オートスケーラーによって監視される最新世代のレプリカ |
アナリティクス・インフラストラクチャ機能を使用すると、HPA(Horizontal Pod Autoscalers)を監視できます。 詳細については、「 インフラストラクチャの分析 」を参照してください。 「インフラストラクチャの分析」ページでは、水平ポッドオートスケーラーを検索し、その総数を確認できます。 
HPAの一覧を表示するには、インフラストラクチャ タイプのリストから 「 Kubernetes Horizontal Pod Autoscalers」 を選択してください。 
HPAに関連するメトリクスに対してスマート・アラートを作成できます。 詳細については、 「スマートアラート」 を参照してください。 以下のHPAメトリクスを使用して、スマートアラートを作成できます:現在のレプリカ数、目標レプリカ数、最大レプリカ数、メッセージ数、および最小レプリカ数。 
以下のメトリクスに基づいて、レプリカの使用率に応じたアラートを設定できます:
Current Replicas / Maximum ReplicasCurrent Replicas / Minimum Replicas
たとえば、ある Current Replicas 指標が別の Maximum Replicas 指標の80%に達した場合、その Current Replicas / Maximum Replicas 指標の値 0.8 によってアラートがトリガーされることがあります。 同様に、メトリクスの Current Replicas 値が100%に達した場合、その Current Replicas / Minimum ReplicasMinimum Replicas メトリクスの値 1.0 によってアラートがトリガーされる可能性があります。
永続ボリューム (PV)
次の表は、PVに関連する利用可能なメトリクスの一覧です:
| メトリック | 説明 |
|---|---|
| ストレージ・クラス名 | このPVの作成に使用されるオブジェクト StorageClass の名前 |
| 合計容量 (GiB) | GiB の太陽光発電設備の総容量 |
| 使用済み容量( GiB ) | GiB における太陽光発電設備の利用率 |
| 使用率 | 太陽光発電設備の総容量に対する稼働容量の割合(パーセンテージで表す) |
| フェーズ | PVの現在のフェーズは、 Bound、 Released、、または のいずれかです Available。 Failed |
| アクセス・モード | PVのアクセスモード |
太陽光発電の監視
PVを監視するには、 Instana のUIで以下の手順を実行してください:
ナビゲーションメニューから、インフラを選択します。
「インフラストラクチャ」ダッシュボードで、 「インフラストラクチャの分析」 をクリックします。
「インフラストラクチャの分析」ダッシュボードで、「 Kubernetes 」の永続ボリュームを検索し、次の画像のように総数を確認します

PVの一覧を表示するには、次の画像に示すように、インフラストラクチャ タイプのリストから 「 Kubernetes Persistent Volume」 を選択してください:

PVの指標を表示するには、リストからPVを選択してください。 タイプと現在の値を含むPVメトリクスの一覧を確認できます。
太陽光発電のスマートアラートを設定する
PVメトリクスのスマートアラートを設定するには、 Instana のUIで以下の手順を実行してください:
ナビゲーションメニューから、 「インフラストラクチャ 」>「 スマートアラート 」>「 スマートアラートの作成」 を選択します。
「スマートアラートの作成」ウィンドウで、「使用容量(%)」などの利用可能なPVメトリクスのいずれかを選択し、必要なエンティティに基づいてフィルタリングします。

スマートアラートの設定に関する詳細については、 「スマートアラート」 を参照してください。
ストレージ・クラス・サポート
Instana 静的プロビジョニングと動的プロビジョニングの両方において、主要なクラウドプロバイダーが提供する最も一般的なストレージクラスをサポートしています。 以下のサポートマトリックスは、サポートが確認されている各種ストレージクラスを示しています。
| クラウド・プロバイダー | 名前 | プロビジョナー | サポート |
|---|---|---|---|
| GCP | PersistentDisk | pd.csi.storage.gke.io | ✅ |
| GCP | ハイパーディスク | pd.csi.storage.gke.io | ✅ |
| GCP | バケット | gcsfuse.csi.storage.gke.io | ✅ |
| GCP | fileStore | filestore.csi.storage.gke.io | ✅ |
| AWS | Elastic Block Storage (EBS) | ebs.csi.aws.com | ✅ |
| AWS | Elastic File Storage ( EFS ) | efs.csi.aws.com | ✅ |
| AWS | Amazon FSx / Amazon File Cache | filecache.csi.aws.com | ✅ |
| AWS | S3 | s3.csi.aws.com | ✅ |
| Azure | マネージドCSI | disk.csi.azure.com | ✅ |
| Azure | マネージド CSI プレミアム | disk.csi.azure.com | ✅ |
| Azure | Azure File CSI | file.csi.azure.com | ✅ |
| Azure | Azure File CSI Premium | file.csi.azure.com | ✅ |
| IBM | Block Storage | vpc.block.csi.ibm.io | ✅ |
| IBM | File Storage | vpc.file.csi.ibm.io | ✅ |
| IBM | Cloud Object Storage | ibm.io/ibmc-s3fs | ✅ |
| OpenShift | Ceph RBD Block Storage | openshift-storage.rbd.csi.ceph.com | ✅ |
| OpenShift | CephFS | openshift-storage.cephfs.csi.ceph.com | ✅ |
| OpenShift | Ceph RGW | openshift-storage.object.csi.ceph.com | ✅ |
| OpenShift | ヌーバ | openshift-storage.noobaa.io/obc | ✅ |
永続ボリューム請求 (PVC)
次の表は、PVCに関連する利用可能なメトリクスの一覧です:
| メトリック | 説明 |
|---|---|
| 合計容量 (GiB) | GiB におけるPVCの総容量 |
| 使用済み容量( GiB ) | GiB におけるPVCの使用容量 |
| 使用率 | PVCの総容量に対する使用容量の割合(パーセンテージで表す) |
| フェーズ | PVCの現在のフェーズは、 Bound、 Released、、 Availableのいずれかである。 Failed |
| アクセス・モード | PVCのアクセスモード |
PVCがPVに紐付けられている限り、表示される指標のほとんどは、関連するPVで利用可能な指標と同じです。
PVCの監視
PVCを監視するには、 Instana のUIで以下の手順を実行してください:
ナビゲーションメニューから、インフラを選択します。
「インフラストラクチャ」ダッシュボードで、 「インフラストラクチャの分析」 をクリックします。
「インフラストラクチャの分析」ダッシュボードで、「 Kubernetes 」の永続ボリュームを検索し、次の画像のように総数を確認します

PVCの一覧を表示するには、次の画像に示すように、インフラストラクチャ タイプのリストから 「 Kubernetes Persistent Volume Claim」 を選択します

PVCのメトリクスを表示するには、PVCの一覧からPVCを選択してください。 タイプと値を含むPVCメトリクスの一覧を確認できます。
PVCのスマートアラートを設定する
PVC メトリクスのスマートアラートを設定するには、 Instana のUIで以下の手順を実行してください:
ナビゲーションメニューから、 「インフラストラクチャ 」>「 スマートアラート 」>「 スマートアラートの作成」 を選択します
「スマートアラートの作成」ウィンドウで、「使用容量(%)」などの利用可能なPVメトリクスのいずれかを選択し、必要なエンティティに基づいてフィルタリングします。

スマートアラートの設定に関する詳細については、 「スマートアラート」 を参照してください。
PVやPVCのモニタリングとその必要性について詳しく知りたい場合は、 ブログ記事 「Demystifying PVCs and PVs( IBM )」をご覧ください。
コントロールプレーンの監視
Instana Kubernetes のコントロールプレーンコンポーネントに対する包括的な監視機能を提供し、クラスタの中核となるインフラストラクチャの状態やパフォーマンスを詳細に把握できるようにします。 コントロールプレーンの監視により、ボトルネックの特定、問題のトラブルシューティング、および Kubernetes 環境の信頼性の確保が可能になります。
- API サーバー : Kubernetes のコントロールプレーンのフロントエンドであり、 Kubernetes API を公開します。
- スケジューラ :リソース要件と制約に基づいて、ポッドをノードに割り当てます。
- Etcd :クラスタのすべてのデータを格納する分散型キーバリューストア。
- コントローラーマネージャー :クラスターの状態を管理するコントローラープロセスを実行します。
UIでのコントロールプレーンの監視へのアクセス
- ナビゲーションメニューから、 「Platforms 」>「 Kubernetes 」を選択します。
- リストからクラスターを選択してください。
- クラスタダッシュボードの 「コントロールプレーン 」タブに移動します。
コントロールプレーンのダッシュボードには、監視対象のすべてのコンポーネントに関するリアルタイムのメトリクスと過去の傾向が表示されます。

デバッグ情報
Instana のUIで Kubernetes クラスターを表示すると、「 Control Plane 」タブに、クラスターの監視状況や構成に関する詳細情報を提供するデバッグ情報が表示されます。 この情報は、監視の現状を把握し、問題のトラブルシューティングを行うのに役立ちます。
- ホスト・カバレッジ
ホストのカバレッジとは、Kubernetes クラスタ内のノードのうち、 Instana エージェントがインストールされ、データを正常に送信しているノードの割合を示します。 この指標は、監視対象ノード数をクラスタ内のノード総数で割った比率として算出されます。
たとえば、「 3/6 - 50.0 % 」と表示されている場合、これは次のことを意味します:- 3つのノードに Instana エージェントがインストールされており、監視されています。
- クラスタには合計6つのノードが存在します。
- クラスタノードの50%が監視対象となっています。
ホストのカバー率が低い場合、以下のことが示唆される可能性があります:- 指定された設定に従い、エージェントはノードに意図的にインストールされません。 これは特にコントロールプレーンノードで予想されますが、テイントを持つ他のノードにも影響を及ぼす可能性があります。 詳細については、 「エージェントの展開とスケジュール設定」 を参照してください。
- 一部のエージェントが動作していないか、接続に問題があります。
- クラスタに最近追加されたノードには、まだエージェントがデプロイされていません。
ホストのカバレッジを向上させるには、クラスタ内の対象ノードに Instana エージェントが正しくインストールされていることを確認してください。 詳細については、 Kubernetes の「 Instana エージェントのインストール」 を参照してください。
- クラスターUUID
クラスタ UUID は、 Kubernetes クラスタに割り当てられる一意の識別子です。 この識別子は、 Instana が内部的に使用し、異なるクラスタを区別し、監視データを関連付けるために用いられます。 UUIDは自動的に生成され、クラスタの存続期間を通じて一貫性を保ちます。
- エージェント・モニター
「 エージェント・モニター 」フィールドには、 Kubernetes のコントロールプレーン・コンポーネントの監視を担当する Instana エージェントの名前または識別子が表示されます。 この情報は、エージェント固有の問題のトラブルシューティングや、どのエージェントインスタンスがコントロールプレーンのメトリクスを収集しているかを確認する際に役立ちます。
- K8sセンサー・バージョン
K8s センサー のバージョンは、クラスターに現在デプロイされている Kubernetes センサーのバージョンを表示します。 Kubernetes センサーは、 Kubernetes API サーバーからメタデータとメトリクスを収集する役割を担っています。
バージョン番号を確認することで、サポート対象の最新版を実行しているかどうかを確認できます。 Kubernetes センサーの詳細およびステータスの確認方法については、 「 Kubernetes センサー」 を参照してください。
- デバッグ情報の取得Instana のUIを使用して、 Kubernetes クラスタのデバッグ情報を表示するには
- Instana のUIナビゲーションメニューから、 」を選択します。
- [ クラスター] タブ(テーブル表示またはカード表示)で、クラスター名をクリックすると、そのクラスターのダッシュボードが開きます。
- クラスタのダッシュボードで、「コントロールプレーン 」タブをクリックします。
- デバッグ情報の詳細は、表示されているコントロールプレーンの詳細の最後に表示されます。
ヘルス・ルール
組み込み
Kubernetes エンティティーの問題をトリガーする組み込みヘルス・ルールがいくつか存在します。
- クラスター
- Kubernetes マスターコンポーネント(APIサーバー、スケジューラー、およびコントローラーマネージャー)が正常に動作していないことを報告しています。 Instana マスターコンポーネントの健全性ステータスをフィルタリングし、アラートは発生させず、クラスタ詳細ページに健全性ステータスのみを表示します。
- ノード
- 要求された CPU が最大容量に近づいています。 CPU 容量に対する要求された CPU の比率が 80% を超えています。
- 要求されたメモリーが最大容量に近づいています。 要求されたメモリー対メモリー容量の比率が 80% を超えています。
- 割り振り済みポッドが最大容量に近づいています。 ポッド容量に対する割り振り済みポッドの比率が 80% を超えています。 ノードの場合、フェーズ「Running」および「Unknown」のポッドは、割り振り済みとしてカウントされます。 ノード容量について詳しくは、 Kubernetes の資料を参照してください。
- ノードが 1 分を超えて作動不能状態を報告し、このノードのすべての状態が「作動可能」状態を超えています。 すべてのノードの状態に関する詳細については、 Kubernetes のドキュメントを参照してください。
- 名前空間
- 要求された CPU が最大容量に近づいています。 CPU 容量に対する要求された CPU の比率が 80% を超えています。
- 要求されたメモリーが最大容量に近づいています。 要求されたメモリー対メモリー容量の比率が 80% を超えています。
- 割り振り済みポッドが最大容量に近づいています。 ポッド容量に対する割り振り済みポッドの比率が 80% を超えています。 名前空間の場合、フェーズ「保留中」、「実行中」、および「不明」のポッドが割り振り済みとしてカウントされます。 名前空間キャパシティー値は、名前空間ごとに設定できる ResourceQuotas に基づいています。 詳しくは、 Kubernetes の資料を参照してください。
- デプロイメント
- 使用可能なレプリカの数が、必要なレプリカの数よりも少ない。
- ポッド
- ポッドはデプロイされてから1分以内にレディにならなければなりませんが、1分以内にレディにならない場合は、タスクを完了したことが理由ではありません(PodCondition=Ready, Status=False, Reason!= PodCompleted)。 すべてのポッドの状態に関する詳細については、 Kubernetes のドキュメントを参照してください。
カスタム
組み込みルールに加えて、クラスター、名前空間、デプロイメント、およびポッドのメトリックに対してカスタム・ルールを作成することもできます。 たとえば、ノード容量に関する警告のしきい値が高すぎる場合は、その警告を無効にし、より低いしきい値を設定したカスタムルールを作成することができます。 詳細については、 「イベントおよびインシデントの設定」 を参照してください。
Instana エージェントのインストールに必要なロールベースのアクセス制御(RBAC)
Instana エージェントオペレーターは、主に3つのコンポーネントをインストールおよび管理します。 Kubernetes クラスタを監視するには、各コンポーネントに特定のRBAC権限が必要です:
Instana エージェントオペレーター
オペレーターは、以下のタスクを実行するためにクラスター全体の権限を必要とします:
- エージェントのデプロイを管理する :ネームスペース間で、 DaemonSets, のデプロイ、 ConfigMaps, のシークレット、および ServiceAccounts を作成および更新します。
- RBACの設定 :エージェントおよび k8sensor コンポーネント用に、 ClusterRoles および ClusterRoleBindings を作成します。
- Instana のカスタムリソースの管理 :適切なクリーンアップを行うためにファイナライザを設定した Instana エージェントのカスタムリソース(
agents.instana.ioおよびagentsremote.instana.io)を作成、更新、削除します。 - 高可用性を確保する :クラスタのメンテナンス中にサービスが中断しないよう、 k8sensor 用の PodDisruptionBudgets を管理します。
- クラスタリソースの検出 :エージェントを正しく設定するために、ノード、ネームスペース、ポッド、サービスなどのクラスタ全体のリソースを読み取ります。
- etcd ( OpenShift )の監視 :メトリクスの収集を行うため、 etcd の証明書と設定を ネーム
openshift-etcdスペース から ネームスペースinstana-agentにコピーします。 - kubelet のメトリクスにアクセスする :クラスタの状態を確認するために、リソース以外の URL(
/metrics,/stats/summary, および/healthz)を読み取ります。 - イベントの記録 :運用状況の可視化とトラブルシューティングのためにイベントを作成します。
- リーダー選出 :複数のオペレーターレプリカを実行する場合、高可用性を確保するために、オペレーターのネームスペース内のリースを管理します。
- サービスエンドポイントの監視 : EndpointSlices を参照し、
discovery.k8s.ioサービスエンドポイントの変更を追跡して、エージェントがバックエンドサービスを動的に検出できるようにしてください。
Instana エージェント ( DaemonSet )
エージェント・ポッドは、以下のタスクを実行するために権限を必要とします:
- ノードのメトリクスを収集する :各ノードのkubeletメトリクスエンドポイント(例:
/metrics、/stats/summary、など/metrics/cadvisor)にアクセスします。 - ポッドの監視 :すべてのネームスペースにわたるポッドの情報とメトリクスを読み取ります。
- 特権アクセスを実行する :特権セキュリティコンテキストを使用して、ホストレベルの監視を有効にします。
K8Sensor (展開)
k8sensor では、以下のタスクを実行するために読み取り専用権限が必要です:
- Kubernetes のリソースをすべて監視する :クラスタ全体にわたるPod、Deployment、Service、 ConfigMaps, などのあらゆるリソースタイプを読み取り、包括的な監視を実現します。
- カスタムリソースの監視 :カスタムリソース定義(CRD)を検出して監視します。
- ワークロードの監視 : DaemonSets,、 StatefulSets, ジョブ、 CronJobs,、 HorizontalPodAutoscalers を含む、あらゆる種類のワークロードを追跡します。
- ネットワークの監視 :Ingressリソースとネットワークポリシーを読み取ります。
- etcd のエンドポイントを特定する :メトリクスの収集対象となる etcd を見つけるには、名前
kube-system空間内のサービスとエンドポイントを確認してください。 - OpenShift のリソースを監視する :『 DeploymentConfigs 』およびその他の OpenShift-specific リソース( OpenShift のみ)を参照してください。
- 特権アクセスを実行する( OpenShift ) : OpenShift で特権セキュリティコンテキスト制約(SCC)を使用し、包括的な監視を行います。
- サービストポロジーの追跡 : EndpointSlices を参照し、クラスタ全体でのサービスエンドポイントの分布を監視
discovery.k8s.ioして、包括的なネットワークトポロジーマッピングを作成してください。
インストールによって作成される ClusterRoles, の具体的なロールや権限の詳細については、 Instana の Helm Chartsリポジトリを参照してください。
AutoTrace Webhook に必要なロールベースのアクセス制御(RBAC)
Instana ( AutoTrace )のWebhookは、 Instana エージェントのインストールとは別のコンポーネントです。 このWebhookは2つのコンポーネントで動作し、それぞれに固有のセキュリティ要件とRBAC権限が設定されています:
Webhookポッドの変更
Webhookポッドは、ポッド作成リクエストを傍受する、厳重に制限された非特権サービスとして実行されます。 以下のタスクを実行するには、クラスタ全体の権限が必要です:
- TLS の証明書を読み取る :Webhookエンドポイント HTTPS 用の TLS 証明書を読み取るためのアクセスシークレットを参照してください。
- イメージプルシークレットの管理 :プライベートレジストリを使用する場合、ターゲットネームスペースにイメージプルシークレットを作成します。
- 設定の読み取り :コンテナの環境変数で参照されているアクセスシークレットおよび ConfigMaps を取得します。
- NGINX の設定を管理する : NGINX のイングリッシュ・トレーシング統合用に ConfigMaps を作成および更新します。
- 計測範囲を決定する :名前空間を読み取り、名前空間のラベルを確認して、オプトインまたはオプトアウトのロジックを確認する。
- Podセキュリティポリシーへの準拠 :PSPアドミッションコントローラーが有効になっている場合、 1.25 より以前のバージョンの Kubernetes では、 PodSecurityPolicies を使用してください。
Webhook ポッドは、以下のセキュリティ制限の下で実行されます:
- 特権を昇格させることなく、非rootユーザー(UID 1001)として実行されます
- 権限を昇格できません
- Linux のすべての機能が削除されました
- RuntimeDefault のseccompプロファイルを使用して、システムコールのアクセスを制限します
- 変更を防ぐための読み取り専用ルートファイルシステム
計測用初期化コンテナ
このWebhookは、アプリケーションのPodにinitコンテナを注入し、計測用ファイルを共有ボリュームにコピーします。 特別な権限を必要とせず、以下のセキュリティ特性で動作します:
- Podのセキュリティコンテキストを継承 :デフォルトでは、アプリケーションPodのセキュリティコンテキストを使用します。
- 特権モードなし :特権を昇格させずに実行されます。
- Linux の権限は不要 :特別な権限は一切必要ありません。
- ホストレベルのアクセス権なし :、
hostNetwork、またはhostIPCへのhostPIDアクセス権を必要としません。 - emptyDir ボリュームへの書き込み :ホストのファイルシステムではなく、共有
emptyDirボリュームにのみ書き込みを行います。
Webhookポッドとインストルメンテーションのinitコンテナは、いずれも Kubernetes の「Restricted Pod Security Standard」(最も厳格なセキュリティプロファイル)に完全に準拠しています。
AutoTrace Webhook のインストールおよび設定に関する詳細については、 Instana AutoTrace webhook を参照してください。
Istio または OpenShift を使用した Java の監視 ServiceMesh
フラグ agent.serviceMesh.enabled を使用して監視する
` agent.serviceMesh.enabled flag` を使用することで、 Istio および OpenShift のサービスメッシュにおいて、 Instana エージェントによる Java の監視を有効にできます。 この Kubernetes ネイティブのアプローチでは、単一のホストまたはノード上で監視されるすべての Java ワークロードに対して、1つの専用ネットワークポートを使用します。 デフォルト値は true に設定されています。 この設定パラメータの詳細については、 Helm の「チャートの設定」 を参照してください。
Istio の設定が に設定されている REGISTRY_ONLY場合、エージェントソケットサービスが正常に動作するためには、追加の手順が必要となります。
個々のクラスター・ノードごとに、以下のリソース定義をデプロイする必要があります。 必ず、ホストまたはノードごとに固有の metadata.name プロパティーを定義してください。 また、 spec.hosts の値を <node-ip-address>.instana-agent-headless.instana-agent.svcに設定します。ここで、 <node-ip-address> はノードの IP アドレスです。
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: instana-agent-worker-<node-unique-counter>
spec:
hosts:
- <node-ip-address>.instana-agent-headless.instana-agent.svc
ports:
- number: 42699
name: agent
protocol: TCP
resolution: DNS
location: MESH_EXTERNAL
サービスメッシュのバイパス機能を使用した監視(非推奨)
代替のレガシー・アプローチは、サービス・メッシュのバイパスを有効にすることです。 Istio のデフォルトのインストール環境では、 Instana がそのまま利用可能です。 Istio をデフォルト拒否ポリシー(mode: REGISTRY_ONLY)でデプロイする場合、次のエージェント設定を使用して、 Instana のサービスメッシュバイパスを有効にできます:
com.instana.container:
serviceMesh:
enableServiceMeshBypass: true
この設定は、以下の 2 つの異なる方法でブロックされたネットワーク接続をバイパスします。
- アプリケーション・ポッドからホスト・エージェントへの発信トラフィックを許可します (エージェントが listen するすべての IPv4 アドレス、およびすべてのポート)。
- JVM アプリケーションのエージェントから、アプリケーションポッドへの着信トラフィックを許可します(ホストエージェントがリッスンしているすべての ipv4 アドレス、すべてのポートからのトラフィック)。
メッシュ・バイパスのデバッグ
サービス・メッシュのバイパスをデバッグするには、以下の手順を実行します。
- サービス・メッシュのバイパスが有効になっていることを確認します。
- iptable ルールがコンテナーに適用されていることを確認します。
有効化の検証
サービスメッシュのバイパスが有効になっているかどうかを確認するには、次のコマンドを実行して Instana エージェントのログを確認してください:
kubectl logs -l app.kubernetes.io/instance=instana-agent -n instana-agent -c instana-agent
サービス・メッシュバイパスが有効になっている場合は、以下のログ行が表示されます。これらのログ行は、示されているプロセスに対してインバウンドまたはアウトバウンドのバイパス・エントリーが書き込まれていることを示します。
インバウンド・パス:
2021-04-26T08:13:57.065+0000 | INFO | -client-thread-2 | DefaultServiceMeshSupport | 51 - com.instana.agent - 1.1.597 | Applying inbound service mesh bypass for process '764670'
アウトバウンド・バイ・パス:
2021-04-26T08:13:57.140+0000 | INFO | -client-thread-2 | DefaultServiceMeshSupport | 51 - com.instana.agent - 1.1.597 | Applying outbound service mesh bypass for process '764670'
iptable ルールの検証
iptablesのルールを確認する最も簡単な方法は、 Instana エージェントにシェル接続し、次のようにターゲットコンテナのiptablesルールを一覧表示することです。 JVM${PID} プロセスのPIDを以下に置き換えてください:
kubectl -n instana-agent exec -it ${INSTANA_AGENT_POD} -c instana-agent -- /bin/bash
nsenter -n -t ${PID} iptables -t nat -n -L INSTANA_OUTPUT
チェーンが適用されている場合は、次のような出力が表示されます。
Chain INSTANA_OUTPUT (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 10.128.15.237
ACCEPT tcp -- 0.0.0.0/0 10.64.0.1
ACCEPT tcp -- 0.0.0.0/0 169.254.123.1
次のコマンドを実行して、 Instana エージェントと JVM プロセス間の双方向通信がサポートされているか確認してください:
nsenter -n -t ${PID} iptables -t nat -n -L INSTANA_INBOUND
結果は、以下の出力のようになります。
Chain INSTANA_INBOUND (1 references)
target prot opt source destination
ACCEPT tcp -- 10.128.15.237 10.64.0.14
ACCEPT tcp -- 10.64.0.1 10.64.0.14
ACCEPT tcp -- 169.254.123.1 10.64.0.14
iptablesルールが適用されたタイミングによっては、プロセスの計測が完了し、 Instana のダッシュボードにデータが表示されるまで数分かかる場合があります。
トラブルシューティングの注意事項
Kubernetes クラスターも名前空間も表示されないのはなぜ?
Kubernetes ページにクラスターまたは名前空間がリストされていない場合は、エージェントがインストールされていないためにアクティブにモニターされているクラスターがないか、選択した時間フレーム中にモニターされているクラスターがありません。
「Live」 をクリックして、ライブモードでクラスターやネームスペースが存在するか確認してください。何も表示されない場合は、 Kubernetesに Instana エージェントをインストールする必要があります。
ClusterRole 権限がない
監視対象の種類: kubernetes_missing_permissions
Kubernetes クラスターを正常にモニターできるようにするには、Instana エージェントに特定のリソースに対する適切な ClusterRole 権限が必要です。 これらの権限がない場合、 Instana の Kubernetes ダッシュボード上で、対応するリソースが表示されません。 この問題を解決するには、 Instana Agent( YAML )、 Helm チャート、またはOperatorの最新バージョンをインストールしてください。 各インストール方法の最新バージョンに関する詳細については、 Kubernetes または OpenShift を参照してください。
カスタムリソースの監視
Kubernetes のカスタムリソース(CR)を監視するには、 InstanaClusterRole エージェントに必要な権限を付与する個別のルールを設定したリソースを作成する必要があります。 この設定により、クラスタ内のカスタムリソースに k8sensor アクセスし、監視できるようになります。
カスタムリソースの監視用 ClusterRole の作成
ClusterRole します。 次の例は、 ClusterRole の基本的な設定を示しています:apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: instana-crmon
rules:
- apiGroups: ["your.custom.group"]
resources: ["yourcustomresources"]
verbs: ["get", "list", "watch"]
を、カスタムリソースの API グループに your.custom.group 置き換え、 yourcustomresources を、カスタムリソースタイプの複数形に置き換える必要があります。 監視したいカスタムリソースタイプごとに、必要に応じてルールを追加できます。 テスト環境において resources 、セキュリティ上のリスクがない場合は、すべてのカスタムリソースに一致させるために apiGroups 、`*` ["*"] ワイルドカードを使用することもできます。
本番環境では、最小権限の原則に従うことが推奨されるため、このような過度に寛容なアクセス設定は推奨されません。
ClusterRoleBinding の作成
ClusterRole、 Instana エージェントの と ServiceAccount ClusterRole を紐付けるために ClusterRoleBinding を作成する必要があります:apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: instana-crmon
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: instana-crmon
subjects:
- kind: ServiceAccount
name: instana-agent-k8sensor
namespace: instana-agent
[ subjects セクション]内の[フィールド namespace ]が、 Instana エージェントがデプロイされている名前空間と一致していることを確認してください。 エージェントを別のネームスペースにインストールした場合は、その内容に合わせて値を更新してください。
これらのリソースを適用すると、 Instanak8sensor はカスタムリソースを監視するために必要な権限を取得します。
ログの収集
k8sensor およびKubernetes環境のログを収集するには、以下の手順に従ってスクリプト mustgather を使用して診断情報を収集できます
ログ収集の手順
サービスビリティ・リポジトリをクローンします。
agent/k8sディレクトリーに移動します。そのディレクトリ内の
README.mdファイルに記載されている手順を読み、前提条件が満たされていること、およびクラスタにログインしていることを確認してください。instana-k8s-mustgather.shを実行します。スクリプトの実行が完了すると、チケットの対応に必要なすべての診断情報が記載されたファイル
.tgzが生成されます。図 2. MustGather 出力 
トラブルシューティングのためのデバッグログの有効化
k8sensor は、トラブルシューティングのためにさまざまなログレベルに対応しています。 デフォルトでは、 k8sensor は レベル info でログを記録します。 問題を調査する際は、より詳細な診断情報を取得するために、一時的にログレベルを debug 有効にすることができます。
次のいずれかの方法で、デバッグログを有効にできます:
Instana エージェントのカスタムリソースの使用
- Instana エージェントのカスタムリソースを編集します:
kubectl edit instanaagent -n instana-agent instana-agent - 以下の
agent.envセクションを追加または変更してください:spec: agent: env: K8S_SENSOR_LOG_LEVEL: debug - 展開が完了するまでお待ちください。 次のコマンドを実行して、ロールアウトの状況を確認してください:
kubectl rollout status deployment/instana-agent-k8sensor -n instana-agent - k8sensor のログを確認し、デバッグログが有効になっていることを確認してください:
kubectl logs -n instana-agent deployment/instana-agent-k8sensor --tail=50 | grep -i "level.*debug" - 該当する場合は、問題を再現して適切なログを取得してください。 それ以外の場合は、 k8sensor が通常のポーリング間隔(デフォルト:10秒ごと)でデータを収集するまで、数分間お待ちください。
- ログを記録する。 ログの収集方法の詳細については、 「ログの収集」 を参照してください。
- デバッグログを無効にするには、 Instana エージェントのカスタムリソースを再度編集し、ログレベルを次のように変更してください
info:spec: agent: env: K8S_SENSOR_LOG_LEVEL: info
Helm のグラフを使用する
- Helm のインストール環境を、デバッグログレベルで更新してください:
helm upgrade instana-agent \ --repo https://agents.instana.io/helm \ --namespace instana-agent \ --set agent.env.K8S_SENSOR_LOG_LEVEL=debug \ --reuse-values \ instana-agent - 展開が完了するまでお待ちください。 次のコマンドを実行して、ロールアウトの状況を確認してください:
kubectl rollout status deployment/instana-agent-k8sensor -n instana-agent - k8sensor のログを確認し、デバッグログが有効になっていることを確認してください:
kubectl logs -n instana-agent deployment/instana-agent-k8sensor --tail=50 | grep -i "level.*debug" - 該当する場合は、問題を再現して適切なログを取得してください。 それ以外の場合は、 k8sensor が通常のポーリング間隔(デフォルト:10秒ごと)でデータを収集するまで、数分間お待ちください。
- ログを記録する。 ログの収集方法の詳細については、 「ログの収集」 を参照してください。
- デバッグログを無効にするには、 Helm のインストールを再度更新してください:
helm upgrade instana-agent \ --repo https://agents.instana.io/helm \ --namespace instana-agent \ --set agent.env.K8S_SENSOR_LOG_LEVEL=info \ --reuse-values \ instana-agent