文書の過去の版を表示しています。
Fluent Bit
軽量なパイプラインツール。NestDAQ において FairMQ デバイスが大量に立ち上がっているときに、標準出力のメッセージを見るのはしんどいので、これを見やすくしたいとというモチベーションがあった。Fluent Bit はロギングツールというよりパイプラインツールなので、助けになるかわからないが、プラグインによって実現されるインターフェース周りが充実しいるため、有効かもしれないということで、調査を行っている。
インストール
- Ubuntu MATE 22.04.3 LTS
$ cd $HOME/nestdaq/src $ git clone https://github.com/fluent/fluent-bit $ cd fluent-bit $ cmake -DCMAKE_INSTALL_PREFIX=$HOME/nestdaq \ -B ./build -S .
Error
- Flex と Bison がないと cmake 時、以下のエラーになる。
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/nestdaq \ -B ./build -S . -- The C compiler identification is GNU 11.4.0 < Omitted > -- Found Git: /usr/bin/git (found version "2.34.1") -- Git hash: 71746b35718e856a5f8615f95f35d450a142e8cd -- Could NOT find FLEX (missing: FLEX_EXECUTABLE) (Required is at least version "2") -- Could NOT find BISON (missing: BISON_EXECUTABLE) (Required is at least version "3") -- Enabling FLB_REGEX since FLB_PARSER requires CMake Error at CMakeLists.txt:472 (message): Record Accessor feature requires Flex and Bison in your system. This is a build time dependency, you can either install the dependencies or disable the feature setting the CMake option -DFLB_RECORD_ACCESSOR=Off . -- Configuring incomplete, errors occurred! See also "/home/nestdaq/nestdaq/src/fluent-bit/build/CMakeFiles/CMakeOutput.log".
- cmake時の謎のエラーメッセージ。libyaml-dev をインストールすれば良いかと思ったが、それだけではだめで、pkg-config パッケージもインストールすべし。
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/nestdaq -B ./build -S . -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) <Omitted> -- CFL found in the system. OK Found posix_memalign in stdlib.h -DHAVE_POSIX_MEMALIGN_IN_STDLIB -DHAVE_POSIX_MEMALIGN -- Plugin dirlisting enabled -- Plugin liana enabled [== static ==] -- Plugin mandril enabled -- LINKING monkey-liana-static; -- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) CMake Error at CMakeLists.txt:856 (message): YAML development dependencies required for YAML configuration format handling. This is a build time dependency, you can either install the dependencies or disable the feature setting the CMake option -DFLB_CONFIG_YAML=Off . -- Configuring incomplete, errors occurred! See also "/home/nestdaq/nestdaq/src/fluent-bit/build/CMakeFiles/CMakeOutput.log". See also "/home/nestdaq/nestdaq/src/fluent-bit/build/CMakeFiles/CMakeError.log".
libyaml-dev, lib pkg-config をインストール。cmake のエラーが解消せず、おそらく必要なかったが、python3-yaml, libyaml-cpp-dev パッケージもインストールした。
$ sudo apt install libyaml-dev python3-yaml libyaml-cpp-dev pkg-config
- make 時エラーメッセージ。openssl のヘッダーが見つからない make 時エラーはなんか知らないけどよく見る。cmake は通るのに、make 時にエラーなるのはなんでだろう。CERN ROOT v5 をコンパイルするときも見た気がする。
$ make <Omitted> [ 47%] Building C object src/CMakeFiles/fluent-bit-static.dir/flb_hmac.c.o In file included from /home/nestdaq/nestdaq/src/fluent-bit/src/flb_hmac.c:18: /home/nestdaq/nestdaq/src/fluent-bit/include/fluent-bit/flb_hmac.h:22:10: fatal error: openssl/err.h: No such file or directory 22 | #include <openssl/err.h> | ^~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [src/CMakeFiles/fluent-bit-static.dir/build.make:790: src/CMakeFiles/fluent-bit-static.dir/flb_hmac.c.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:7698: src/CMakeFiles/fluent-bit-static.dir/all] Error 2 make: *** [Makefile:156: all] Error 2
apt search ssl として、openssl/err.h のヘッダーが含まれていそうなパッケージを探す。
$ apt search ssl <Omitted> libssl-dev/jammy-updates,jammy-security 3.0.2-0ubuntu1.12 amd64 Secure Sockets Layer toolkit - development files <Omitted>
あと、apt-file コマンドがインストールされていれば、もっと直接的に以下のように探せる。
$ apt-file search openssl/err.h android-libboringssl-dev: /usr/include/android/openssl/err.h libnode-dev: /usr/include/node/openssl/err.h libssl-dev: /usr/include/openssl/err.h libwolfssl-dev: /usr/include/cyassl/openssl/err.h libwolfssl-dev: /usr/include/wolfssl/openssl/err.h python3-pycparser: /usr/share/python3-pycparser/fake_libc_include/openssl/err.h
この結果からどれをインストールすれば良いか判断する必要があるが、通常コンパイルするときにデフォルトで(?)指定される include ディレクトリは /usr/include なので、このディレクトリ直下にある openssl/err.h がインストールされれば良い。そのため、パッケージ libssl-dev をインストールすれば良いことがわかる。