もっと詳しく

このチュートリアルでは、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.

  1. Upgrade to Elastic 7.17.2 and use Filebeat 7.17.2
  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.