CRI-O のモニタリング

「 Instana 」エージェントをインストールすると、「 CRI-O 」センサーが自動的に展開およびインストールされます。

概要

Instana CRI-O のコンテナを自動的に検出して監視し、メタデータ(ラベル)、メトリクス、および検出された各コンテナ内で実行されているサポート対象のテクノロジー に関するリアルタイムの情報を提供します。

各コンテナーの正常性をモニタリングし、問題のアラートを受信するとともに、サービス・ディスカバリー を有効にして、すべてのコンテナー情報を活用することもできます。

サポート情報

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

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

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

テクノロジー サポート・ポリシー 最新技術バージョン サポートされる最新バージョン
CRI-O 45 日間 1.36.1 1.36.1

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

前提条件

CRI‑Oを監視するには、以下のバージョン要件を満たしていることを確認してください:

  • Instana 対応OS: 1.2.19 以降
  • CRI‑Oセンサー: 1.0.15 以降

CRI-O の監視設定

このエージェントは CRI-O をネイティブに監視するため、設定は任意です。

ポーリングレートの設定

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

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

com.instana.plugin.crio:
  poll_rate: 1 # values are in seconds. Default value is 1 second.

メトリック収集

コンテナのCPUおよびメモリ使用状況の概要を確認するには、インフラストラクチャマップで 「メトリクス概要 」オプションを有効にしてください。 また、ダイナミック・フォーカス 機能を使用して、コンテナーのコンテキスト内でインフラストラクチャーの一部を識別し、分離することもできます。

デフォルトでは、CRI-O メトリックは 10 秒ごとに収集されます。 この間隔は、エージェント構成ファイル <agent_install_dir>/etc/instana/configuration.yml内で構成できます。

com.instana.plugin.crio:
  stats:
    interval: 10
 

CRI-O のコンテナダッシュボードには、コンテナの設定とパフォーマンス指標が表示されます。

コンテナを一時停止する

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

デフォルトでは、以下の理由により、インフラ (一時停止) コンテナーはインフラ・モニターから除外されます。

  • 環境内のモニター対象コンテナーの数は、含まれるときに 2 倍になります。 この除外により、Instana のモニター・コストを削減できます。
  • 一時停止コンテナーは、サイドカー・ネットワーク・ヘルパー・コンテナーとして機能するため、インフラストラクチャー・レベルではあまり多くの情報を提供しません。

構成データ

構成 説明
ID コンテナー ID
名前 コンテナ名
画像 CRI-O の画像名
IP コンテナのIPアドレス
作成日 コンテナの作成日時
CRI-Oバージョン CRI-O のランタイムのバージョン番号

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

パフォーマンス指標を収集するには、コマンドを実行 runc してください。

次の表は、CPUおよびメモリの使用状況に関する指標をまとめたものです:

メトリック 説明 データ・ポイント
CPU 合計 % CPU使用率の合計 cpu.usage オブジェクト内に返されるキーの総数
メモリー使用率 合計メモリー使用量 オブジェクトmemory.raw 内に返された使用キー
メモリー使用率 メモリ使用率(パーセント) およびmemory.usage オブジェクトmemory.total から計算されます

CPUメトリクスの収集

CRI-O センサーがメトリクスの収集を実行し、cgroupのCPU解析をエージェントに委ねます。 パーサーは、各cgroupのディレクトリパスからCPUステータスファイルを読み込みます。

パース処理の後、 CRI-O センサーから、CPUメトリクスが設定されたCPUオブジェクトが返されます。

