このチュートリアルでは、glibc>=2.35を使用しているユーザーに影響を与えているUbuntu22.04でのFilebeatGlibc関連のエラーを修正する方法を学習します。
ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Ubuntu22.04でFilebeatGlibc関連のエラーを修正する方法
Ubuntu 22.04にFilebeatをインストールしましたが、Glibc関連のエラーが原因で実行できないことに気付きましたか?
私のデモセットアップでは、Debian11でElasticStack7.17.0を実行しています。
curl localhost:9200
サンプル出力 「番号」:「7.17.0」;
{ "name" : "debian11", "cluster_name" : "elasticsearch", "cluster_uuid" : "_JanDf4yRcCxVBnLgN0a5A", "version" : { "number" : "7.17.0", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "bee86328705acaa9a6daede7140defd4d9ec56bd", "build_date" : "2022-01-28T08:36:04.875279988Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
すべてのコンポーネントの同様のバージョンをインストールすることを常にお勧めします。 つまり、Elastic Stack v7.17.0を実行している場合、Elasticsearch、Kibana、Logstash、およびBeastsはすべて同じバージョンである必要があります。
そうは言っても、Ubuntu22.04にFilebeat7.17.0と他のFilebeatバージョンをインストールして、問題が解決するかどうかを確認しようとしました。 ただし、Filebeatの一部のバージョンでも同じエラーが発生しました。
hostnamectl
Static hostname: jellyfish Icon name: computer-convertible Chassis: convertible Machine ID: a892921910db4c7aa544a53d6f775666 Boot ID: af6f2a87fb394cada730d00fbd56c9b1 Operating System: Ubuntu 22.04 LTS Kernel: Linux 5.15.0-27-generic Architecture: x86-64
さまざまなバージョンのFilebeatを使用してUbuntu22.04で発生したサンプルGlibcエラー。
Fatal glibc error: rseq registration failed
... 2022-06-08T17:13:39.465Z INFO instance/beat.go:328 Setup Beat: filebeat; Version: 7.17.0 2022-06-08T17:13:39.465Z INFO [index-management] idxmgmt/std.go:184 Set output.elasticsearch.index to 'filebeat-7.17.0' as ILM is enabled. 2022-06-08T17:13:39.465Z INFO [esclientleg] eslegclient/connection.go:105 elasticsearch url: http://192.168.58.22:9200 2022-06-08T17:13:39.467Z INFO [publisher] pipeline/module.go:113 Beat name: ceph-admin 2022-06-08T17:13:39.479Z INFO [monitoring] log/log.go:142 Starting metrics logging every 30s Fatal glibc error: rseq registration failed Aborted (core dumped)
..。 runtime / cgo:pthread_createが失敗しました:操作は許可されていませんSIGABRT:中止 PC = 0x7f928b9c6a7c m = 5 sigcode = 18446744073709551610 goroutine 0 [idle]:ランタイム:不明なpc 0x7f928b9c6a7cスタック:frame = {sp:0x7f92634578a0、fp:0x0} stack =[0x7f9262c581e8,0x7f9263457de8) ...
If you experienced these errors, how would you fix them?
Well, according to this topic on Elastic Forum, MacKenzie mentioned that “glibc >= 2.35 added a new rseq syscall that is not in our default list of allowed syscalls“
He went ahead and suggested some fixes.
- Upgrade to Elastic 7.17.2 and use Filebeat 7.17.2
- Customize allowed Filebeat Syscalls to include rseq syscall
Install Filebeat 7.17.2
As already stated before, it is always recommended to install similar versions of all components. As such, MacKenzie suggested that one can upgrade their Elastic Stack version to 7.17.2 and use beta release versions of Filebeat 7.17.2, the first release which ships with the fix to errors experienced when glibc >= 2.35 is used;
We installed Filebeat 7.17.2, and it indeed fixed the issue;
filebeat version
filebeat version 7.17.2 (amd64), libbeat 7.17.2 [f6042bc3407cc10201cfd8c7574d8b0a88a699db built 2022-03-28 09:47:58 +0000 UTC]
filebeat -e
...
INFO [publisher_pipeline_output] pipeline/output.go:151 Connection to backoff(elasticsearch(http://x.x.x.x:9200)) established
許可されたFilebeatシステムコールをカスタマイズする
いずれかの理由でElasticStackをアップグレードできない場合は、このソリューションを使用してください。
Filebeatは利用するように設定されています Linuxセキュアコンピューティングモード (seccomp)、特定のシステムコールのみをFilebeatプログラムに公開します。 プロセスで見つかる可能性のある未知の脆弱性の影響を最小限に抑えます。
MacKenzieが述べたように、GLIBC>=2.35は新しい req syscall
これはデフォルトではFilebeatに公開されていません。
したがって、Elastic StackをアップグレードせずにGlibcでFilebeatの問題を修正できるようにするには、この特定のシステムコールを許可するようにFilebeatを構成する必要があります。
Linuxでは、Filebeatはデフォルトでseccompを有効にするように設定されています。
rseq syscallを許可するには、filebeat.yml構成ファイルを編集し、以下の行を追加します。
seccomp:
default_action: allow
syscalls:
- action: allow
names:
- rseq
以下のコマンドをターミナルにコピーして貼り付けるだけで、Filebeat構成ファイルを上記の内容で更新できます。
cat >> /etc/filebeat/filebeat.yml << 'EOL' seccomp: default_action: allow syscalls: - action: allow names: - rseq EOL
次に、を実行して変更をテストできます。
filebeat -e
Filebeatは、Elasticsearchまたはstash出力に正常に接続する必要があります。
これで、Ubuntu22.04でFilebeatGlibc関連のエラーを修正する方法について説明しました。
その他のチュートリアル
UbuntuにELKStack8.xをインストールします
The post Ubuntu22.04でFilebeatGlibc関連のエラーを修正する方法 appeared first on Gamingsym Japan.