トラブルシューティング

Instana ホストエージェントをインストールすると、ホストセンサーが自動的にインストールおよび展開されます。 Instana のUIで、ホストセンサーに関連するメトリクスを確認できます。

eBPF がサポートされていない

監視対象の問題タイプ: ebpf_not_supported

プロセス異常終了機能は、 Linux ベースのオペレーティングシステム上で実行されるプロセスが、クラッシュや外部シグナルによる強制終了により予期せず終了した場合を検出します。

この機能は拡張されたBerkley Packet Filter の上に構築されていますが、このホストでは利用できない可能性があります。

Instana の eBPF-based 機能を利用するには、 4.7 以上のカーネルと Linuxdebugfs が必要です。

サポートされているオペレーティングシステムの詳細については、 「プロセスの異常終了」 を参照してください。

SELinux ポリシーが eBPF をブロックする

SELinuxがホストにインストールされている場合、エージェントが eBPF を使用できるようにポリシーを作成する必要があります。 SELinuxは、 eBPF センサーが bpf_*Linux カーネルを計測するために使用するシステムコールを、ホストエージェントと同様に発行することを unconfined services 妨げる可能性があります。 確認するには、監査システムのログエントリを確認する必要があります。監査システムはデフォルトで. /var/log/audit/audit.logに保存されます。

以下の例は、 Red HatLinux マシン用のポリシーを作成する手順を示しています:

  1. 以下のコマンドを実行します。
    $ cat /var/log/audit/audit.log | grep ebpf
    type=AVC msg=audit(1598891569.452:193): avc:  denied  { map_create } for  pid=1612 comm="ebpf-preflight-"
    scontext=system_u:system_r:unconfined_service_t:s0 tcontext=system_u:system_r:unconfined_service_t:s0
    tclass=bpf permissive=0
    type=SYSCALL msg=audit(1598891569.452:193): arch=c000003e syscall=321 success=no exit=-13
    a0=0 a1=7ffc0e1f5020 a2=78 a3=fefefefefefefeff items=0 ppid=1502 pid=1612 auid=4294967295
    uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="ebpf-preflight-"
    exe="/opt/instana/agent/data/repo/com/instana/ebpf-preflight/0.1.6/ebpf-preflight-0.1.6.bin"
    subj=system_u:system_r:unconfined_service_t:s0 key=(null)
    type=PROCTITLE msg=audit(1598891569.452:193):
    proctitle="/opt/instana/agent/data/repo/com/instana/ebpf-preflight/0.1.6/ebpf-preflight-0.1.6.bin"
    
    注: 監査ログファイルは通常、ローテーションされます。 したがって、ホストエージェントの起動後、すぐにこのコマンドを実行する必要があります。

    ログファイルには、システムコール map_create が拒否されたと表示される場合があります。 eBPF センサーがシステムコールを実行できるようにするには、SELinuxポリシーとプログラムを作成する必要があります audit2allow

  2. Red Hat システムでは、ポリシーを次のようにインストールします:
    yum install policycoreutils-python
    
  3. を使用して audit2allow、次の例に示すようにログエントリに基づいて生のポリシーファイルを作成します:
grep ebpf /var/log/audit/audit.log | audit2allow -M instana_ebpf

処理コマンドは次のファイルを作成します:

ls -Al | grep instana_ebpf
-rw-r--r--. 1 root                    root                      886 31. Aug 18:31 instana_ebpf.pp
-rw-r--r--. 1 root                    root                      239 31. Aug 18:31 instana_ebpf.te

生のポリシーファイルには、次の例に示すように、拒否された instana_ebpf.te システムコールを許可する指示が含まれています:

$ cat instana_ebpf.temodule instana_ebpf 1.0;require {
        type unconfined_service_t;
        class bpf map_create;
}#============= unconfined_service_t ==============#!!!! This avc is allowed in the current policy
allow unconfined_service_t self:bpf map_create;

このポリシーは、タイプが制限されていない(非常に汎用的な)あらゆるアプリケーションがシステム map_create コールを実行することを許可します。

  1. さらに、 eBPF センサーには、さらにいくつかのシステムコールが必要です。 次の例のようにファイルを instana_ebpf.te 編集する必要があります:
    $ cat instana_ebpf.te module instana_ebpf 1.0;require {
            type unconfined_service_t;
            class bpf { map_create map_read map_write prog_load prog_run };
    }#============= unconfined_service_t ==============#!!!! This avc is allowed in the current policy
    allow unconfined_service_t self:bpf { map_create map_read map_write prog_load prog_run };
    
  2. ファイルをバイナリ形式でファイル instana_ebpf.mod として書き換える:
    $ checkmodule -M -m -o instana_ebpf.mod instana_ebpf.te
    checkmodule:  loading policy configuration from instana_ebpf.te
    checkmodule:  policy configuration loaded
    checkmodule:  writing binary representation (version 19) to instana_ebpf.mod
    
  3. ファイルを instana_ebpf.mod ロード可能なモジュールとして再パッケージ化します:
    semodule_package -o instana_ebpf.pp -m instana_ebpf.mod
    
  4. ポリシーパッケージを適用する:
semodule -i instana_ebpf.pp

ホストエージェントのような非拘束プロセスは、現在システムコールを実行できる。