Collector のトラブルシューティング
Collector のトラブルシューティング
概要
第1章 Collector ログと Pod ステータスの取得と分析
トラブルシューティングの最初のステップは、ログと Pod のステータスを取得することです。ログにより、エラーの根本原因を特定できます。さらに、Pod の最新のステータスを調べると、失敗メッセージに関する情報が得られます。
1.1. Collector ログの取得
まず、失敗した Collector からのログを調べる必要があります。環境とアクセス権限に応じて、次の 2 つの方法でこれらのログを取得できます。
1.1.1. oc または kubectl コマンドによるログの取得
oc または kubectl コマンドを使用して、実行中の Collector Pod からログを取得できます。(オプション) 現在の Collector Pod が再起動している場合は、以前の Collector Pod のログを確認することもできます。
前提条件
Pod とログを一覧表示する権限があることを確認します。
$ oc auth can-i get pods && oc auth can-i get pods --subresource=logs 1- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlと入力します。
手順
ラベル
app=collectorが付いたすべての Pod を一覧表示します。$ oc get pods -n stackrox -l app=collector 1- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlと入力します。
出力例
collector-vclg5 1/2 CrashLoopBackOff 2 (25s ago) 2m41s+
Collector Pod のログを取得します。
$ oc logs -n stackrox <collector_pod_name> collector 1
- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlと入力します。<collector_pod_name>には、Collector Pod の名前 (collector-vclg5など) を指定します。
(オプション) 現在の Collector Pod が再起動している場合は、以前の Collector Pod のログを確認できます。
$ oc logs -n stackrox <collector_pod_name> collector --previous 1
- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlと入力します。<collector_pod_name>には、Collector Pod の名前 (collector-vclg5など) を指定します。
1.1.2. RHACS 診断バンドルからのログの取得
Red Hat Advanced Cluster Security for Kubernetes (RHACS) ユーザーインターフェイスから診断バンドルをダウンロードして、Collector ログにアクセスすることもできます。診断バンドルをダウンロードしたら、すべての Collector Pod のログを調べることができます。詳しくは、診断バンドルの生成 を参照してください。
1.2. Collector Pod のステータスの分析
Pod の最新のステータスを調べることは、Collector のクラッシュの原因を特定するもう 1 つの簡単な方法です。失敗メッセージは最新の状態に記録され、kubectl describe pod または oc describe pod コマンドを使用してアクセスできます。
手順
Collector Pod について説明します。
$ oc describe pod -n stackrox <collector_pod_name> 1
- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlと入力します。<collector_pod_name>には、Collector Pod の名前 (collector-vclg5など) を指定します。
出力例
[...] Last State: Terminated Reason: Error Message: No suitable kernel object downloaded 1 Exit Code: 1 Started: Fri, 21 Oct 2022 11:50:56 +0100 Finished: Fri, 21 Oct 2022 11:51:25 +0100 [...]- 1
- この例では、Collector がカーネルドライバーのダウンロードに失敗したことがわかります。
第2章 よくあるエラー状態
ほとんどのエラーは、Collector が、自身を設定し、システムのカーネルドライバーを検索またはダウンロードする場合、Collector の起動時に発生します。
次の図は、Collector の起動プロセスの主要部分を示しています。
図2.1 Collector Pod の起動プロセス

