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.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 の問題 を作成してください。