文書の過去の版を表示しています。
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>
経験的に、libssl-dev をインストールすると、openssl/err.h が入りそうな予感がする。あと、apt-file コマンドがインストールされていれば、もっと直接的に openssl/err.h ヘッダーが含まれるパッケージを以下のように探せる。
$ 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 をインストールすれば良いことがわかる。以下のコマンドでインストール可能。
$ sudo apt install libssl-dev
- make 時に以下のエラーがでる。
[ 98%] Building C object src/CMakeFiles/fluent-bit-bin.dir/__/lib/lwrb/lwrb/src/lwrb/lwrb.c.o [ 98%] Linking C executable ../bin/fluent-bit /usr/bin/ld: ../library/libfluent-bit.a(flb_tls.c.o): in function `tls_info_callback': /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:75: undefined reference to `SSL_get_fd' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:88: undefined reference to `SSL_state_string_long' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:93: undefined reference to `SSL_alert_desc_string_long' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:93: undefined reference to `SSL_alert_type_string_long' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:100: undefined reference to `SSL_state_string_long' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:104: undefined reference to `SSL_get_error' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:112: undefined reference to `SSL_state_string_long' /usr/bin/ld: ../library/libfluent-bit.a(flb_tls.c.o): in function `tls_context_destroy': /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:124: undefined reference to `SSL_CTX_free' /usr/bin/ld: ../library/libfluent-bit.a(flb_tls.c.o): in function `load_system_certificates': /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:192: undefined reference to `SSL_CTX_load_verify_locations' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:195: undefined reference to `ERR_print_errors_fp' /usr/bin/ld: ../library/libfluent-bit.a(flb_tls.c.o): in function `tls_context_create': /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:239: undefined reference to `TLS_server_method' /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/tls/openssl.c:239: undefined reference to `SSL_CTX_new' < Omitted > /usr/bin/ld: /home/nestdaq/nestdaq/src/fluent-bit/src/flb_crypto.c:264: undefined reference to `ERR_get_error' collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/fluent-bit-bin.dir/build.make:403: bin/fluent-bit] Error 1 make[1]: *** [CMakeFiles/Makefile2:7757: src/CMakeFiles/fluent-bit-bin.dir/all] Error 2 make: *** [Makefile:156: all] Error 2
apt search tls で検索すると、libtls-dev というパッケージがヒットする。これをインストールすれば良さそうな感じがする。
$ sudo apt install libtls-dev < Omitted > libtls-dev/jammy 3.4.1-2build1 amd64 libtls development files < Omitted >
このパッケージをインストールしてみる。
$ sudo apt install libtls-dev
だがしかしだめ。他にも、libssl3, libtlsh-dev, libcrypto++-dev, libtls-dev などインストールしたがだめ。どうしたものか。