Containerd のモニタリング

Instana ホストエージェントをインストールすると、Containerdセンサーが自動的にインストールされます。

設定 」セクションの手順に従ってContainerdセンサーを設定すると、 Instana のUIでContainerdに関連するメトリクスを確認できるようになります。

サポート情報

Containerdセンサーが現在の環境と互換性があるかどうかを確認するには、以下のサポート情報セクションをご確認ください:

サポート対象のオペレーティング・システム

Containerdセンサーの対応OSは、ホストエージェントの要件と一致しています。これについては、各ホストエージェントの「 対応OS 」セクションで確認できます。例えば、 「 Unix の対応OS 」などです。

対応バージョンとサポート方針

このセンサーは、以下のバージョンのContainerdに対応しています:

  • 1.6.x
  • 1.7.x
  • 2.0.x

以下の表は、最新のサポート対象バージョンとサポート方針を示しています:

テクノロジー サポート・ポリシー 最新技術バージョン サポートされる最新バージョン
コンテナー化 45 日間 2.3.2 2.3.1

サポートポリシーに関する詳細については、 「センサーのサポート戦略」 を参照してください。

サポートされる環境

環境内で Docker または Garden のコンテナが実行されている場合、同じコンテナに対して複数のセンサーが不必要に監視を行うことを防ぐため、Containerdセンサーは自動的に無効化されます。

対応コンテナ

一時停止コンテナーを除き、Containerd コンテナー・ランタイムを実行するすべてのコンテナーがサポートされます。

一時停止コンテナーは、ポッドのネットワーク名前空間を保持するコンテナーです。 Kubernetes は一時停止コンテナーを作成して、各ポッドの IP アドレスを取得し、そのポッドに参加する他のすべてのコンテナーのネットワーク名前空間をセットアップします。

一時停止コンテナーは、以下の理由でサポートされません。

  • 一時停止コンテナーのモニターは、サイドカー・ヘルパー・コンテナーとして機能するため、インフラストラクチャー・レベルではあまり多くの情報を提供しません。
  • 一時停止中のコンテナを含めると、環境内で監視対象となるコンテナの数が2倍になり、その結果、 Instana の監視コストが増加します。

対応しているコンテナオーケストレーションプラットフォーム

Kubernetes のほとんどのディストリビューション(例えば、kubeadmを搭載したアップストリームの Kubernetes、 GKE、EKS、および AKS など)では、デフォルトのコンテナランタイムとしてContainerdが使用されます。 ただし、 CRI-O コンテナランタイムを使用する OpenShift, については、この限りではありません。 OpenShift, などの Kubernetes クラスタにおいて、 Instana はCRIOセンサー を通じて CRI-O のコンテナメトリクスの収集をサポートしています。 CRIOセンサーでは、 CRI-O コンテナのログ収集は直接サポートされていません。そのため、 CRI-O をコンテナランタイムとして使用する以下の Kubernetes ディストリビューションにおいて、 CRI-O コンテナのログを収集するには、 OpenTelemetry Collector の使用をお勧めします。

の構成

Containerdセンサーは、コンテナのメタデータを取得します。これには、 Instana のUIにある 「 Kubernetes 」 の「Labels」タブに表示される Kubernetes ラベルも含まれます。 対応している Kubernetes 環境では、CRI( API )インターフェースを使用します。

Kubernetes では、環境変数を設定することで INSTANA_USE_CONTAINERD_CRI_CLIENT 、ネイティブの CRI- API クライアントを有効にできます(デフォルト値: true)。この変数を に設定すると true、センサーの設定で別のソケットが指定されていない限り、通常 は /var/run/containerd/containerd.sock Containerd ソケットを使用してコンテナのメタデータが収集されます。

注: フラグ INSTANA_USE_CONTAINERD_CRI_CLIENT が false に設定されている場合、または Kubernetes クラスタが CRI- API をサポートしていない場合、センサーは crictl バイナリの使用に切り替わります。 この crictl バイナリは、 Instana エージェントには同梱されていません。 Instana のホストエージェントがインストールされ、エージェントコンテナから利用可能な状態になっているホストサーバーにインストールする必要があります。 インストール後、ホストエージェントが実行されているユーザーの環境 $PATH 変数に、バイナリ crictl のパスを追加してください。 コマンドラインツール crictl がインストールされていない場合、ContainerdセンサーによるCPUおよびメモリ使用量のパフォーマンスメトリクスの収集は機能しますが、コンテナに関連付けられた Kubernetes ラベルは、 Instana UIの 「 Kubernetes 」 タブに表示されません。 また、コンテナのログ収集は引き続き無効なままです。 ログ収集の詳細については、 「Containerd-Log センサーの設定」 を参照してください。

