以下の内容はhttps://devops-blog.virtualtech.jp/entry/20241022/1729576015より取得しました。


Fluent Bitを使ったテスト環境におけるアプリのログ収集

最近とある案件でFluentdやFluent bitを触ることが多くなりました。 きっかけは案件ではありましたが、これを使えば検証や開発用サーバーや環境のログ収集が手軽にできるのではと思い、試してみることにしました。

今回使ったのはFluent bitの方です。 Fluentdの方がサポートされているプラグインの数は段違いなほど多いのですが、軽量な方が良かったのでFluent bitを入れてみました。

Fluent Bitのインストール

次を参考に、何らかの方法でインストールします。

今回はサーバーはLinux、クライアントはmacOSを前提としています。 それぞれの環境にFluent Bitをインストールします。

クライアント側でforwardで特定のポートを解放して、送られてきたデータをファイルに書き込みます。 今回はクライアントのファイアウォールをオフにして作業しました。

アプリ側(Linux)の設定

Linux版のFluent Bitは次のパスのファイルをデフォルトで読み込みます。

/etc/fluent-bit/fluent-bit.conf

デフォルトでいくつかの設定がされているので全てコメントにした上で、次の設定を書き込みます。 今回の例はApache Web Serverのログを収集して、out.fowardしたデータをクライアントでIn.fowardで取り込んで、クライアントの特定のディレクトリー上にファイルとして書き込むことを前提としています。

今回は単独のログだけを送り込むため指定していませんが、収集するログが増えてきたらTagの指定もした方が良いかもしれません。 IPアドレスはクライアントのIPアドレスを指定します。クライアントOSの多くはデフォルトでファイアウォールが設定されています。今回は利用時にファイアウォールをオフにしています。

[INPUT]
    Name        tail
    Path        /var/log/httpd/access_log

[OUTPUT]
    Name          forward
    Match         *
    Host          192.168.1.5
    Port          24224
    tls           off
    tls.verify    off

クライアント側(macOS)

クライアントでは、次のような設定をしておきます。

[INPUT]
    Name              forward
    Listen            0.0.0.0
    Port              24224
    Buffer_Chunk_Size 1M
    Buffer_Max_Size   6M

[OUTPUT]
    Name file
    Match *
    Path /Users/ytooyama/temp/fluent

早速実行してみましょう。実行するときは-cオプションで設定ファイルを指定します。

% fluent-bit -c /Users/ytooyama/temp/fluent/fluent-bit.conf

Fluent Bit v3.1.9
* Copyright (C) 2015-2024 The Fluent Bit Authors
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io

______ _                  _    ______ _ _           _____  __
|  ___| |                | |   | ___ (_) |         |____ |/  |
| |_  | |_   _  ___ _ __ | |_  | |_/ /_| |_  __   __   / /`| |
|  _| | | | | |/ _ \ '_ \| __| | ___ \ | __| \ \ / /   \ \ | |
| |   | | |_| |  __/ | | | |_  | |_/ / | |_   \ V /.___/ /_| |_
\_|   |_|\__,_|\___|_| |_|\__| \____/|_|\__|   \_/ \____(_)___/

[2024/10/18 12:06:59] [ info] [fluent bit] version=3.1.9, commit=, pid=97234
[2024/10/18 12:06:59] [ info] [storage] ver=1.5.2, type=memory, sync=normal, checksum=off, max_chunks_up=128
[2024/10/18 12:06:59] [ info] [cmetrics] version=0.9.6
[2024/10/18 12:06:59] [ info] [ctraces ] version=0.5.6
[2024/10/18 12:06:59] [ info] [input:forward:forward.0] initializing
[2024/10/18 12:06:59] [ info] [input:forward:forward.0] storage_strategy='memory' (memory only)
[2024/10/18 12:06:59] [ info] [input:forward:forward.0] listening on 0.0.0.0:24224
[2024/10/18 12:06:59] [ info] [sp] stream processor started
[2024/10/18 12:06:59] [ info] [output:file:file.0] worker #0 started

今回の例ではLinuxサーバー上で動くApache Web Serverのアクセスログの収集をしています。アクセスログはLinuxディストリビューションによってログのパスが変わってきますので、適切なものを指定すればそのログ書き込みの差分をちゃんと認識して指定したファイルに書き込んでくれます。

% ls
fluent-bit.conf  tail.0

% cat tail.0
tail.0: [1729220842.232230407, {"log":"192.168.1.5 - - [18/Oct/2024:12:07:22 +0900] \"GET / HTTP/1.1\" 403 3539 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0\""}]
tail.0: [1729220842.336452806, {"log":"192.168.1.5 - - [18/Oct/2024:12:07:22 +0900] \"GET /icons/apache_pb2.gif HTTP/1.1\" 200 4234 \"http://192.168.1.62/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0\""}]
tail.0: [1729220842.467810805, {"log":"192.168.1.5 - - [18/Oct/2024:12:07:22 +0900] \"GET /favicon.ico HTTP/1.1\" 404 196 \"http://192.168.1.62/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0\""}]
tail.0: [1729224431.718462011, {"log":"192.168.1.5 - - [18/Oct/2024:13:07:11 +0900] \"GET / HTTP/1.1\" 403 3539 \"-\" \"curl/8.7.1\""}]

何かの基盤を作ると決まって「ログ収集はどうするの?」と聞かれる気がするので、そいうときはFluentdとかFluent bitが役立ちそうだなと感じました。 まずは自分でいろいろ触ってみようと思います。




以上の内容はhttps://devops-blog.virtualtech.jp/entry/20241022/1729576015より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14