fluentbitを Windowsサーバーにインストール・設定しますよ。
「Windowsサーバーのイベントログを Grafanaで一覧する 1」ではタイトルの企画を実現するための設計について書きました。
こんな環境を作りたいなと。
fluentbitが取得した Windowsイベントログのデータを送りつける先のデータベースである OpenSearchの準備ができている前提になりますので、以下で作った環境を使っています。
「OpenSearchインストール」
「OpenSearch Dashboardsインストール」
「OpenSearchのユーザー追加」
「OpenSearchで日本語の検索をする」
上の環境では、OpenSearchの一般ユーザーとして [subro]ユーザーを作っていますが、この環境用に [fluentbit]ユーザーを作っています。
1.fluentbitダウンロード
ここでは Windows Server 2022に fluentbitをインストールしますので、Windows版をダウンロードします。
ダウンロードサイトはこちら。
Getting Started with Fluent Bit
Windows Server用のインストールファイルをダウンロードします。
2023年7月23日時点での最新バージョンは 2.1.7でした。
2.fluentbitインストール
ダウンロードしたのは GUIのインストーラーなので簡単です。
ダウンロードファイルはこれです。
ダブルクリックします。
次へを押します。
同意するを押します。
[インストール先フォルダ]はこれで良いでしょう。
([Program Files]フォルダのような間にスペースを含むフォルダ名が含まれる場合は後で手順に注意点があります)
次へを押します。
インストールを押します。
完了を押します。
できあがった [C:¥Program Files¥fluent-bit]フォルダの中はこんな風。
後で使いますので、[buffer]フォルダ・ [log]フォルダを手動で作りました。
3.fluentbit設定
fluentbitの設定ファイルは、[C:¥Program Files¥fluent-bit¥conf¥fluent-bit.conf]ファイルです。
私独自の設定ですが、これでどうにか動いたものになります。
デフォルトのファイルにあったコメント行は残していますのでちょっと長いですが、実際に生きている行はそんなにありません。
[C:¥Program Files¥fluent-bit¥conf¥fluent-bit.conf]
[SERVICE]
# Flush
# =====
# set an interval of seconds before to flush records to a destination
flush 1
# Daemon
# ======
# instruct Fluent Bit to run in foreground or background mode.
daemon Off
# Log_Level
# =========
# Set the verbosity level of the service, values can be:
#
# - error
# - warning
# - info
# - debug
# - trace
#
# by default 'info' is set, that means it includes 'error' and 'warning'.
log_level info
log_file C:\Program Files\fluent-bit\log\fluentbit.log ← fluentbitの動作ログをファイルに出力するようにしました
# Parsers File
# ============
# specify an optional 'Parsers' configuration file
parsers_file parsers.conf
# Plugins File
# ============
# specify an optional 'Plugins' configuration file to load external plugins.
plugins_file plugins.conf
# HTTP Server
# ===========
# Enable/Disable the built-in HTTP Server for metrics
http_server On ← fluentbitの動作データ(メトリクス)を取得できるよう一応Onに変えていますが無くても良かったです
http_listen 0.0.0.0
http_port 2020
# Storage
# =======
# Fluent Bit can use memory and filesystem buffering based mechanisms
#
# - https://docs.fluentbit.io/manual/administration/buffering-and-storage
#
# storage metrics
# ---------------
# publish storage pipeline metrics in '/api/v1/storage'. The metrics are
# exported only if the 'http_server' option is enabled.
#
storage.metrics on
# storage.path
# ------------
# absolute file system path to store filesystem data buffers (chunks).
#
# storage.path /tmp/storage
storage.path C:\Program Files\fluent-bit\buffer ← このフォルダに送信し切れないデータをバッファリングするんだと思いますがファイルができた試しなし
# storage.sync
# ------------
# configure the synchronization mode used to store the data into the
# filesystem. It can take the values normal or full.
#
# storage.sync normal
storage.sync normal ← [normal]にしておけば上のフォルダにバッファリングするものと思います
# storage.checksum
# ----------------
# enable the data integrity check when writing and reading data from the
# filesystem. The storage layer uses the CRC32 algorithm.
#
# storage.checksum off
# storage.backlog.mem_limit
# -------------------------
# if storage.path is set, Fluent Bit will look for data chunks that were
# not delivered and are still in the storage layer, these are called
# backlog data. This option configure a hint of maximum value of memory
# to use when processing these records.
#
# storage.backlog.mem_limit 5M
storage.backlog.mem_limit 100M ← 送信データのメモリバッファを 100MBにしておきました
#[INPUT]
# Name winlog
# Channels Setup,Windows PowerShell
# Interval_Sec 1
[INPUT] ← Windowsイベントログを収集元(INPUT)にする設定
Name winlog ← 任意の名前付けではなくプラグイン名のようです
Channels System,Application
Interval_Sec 5
Tag winlog ← 集めたWindowsイベントログのデータには[winlog]という名前(タグ)を付ける
#[OUTPUT]
# name stdout
# match *
[OUTPUT] ← OpenSearchを送信先(OUTPUT)にする設定
Name opensearch
Match winlog ← [INPUT]に指定されるデータのうち[winlog]というタグが付いているデータだけを対象にする
Host 192.168.1.102
Port 9200
Index win_eventlog ← OpenSearchのインデックス名でOpenSearchで自動作成されます
#Type my_type
Suppress_Type_Name On ← OpenSearchから返されるインデックスタイプのワーニングかだかを無視する
HTTP_User fluentbit ← AWSではなくオンプレのOpenSearchの場合はここでユーザーの指定をします
HTTP_Passwd jA*034t7;8Sd ← パスワードは私の環境のものなので自分の環境に合わせましょう
tls On ← AWSではなくオンプレのOpenSearchの場合はデフォルトではこれが必要と思います
tls.verify Off ← AWSではなくオンプレのOpenSearchの場合はオレオレ証明書の回避をします
fluentbitを Windowsサービスとして登録します。
上で書いた([Program Files]フォルダのような間にスペースを含むフォルダ名が含まれる場合は後で手順に注意点があります)に相当するパターンのコマンドで、実行パスにスペースが含まれる場合の対応がされています。
C:\Users\Administrator> sc.exe create fluent-bit binpath= "\"C:\Program Files\fluent-bit\bin\fluent-bit.exe\" -c \"C:\Program Files\fluent-bit\conf\fluent-bit.conf\""
[SC] CreateService SUCCESS
今作ったサービスの実行モードを[自動]に変更します。
C:\Users\Administrator> sc.exe config fluent-bit start= auto
[SC] ChangeServiceConfig SUCCESS
今作ったサービスを開始します。
C:\Users\Administrator> net start fluent-bit
fluent-bit サービスを開始します.
fluent-bit サービスは正常に開始されました。
これでネットワークや OpenSearchに問題なければ、OpenSearch内にインデックスが作られているはずです。
fluentbitのインストールはこれだけで完了です。
fluentbitが持つ、INPUT・OUTPUTのプラグインは多岐に渡っていて、これからも増えていくのだと思います。
どんどん増やして NXLogに迫って欲しいですが、どこまでタダで使わせてくれるかはまだ不明です。
面白い OUTPUTプラグインとして Prometheusへのプラグインがありました。
これは(Windowsであれば) Prometheusの Windowsエクスポーターを代替できる機能です。
他のデータ送信をしながら Prometheusのエクスポーター役もやってくれるので、実行プログラムを fluentbitに統一できるメリットを狙っているようです。
NXLogと fluentbit、どちらを使うかは個人の趣味に依るところが大きいですが、こういう高機能なツールはどんどん使い倒したいものです。
次回「Windowsサーバーのイベントログを Grafanaで一覧する 3」で、まずは OpenSearch Dashboardsで Windowsイベントログを見てみます。