Containerd センサーの設定

以下の例に示すように、 エージェント設定ファイルでContainerdセンサーを設定できます:

  com.instana.plugin.containerd:
    enabled: true
    poll_rate: 10
    unixSockets:
      - '/path/to/containerd.sock'
 
パラメーター 説明 必須またはオプション 値の範囲
com.instana.plugin.containerd.enabled Containerd センサーを有効にするためのフラグ。 オプション false またはtrue。 デフォルト:true
poll_rate プラグインのポーリング間隔を秒単位で設定します。 オプション 1~3600。

デフォルト: 10

com.instana.plugin.containerd.unixSockets 利用可能になった時期:Containerdセンサー 1.0.30。

ファイル containerd.sock への完全修飾パス一覧。 このセンサーには、ディレクト /var/run//run/ リとディレクトリ内のファイルを containerd.sock 自動的に検出する機能があります。 ソケットに別のロケーションが構成されている場合は、完全修飾パスを追加する必要があります。

オプション 完全修飾ファイル・パスのリスト。

ポーリングレートの設定

注:Instana のContainerdセンサー( 1.0.46 以降)では、データ取り込み量を削減するためにポーリングレートを設定できるようになっています。 この機能は、セルフホスト型の Instana バックエンド311以降でサポートされています。

以下の例に示すように、agent configuration.yaml ファイル poll_rate 内のパラメータを使用して、 Instana がデータやメトリクスを収集するためにContainerdをポーリングする頻度を設定できます

com.instana.plugin.containerd:
  poll_rate: 10

メトリック収集の有効化

1.2.0ctr 以降のバージョンのContainerdセンサーは、` ctr task metrics command`を使用してメトリクスを自動的に収集できます。 この場合、メトリック収集を手動で有効にする必要はありません。

1.2.0ctr およびそれ以前のバージョンのContainerdセンサーは、この metrics コマンドをサポートしていません。 1.2.0 またはそれ以前 ctr のバージョンを使用している場合、センサーは Prometheus エンドポイントからメトリクスを取得しようとします。 Prometheus エンドポイントを有効にするには、 /etc/containerd/config.toml 構成ファイルで「metrics」アドレス "127.0.0.1:1338" を指定してから、 containerd.serviceを再始動する必要があります。

[metrics]
  address = "127.0.0.1:1338"
 

メトリックの表示

メトリックを表示するには、以下のステップを実行します。

  1. Instana のUIのサイドバーで、「インフラストラクチャ」を選択します。
  2. Containerd コンテナーを持つホストをクリックします。

収集されたすべてのメトリックとモニター対象プロセスを含むホスト・ダッシュボードを表示できます。

コンテナの詳細を表示

コンテナーの詳細をフェッチするには、 「コンテナー情報の取得」をクリックします。

以下の情報が表示されます。

  • コンテナー ID
  • 画像
  • 作成日時
  • 更新時刻
  • Containerd 名前空間
  • ラベル

パフォーマンス・メトリック

メトリック 説明 粒度
CPU 使用率 メトリックには、合計 CPU 使用量、カーネル CPU 使用量、ユーザー CPU 使用量、および正規化された CPU 使用量が含まれます。 10 秒
CPU スロットル スロットルの時間およびカウント 10 秒
メモリー使用率 メトリックには、合計メモリー使用量 (バイト単位)、常駐セット・サイズ (バイト単位)、キャッシュ使用量 (バイト単位)、合計メモリー使用量 (パーセント単位)、および実効ページ・セット使用量 (パーセント単位) が含まれます。 10 秒
アクティブなメモリー 匿名およびキャッシュ・アクティブ・メモリーの量 10 秒
非アクティブ・メモリー 匿名メモリーとキャッシュ非アクティブ・メモリーの量 10 秒
ブロック I/O モニター対象コンテナーがブロック・デバイスに書き込んだりブロック・デバイスから読み取ったりするデータの量 (バイト単位) 10 秒