以下の手順は、 CRI-O における CPU メトリクスの収集および解析のプロセスを概説したものです:

  1. cgroup ディレクトリパスの特定:エージェントは、OS プロセスに基づいて cgroup のバージョン( v1 または v2 )およびそれぞれの cgroup ディレクトリパスを特定します:

    • cgroup v2:/proc/1/root/sys/fs/cgroup および cgroupPath
    • cgroup v1:/proc/1/root/sys/fs/cgroup/cpu および cgroupPath
  2. cgroup( v2 および v1 )ディレクトリのCPU統計情報の解析:パーサーは、それぞれのcgroupディレクトリパスからCPUファイルを読み込みます。

    • v2 ディレクトリのcgroupについては:

      次の表は、CPU オブジェクト内の ファイル cpu.stat から取得される使用状況およびスロットリングのメトリクスを一覧にしたものです:

      メトリック 説明 v2 ソース
      使用量メトリック CPU使用率合計(ナノ秒単位) total =usage_usec * 1000 cpu.stat file
      CPU使用率 percpu = 0(cgroup v2 は、CPU ごとの使用率を直接提供しない) cpu.stat file
      ユーザー CPU 時間 user =user_usec * 1000(ナノ秒単位) 以下の注記を参照してください cpu.stat file
      システム CPU 時間 kernel =system_usec * 1000(ナノ秒単位) 以下の注記を参照してください cpu.stat file
      スロットリングのメトリクス 期間数 periods =nr_periods cpu.stat file
      スロットリングが適用された期間の数 throttledPeriods =nr_throttled cpu.stat file
      スロットル時間 throttledTime =throttled_usec * 1000(ナノ秒単位) cpu.stat file
      注: 構文解析を行うには、と の user_usec 両方が利用 system_usec 可能である必要があります。 どちらかが利用できない場合、対応するCPU時間は に設定されます 0
    • v1 ディレクトリのcgroupについては:

      次の表は、CPUオブジェクト内のcgroup「 v1 」の使用状況およびスロットリングメトリクスを示しています

      メトリック 説明 v1 ソース
      使用量メトリック CPU使用率合計(ナノ秒単位) total cpuacct.usage file
      CPU使用率 percpu ファイルcpuacct.usage_percpu から値のリストを設定します
      ユーザー CPU 時間 user =user * 1000000 (ナノ秒) cpuacct.stat file
      システム CPU 時間 kernel =system * 1000000 (ナノ秒) cpuacct.stat file
      スロットリングのメトリクス 期間数 periods =nr_periods cpu.stat file
      スロットリングが適用された期間の数 throttledPeriods =nr_throttled cpu.stat file
      スロットル時間 throttledTime =throttled_time cpu.stat file
  3. CPU メトリクスの更新と返却:

    次の表は、CPU メトリクスとそれに対応するソースオブジェクトとの包括的な対応関係を示しています:

    CPU メトリック ソース・オブジェクト
    CPU使用率の指標 cpu.usage オブジェクト
    cpuTotalUsageNanoseconds cpu.usage.total
    cpuSystemUsageNanoseconds cpu.usage.kernel
    cpuUserUsageNanoseconds cpu.usage.user
    cpuTotalUsage cpuTotalUsageNanoseconds (コンテナの一定期間における総CPU使用時間) ÷system delta (利用可能なシステムCPU時間の合計)
    cpuUserUsage cpuUserUsageNanoseconds delta(指定された時間枠におけるコンテナのユーザーモードでのCPU使用時間) /system delta (利用可能なシステム全体のCPU時間)
    cpuSystemUsage cpuSystemUsageNanoseconds delta(特定の時間枠における、システムモードまたはカーネルモードでのコンテナのCPU使用時間) / (利用system delta 可能なシステムCPU時間の合計)
    スロットリングのメトリクス cpu.throttling オブジェクト
    throttlingCount cpu.throttling.throttledPeriods
    throttlingTime cpu.throttling.throttledTime
  4. バックエンドから Instana のUIにCPUメトリクスを表示する:

    次の表は、 Instana のUIに表示されるCPUメトリクスの概要を示しています:

    CPU メトリック 説明 ソース値
    Total (cpu.total_usage) 合計 CPU 使用量 cpuTotalUsage
    Kernel (cpu.system_usage) System CPU usage cpuSystemUsage
    User (cpu.user_usage) ユーザーのCPU使用率 cpuUserUsage
    Throttling Count (cpu.throttling_count) スロットリングが適用された期間の数 throttlingCount
    Throttling Time (cpu.throttling_time) スロットル時間 throttlingTime

メモリメトリクスの収集

CRI-O センサーがメトリクスの収集を実行し、cgroupメモリの解析をエージェントに委ねます。 メモリパーサーは、各cgroupのディレクトリパスからメモリファイルを読み込みます。 パース処理の後、 CRI-O センサーから、メモリメトリクスが格納されたメモリオブジェクトが返されます。