起動手順の一部が失敗した場合、ログには、成功または失敗した手順の詳細を示す診断概要が表示されます。
次のログファイルの例は、正常な起動を示しています。
[INFO 2022/11/28 13:21:55] == Collector Startup Diagnostics: == [INFO 2022/11/28 13:21:55] Connected to Sensor? true [INFO 2022/11/28 13:21:55] Kernel driver available? true [INFO 2022/11/28 13:21:55] Driver loaded into kernel? true [INFO 2022/11/28 13:21:55] ====================================
ログ出力は、Collector が Sensor に接続し、カーネルドライバーを見つけてロードしたことを確認します。このログを使用して、Collector が正常に起動したかどうかを確認できます。
2.1. Sensor に接続できない
起動したら、まず Sensor に接続できるかを確認します。Sensor は、ネットワークイベントを処理するためのカーネルドライバーと CIDR ブロックのダウンロードを実行し、起動プロセスの重要な部分となっています。次のログは、Sensor に接続できないことを示しています。
Collector Version: 3.12.0 OS: Ubuntu 20.04.4 LTS Kernel Version: 5.4.0-126-generic Starting StackRox Collector... [INFO 2022/10/13 12:20:43] Hostname: 'hostname' [...] [INFO 2022/10/13 12:20:43] Sensor configured at address: sensor.stackrox.svc:9998 [INFO 2022/10/13 12:20:43] Attempting to connect to Sensor [INFO 2022/10/13 12:21:13] [INFO 2022/10/13 12:21:13] == Collector Startup Diagnostics: == [INFO 2022/10/13 12:21:13] Connected to Sensor? false [INFO 2022/10/13 12:21:13] Kernel driver available? false [INFO 2022/10/13 12:21:13] Driver loaded into kernel? false [INFO 2022/10/13 12:21:13] ==================================== [INFO 2022/10/13 12:21:13] [FATAL 2022/10/13 12:21:13] Unable to connect to Sensor.
このエラーは、Sensor が正しく起動していないか、Collector の設定が正しくないことを意味している可能性があります。この問題を解決するには、Collector の設定を確認して、Sensor アドレスが正しく、Sensor Pod が正しく実行されていることを確認する必要があります。
Collector ログを表示して、設定された Sensor アドレスを具体的に確認します。または、次のコマンドを実行できます。
$ kubectl -n stackrox get pod <collector_pod_name> -o jsonpath='{.spec.containers[0].env[?(@.name=="GRPC_SERVER")].value}' 1
- 1
<collector_pod_name>には、Collector Pod の名前 (collector-vclg5など) を指定します。
2.2. カーネルドライバーが利用できない
Collector は、ノードのカーネルバージョン用のカーネルドライバーがあるかどうかを判断します。Collector は、まずローカルストレージで正しいバージョンとタイプのドライバーを検索し、次に Sensor からドライバーをダウンロードしようとします。次のログは、ローカルカーネルドライバーも Sensor のドライバーも存在しないことを示しています。
Collector Version: 3.12.0 OS: Alpine Linux v3.14 Kernel Version: 5.10.109-0-virt Starting StackRox Collector... [INFO 2022/10/13 13:32:57] Hostname: 'alpine' [...] [INFO 2022/10/13 13:32:57] Sensor configured at address: sensor.stackrox.svc:9999 [INFO 2022/10/13 13:32:57] Attempting to connect to Sensor [INFO 2022/10/13 13:32:57] Successfully connected to Sensor. [INFO 2022/10/13 13:32:57] Module version: 2.2.0 [INFO 2022/10/13 13:32:57] Attempting to find kernel module - Candidate kernel versions: [INFO 2022/10/13 13:32:57] 5.10.109-0-virt [INFO 2022/10/13 13:32:57] Local storage does not contain collector-5.10.109-0-virt.ko [...] [INFO 2022/10/13 13:32:57] Attempting to download kernel object from https://sensor.stackrox.svc/kernel-objects/2.2.0/collector-5.10.109-0-virt.ko.gz 1 [WARNING 2022/10/13 13:32:58] [Throttled] Unexpected HTTP request failure (HTTP 404) 2 [WARNING 2022/10/13 13:33:08] [Throttled] Unexpected HTTP request failure (HTTP 404) [WARNING 2022/10/13 13:33:18] [Throttled] Unexpected HTTP request failure (HTTP 404) [WARNING 2022/10/13 13:33:29] [Throttled] Unexpected HTTP request failure (HTTP 404) [WARNING 2022/10/13 13:33:35] Attempted to download collector-5.10.109-0-virt.ko.gz 30 time(s) [WARNING 2022/10/13 13:33:35] Failed to download from collector-5.10.109-0-virt.ko.gz [WARNING 2022/10/13 13:33:35] Unable to download kernel object collector-5.10.109-0-virt.ko to /module/collector.ko.gz [ERROR 2022/10/13 13:33:35] Error getting kernel object: collector-5.10.109-0-virt.ko [INFO 2022/10/13 13:33:35] [INFO 2022/10/13 13:33:35] == Collector Startup Diagnostics: == [INFO 2022/10/13 13:33:35] Connected to Sensor? true [INFO 2022/10/13 13:33:35] Kernel driver available? false [INFO 2022/10/13 13:33:35] Driver loaded into kernel? false [INFO 2022/10/13 13:33:35] ==================================== [INFO 2022/10/13 13:33:35] [FATAL 2022/10/13 13:33:35] No suitable kernel object downloaded for kernel 5.10.109-0-virt 3
カーネルバージョン ファイルには、サポートされているすべてのカーネルバージョンのリストが含まれています。
2.3. カーネルドライバーのロードに失敗する
Collector が起動する前に、カーネルドライバーがロードされます。ただし、まれに、Collector がカーネルドライバーをロードできず、さまざまなエラーメッセージや例外が発生するという問題が発生する場合があります。このような場合、ログを確認して、カーネルドライバーのロードに失敗した問題を特定する必要があります。
次の Collector ログを検討してください。
[INFO 2022/10/13 14:25:13] Hostname: 'hostname' [...] [INFO 2022/10/13 14:25:13] Successfully downloaded and decompressed /module/collector.ko [INFO 2022/10/13 14:25:13] [INFO 2022/10/13 14:25:13] This product uses kernel module and ebpf subcomponents licensed under the GNU [INFO 2022/10/13 14:25:13] GENERAL PURPOSE LICENSE Version 2 outlined in the /kernel-modules/LICENSE file. [INFO 2022/10/13 14:25:13] Source code for the kernel module and ebpf subcomponents is available upon [INFO 2022/10/13 14:25:13] request by contacting support@stackrox.com. [INFO 2022/10/13 14:25:13] [...] [INFO 2022/10/13 14:25:13] Inserting kernel module /module/collector.ko with indefinite removal and retry if required. [ERROR 2022/10/13 14:25:13] Error inserting kernel module: /module/collector.ko: Operation not permitted. Aborting... [ERROR 2022/10/13 14:25:13] Failed to insert kernel module [ERROR 2022/10/13 14:25:13] Failed to setup Kernel module [INFO 2022/10/13 14:25:13] [INFO 2022/10/13 14:25:13] == Collector Startup Diagnostics: == [INFO 2022/10/13 14:25:13] Connected to Sensor? true [INFO 2022/10/13 14:25:13] Kernel driver available? true [INFO 2022/10/13 14:25:13] Driver loaded into kernel? false [INFO 2022/10/13 14:25:13] ==================================== [INFO 2022/10/13 14:25:13] [FATAL 2022/10/13 14:25:13] Failed to initialize collector kernel components.
このようなエラーが発生した場合、自分で修正できる可能性はほとんどありません。代わりに、Red Hat Advanced Cluster Security for Kubernetes (RHACS) サポートチームに報告するか、GitHub の問題 を作成してください。