派生したパフォーマンス指標

Instana のUIでは、以下の派生メトリクスを確認できます:

  • CPU 合計 (正規化)
  • メモリー使用率 (%)
  • メモリー実効ページ・セット使用率 (%)

正規化されたCPU使用率の合計

CPU Total Normalized メトリックは、コンテナーの正規化された CPU 使用率 (%) です。 値の範囲は 0% から 100% です。 メトリックは、 total_normalized_cpu_usage_percentage = cpu_total_usage / cpu_limit という数式を使用して計算されます。

cpu_limit の値は、デプロイされるコンテナーの構成によって異なります。 デプロイされるコンテナーの構成に cpu_limit が指定されていない場合、 total_normalized_cpu_usage_percentage メトリックの値は不明です。

メモリー使用率

Memory Usage % メトリックは、常駐セット・サイズおよびファイル・システム・キャッシュ使用量を含む、メモリー使用率 (%) です。 メトリックは、 metric_usage_percentage = memory_used / memory_limit という数式を使用して計算されます。

memory_limit メトリックの値は、デプロイされるコンテナーの構成によって異なります。 デプロイされるコンテナーの構成に memory_limit が指定されていない場合、 memory_used メトリックの値は不明です。

ワーキングセットの使用量

Memory Working Set Usage % は、ファイル・システム・キャッシュを除いたメモリー使用率 (%) です。 メトリックは、 memory_working_set_usage_percentage = (memory_used - total_inactive_file)/ memory_limit という式を使用して計算されます。

memory_limit 値は、コンテナーのデプロイメント構成によって異なります。 memory_limit がコンテナーのデプロイメント構成で指定されていない場合、 memory_working_set_usage_percentage は提供されません。

Containerdのログを表示する

注: Containerdのログを取り込むには、ライセンスにロギングアドオンが含まれている必要があります。 ライセンスを確認するには、先に 「ライセンスおよび利用権の要件」 をご覧ください。

Containerdのログ収集は、Containerdセンサーのバージョン 1.0.30 以降でサポートされています。

注: Containerd センサーの CRI- API クライアントが無効になっている場合、またはエージェントが実行 crictl ファイルにアクセスできない場合、Containerd センサーはログを収集しません。 詳細については、 「設定 」のセクションを参照してください。

この機能を有効にすると、Containerd センサーはファイルに書き込まれるコンテナログのみを収集します。これは、 Instana が現在、ログエントリをファイルに書き込むデフォルトのロギングドライバのみをサポートしているためです。

例えば、 Kubernetes デプロイメントでは、Containerd ログは /var/log/pods/{namespace}_{podName}_{podUID}/{containerName} ディレクトリー内のファイルに書き込まれる可能性があります。

Instana のUIで [Analytics] > [Logs] をクリックすると、収集されたログを確認できます。また、「Container Snapshot Id」フィルターを使用すると、 Docker とContainerdの両方のログメッセージをフィルタリングできます。

Containerd-Logセンサーの設定

logs エージェントの設定ファイル内の セクションを使用して、以下の例に示すように Containerd-Log センサーを設定できます。
  com.instana.plugin.containerd:
    enabled: true
    poll_rate: 10
    logs:
      enabled: true
      sendInterval: 60
      maxBufferSize: 16777216
    unixSockets:
      - '/path/to/containerd.sock'

追加のログ設定パラメータについては、次の表に説明があります:

パラメーター 説明 必須またはオプション 値の範囲
com.instana.plugin.containerd.logs.enabled

利用可能になった時期:Containerdセンサー 1.0.30。

Containerd センサーのログ収集を有効にするフラグ。

オプション

true またはfalse

デフォルト: false

com.instana.plugin.containerd.logs.sendInterval

利用可能になった時期:Containerdセンサー 1.0.30。

コンテナのログがバックエンドにアップロードされるまで、log-sensor内にキャッシュされる最大時間(秒単位)。

オプション

1 から 600。

既定値: 60

com.instana.plugin.containerd.logs.maxBufferSize

利用可能になった時期:Containerdセンサー 1.0.30。

内部ログバッファの最大サイズ(バイト単位)。 内部ログバッファの内容が指定されたサイズを超えた場合、ログセンサーはその内容を Instana バックエンドに書き出します。

オプション

1000 から 32000000。

既定値: 16777216 (16 MB)