以下の手順は、 CRI-O におけるメモリメトリクスの収集および解析のプロセスを概説したものです:

  1. cgroup ディレクトリパスの特定:エージェントは、OS プロセスに基づいて cgroup のバージョン( v1 または v2 )およびそれぞれの cgroup ディレクトリパスを特定します:

    • cgroup v2:/proc/1/root/sys/fs/cgroup および cgroupPath
    • cgroup v1:/proc/1/root/sys/fs/cgroup/memory および cgroupPath
  2. cgroupディレクトリのメモリ統計情報の解析:パーサーは、各cgroupディレクトリのパスからメモリファイルを読み込みます。

    • v2 ディレクトリのcgroupについては:

      次の表は、メモリメトリクスとそれに対応するソースファイルとの包括的な対応関係を示しています:

      メモリーのメトリック ソース・ファイル
      ベースメモリ ベースメモリファイル
      usage memory.stat (file +anon)
      limit memory.max
      max memory.peak
      スワップ・メモリー スワップファイル
      usage memory.swap.current
      limit memory.swap.max
      max memory.swap.peak
      生メモリフィールド (memory.raw) memory.stat file
      activeAnon active_anon
      activeFile active_file
      inactiveAnon inactive_anon
      inactiveFile inactive_file
      totalCache total_cache
      totalRss total_rss
      メモリ領域 (memory) memory.stat file
      cache file
      rss anon
      注:v1 との互換性を確保するため、合計スワップメモリはベースメモリとスワップメモリの合計として計算されます: swap.usage = ベースメモリ使用量 + swap.usage。 swap.limit = ベースメモリ制限 + swap.limit swap.max = 0
    • v1 ディレクトリのcgroupについては:

      次の表は、メモリメトリクスとそれに対応するソースファイルとの包括的な対応関係を示しています:

      メモリーのメトリック ソース・ファイル
      ベースメモリ ベースメモリファイル
      usage memory.usage_in_bytes
      max memory.max_usage_in_bytes
      limit memory.limit_in_bytes
      failcnt memory.failcnt
      スワップ・メモリー スワップファイル
      usage memory.memsw.usage_in_bytes
      max memory.memsw.max_usage_in_bytes
      limit memory.memsw.limit_in_bytes
      failcnt memory.memsw.failcnt
      カーネル・メモリー Kmemoryファイル
      usage memory.kmem.usage_in_bytes
      max memory.kmem.max_usage_in_bytes
      limit memory.kmem.limit_in_bytes
      failcnt memory.kmem.failcnt
      カーネル TCP メモリ Kmemoryの TCP ファイル
      usage memory.kmem.tcp.usage_in_bytes
      max memory.kmem.tcp.max_usage_in_bytes
      limit memory.kmem.tcp.limit_in_bytes
      failcnt memory.kmem.tcp.failcnt
      生のメモリフィールド v2 と同様の分野memory.stat
      メモリ領域 (memory) memory.stat file
      cache cache
      rss total_rss
  3. メモリメトリクスの更新と返却:

    次の表は、メモリメトリクスとそれに対応するソースオブジェクトの対応関係を示しています:

    メモリメトリクス ソース・オブジェクト
    メモリ使用量の指標 memory.usage オブジェクト
    usage memory.usage.usage
    maxUsage memory.usage.max
    limit memory.usage.limit
    メモリの生データ memory.raw オブジェクト
    activeAnon memory.raw.activeAnon
    activeFile memory.raw.activeFile
    inactiveAnon memory.raw.inactiveAnon
    inactiveFile memory.raw.inactiveFile
    メモリーのメトリック memory オブジェクト
    totalCache memory.cache
    totalRss memory.rss
  4. バックエンドから Instana のUIにメモリメトリクスを表示する:

    Instana のUIには、以下のメモリメトリクスが表示されます:

    メトリック ソース値
    Memory Total RSS% (memory.total_rss_percent) total_rss/limit
    Active anonymous (memory.active_anon) activeAnon
    Active cache (memory.active_file) activeFile
    Inactive anonymous (memory.inactive_anon) inactiveAnon
    Inactive cache (memory.inactive_file) inactiveFile
    Usage (memory.usage) usage
    RSS (memory.total_rss) totalRss
    Cache (memory.total_cache) totalCache

