トラブルシューティング
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 マシン用のポリシーを作成する手順を示しています:
- 以下のコマンドを実行します。
$ 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。 - Red Hat システムでは、ポリシーを次のようにインストールします:
yum install policycoreutils-python - を使用して
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 コールを実行することを許可します。
- さらに、 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 }; - ファイルをバイナリ形式でファイル
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 - ファイルを
instana_ebpf.modロード可能なモジュールとして再パッケージ化します:semodule_package -o instana_ebpf.pp -m instana_ebpf.mod - ポリシーパッケージを適用する:
semodule -i instana_ebpf.pp
ホストエージェントのような非拘束プロセスは、現在システムコールを実行できる。