0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Fluent Bit備忘録

Last updated at Posted at 2023-06-05

久々に触ったら色々忘れていたのでメモ。本当にただのメモ。

INPUTプラグインによるデバッグ

syslogに吐かせて見る場合、syslogプラグインの設定を挟むため加工されているデータを見ることになりがちなので、stdoutで見た方が簡単かつ正確。

[OUTPUT]
  Name   stdout
  Match  kube.*

OUTPUTプラグインを複数書いても問題ないので、調べ物をしている最中は基本stdoutにも吐いておくとよい。

Parserの挙動

ログを構造化する。正規表現の場合、キャプチャーグループで利用する。

192.168.2.20 - test_user 

というログがあった場合に以下の正規表現を適用すると、

  Name 	  apache
  Format  regex
  Regex   ^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) 

以下のように仕分けられる。

host: 192.168.2.20
user: test_user

OUTPUTプラグインの項目

Syslog_Hostname_keySyslog_Appname_keyなどSyslog_xxxx_keyとなっている項目は、RFCに準拠したSyslogフォーマットに沿って値を渡している。
ここに渡す値はParserFilterで分解した時のキャプチャーグループとマッピングする。

例えば前述のParserを通したデータであれば、

Syslog_Hostname_key  user

と設定すると、syslogのhostnameの項目はtest_userとなる。(やらないけど)

FILTERプラグインnestの効果

入れ子構造について、入れ子を入れたり(nest)消したり(lift)出来る。

{"stream"=>"stderr", "logtag"=>"F", "message"=>"...", "kubernetes"=>{"pod_name"=>"vsphere-csi-controller-587b8f69db-qpk48", "namespace_name"=>"kube-system", ...

上のようなログがある時、

 [FILTER]
    Name                nest
    Match               *
    Operation           lift
    Nested_Under        kubernetes

のFilterを通してやると、

{"stream"=>"stderr", "logtag"=>"F", "message"=>"...", {"pod_name"=>"vsphere-csi-controller-587b8f69db-qpk48", "namespace_name"=>"kube-system", ...

"kubernetes"=>{}が消えた状態になる。
OUTPUTプラグインで

Syslog_Appname_key   pod_name

と書いても、"kubernetes"=>部分が邪魔になって適切に値を渡せないので、そういう場合は上記のFILTERを利用する。
Kubernetes Filterを使ってsyslog出力する際に、

        Syslog_Appname_key   pod_name
        Syslog_Procid_key    container_name

としていた場合、nestプラグインによるliftなしでのvRLIの表示は以下。
1685960892688.png
適切にpod_nameやcontainer_nameが渡せていない。
liftありの表示は以下。
1685960947551.png
appnameやprocidに値が渡っていることが分かる。

ログのロスト対策

バッファリングレイヤはデフォルトだとメモリのみで動作するが、ストレージに出力することも出来る。
参考:https://docs.fluentbit.io/manual/administration/buffering-and-storage
以下も参考になった。
FluentBitのログ欠損調査&対策

クラスタ名の設定

TKG用に配布されている?Fluent Bitの設定ファイルに以下の項目がある。

Syslog_Hostname_key  tkg_cluster

ただ、tkg_clusterは自分で設定しない限り設定されることはないので、自分で以下のように設定する。

[FILTER]
    Name                  modify
    Match                 kube.*
    Set                   tkg_cluster <クラスタ名>

クラスタ名はWorkload Cluster内で取得するのは難しいと思われるので、自動設定しようと頑張るよりは、ハードコーディング的に書いてあげた方が楽かと思われる。

1行のサイズ

InputはBuffer_Chunk_SizeBuffer_Max_Sizeで制御するが、OUTPUT側も設定が必要な場合がある。syslog output pluginを使う場合はsyslog_maxsizeで設定する。デフォルトが2KBまでしか出力してくれないので、1行のサイズが大きい場合はこちらも大きく設定しておく。

      [OUTPUT]
        Name   syslog
        Match  *
        Host   10.41.78.83
        Port    514
        syslog_maxsize 16384
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?