ブロックI/Oメトリクスの収集

CRI-O センサーがメトリクスの収集を実行し、cgroupのblk-io解析をエージェントに委ねます。 Block IO パーサーは、各 cgroup のディレクトリパスから blk-io 統計ファイルを読み込みます。 パース処理の後、 CRI-O センサーから、IO統計情報が設定されたBlkioオブジェクトが返されます。

以下の手順は、 CRI-O におけるブロック I/O メトリクスの収集および解析のプロセスを概説したものです:

  1. cgroup ディレクトリパスの特定:エージェントは、OS プロセスに基づいて cgroup のバージョン( v1 または v2 )およびそれぞれの cgroup ディレクトリパスを特定します:

    • cgroup v2:/proc/1/root/sys/fs/cgroup + cgroupPath
    • cgroup v1:/proc/1/root/sys/fs/cgroup/blkio + cgroupPath
  2. cgroupディレクトリのブロックI/O統計情報の解析:パーサーは、各cgroupディレクトリのパスからブロックI/Oファイルを読み込みます。

    • v2 ディレクトリのcgroupについては:

      • ファイル io.stat を読み込み、IOステータスエントリを含む2つのリストを返す

        • ioServiceBytesRecursive リスト:I/Oサービスバイトの一覧
        • ioServicedRecursive リスト:I/O処理済みリスト
      • ファイル io.stat 内の生の操作を標準的な操作に変換します:

        • rbytes/rios: 読む
        • wbytes/wios: 書く
      注: この操作により、IOStat rbytes/wbytes のエントリが値とともにリスト IoServiceBytesRecursive に追加されます。 この操作により、IOStat rios/wios のエントリが値とともにリスト IoServicedRecursive に追加されます。
    • v1 ディレクトリのcgroupについては:

      • ファイルを blkio.io_service_bytes 解析し、サービスのバイト単位のI/O統計情報を直接設定します。(ioServiceBytesRecursive リスト)
      • ファイルを blkio.io_serviced 解析し、サービス対象のI/O統計情報を直接設定します。(ioServicedRecursive リスト)
  3. メジャーおよびマイナーデバイス番号を、IO statオブジェクトの各フィールドにマッピングする。

  4. major、minor、operation、および値を含む2つのIOステータスエントリのリストを持つBlkioオブジェクトをエージェントに返す:

    リスト 説明
    ioServiceBytesRecursive I/Oサービスバイトの一覧
    ioServicedRecursive 対応I/Oの一覧
  5. リスト IOServiceBytesRecursive 内の および totalWrite totalRead の値を合計する:

    リスト ソース
    totalRead ioServiceBytesRecursive.ioStat.value (読み取ったすべての値を合計する)
    totalWrite ioServiceBytesRecursive.ioStat.value (すべての書き込み値を合計する)
  6. バックエンドから Instana のUIにブロックI/Oメトリクスを表示する:以下の表は、 Instana のUIに表示されるブロックI/Oメトリクスの概要を示しています:

    メトリック ソース値
    読む (blkio.blk_read) totalRead
    書き込む (blkio.blk_write) totalWrite

正常性シグニチャー

センサーごとに、着信メトリックに対して継続的に評価され、ユーザーへの影響に応じて問題またはインシデントを提起するために使用される正常性シグニチャーのキュレーション済み知識ベースがあります。

組み込みイベントは、エンティティのヘルスシグネチャの異常に基づいて課題やインシデントをトリガーし、 カスタムイベントは、任意のエンティティの個々のメトリクスのしきい値に基づいて課題やインシデントをトリガーします。

CRI-O センサーの組み込みイベントについては、 組み込みイベントのリファレンスを参照してください。

ログウィジェット

CRI-O センサーは、ネイティブでのログ収集に対応していません。 Instana CRI-O コンテナからログを収集するために、 OpenTelemetry Collectorを展開するには、 「 Kubernetes および Red Hat OpenShift ログの収集 」の手順に従うことをお勧めします。 ログを特定の CRI-O コンテナに関連付けるには、リンク先の説明に従って 属性を container.runtime 追加してください。