fluent-bitがデフォルトでAzureのLog Analyticsにログを転送する機能を持っていたので、試してみました。
事前準備
Log Analyticsにログを送信する時に、正直イライラするというか不安になるというか、結構困るのは送信したログがすぐにはクエリできず数分間待たされることです。
初めてやっている時はそもそもログを拾えていないのかどうかとの区別がしにくく、特に不安になるのではないかと思います。
なので、まずは標準出力を出力先にして、ログを出力してみることをお勧めします。
今回は簡単にfluent-bitを立ち上げたかったのでDockerで起動します。出力先は標準出力で、入力はforwardです。
$ docker run -p 127.0.0.1:24224:24224 fluent/fluent-bit:1.5 /fluent-bit/bin/fluent-bit -i forward -o stdout -p format=json_lines -f 1
Fluent Bit v1.5.7
* Copyright (C) 2019-2020 The Fluent Bit Authors
* Copyright (C) 2015-2018 Treasure Data
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io
[2021/09/24 19:26:42] [ info] [engine] started (pid=1)
[2021/09/24 19:26:42] [ info] [storage] version=1.0.5, initializing...
[2021/09/24 19:26:42] [ info] [storage] in-memory
[2021/09/24 19:26:42] [ info] [storage] normal synchronization mode, checksum disabled, max_chunks_up=128
[2021/09/24 19:26:42] [ info] [input:forward:forward.0] listening on 0.0.0.0:24224
[2021/09/24 19:26:42] [ info] [sp] stream processor started
--log-driver
を指定すると、コンテナのログを簡単に転送できます。
$ docker run --log-driver=fluentd -t ubuntu echo "Testing a log message"
Testing a log message
fluent-bit側のコンテナをみると、ログが送信されていることが分かります。
{"date":1632511701,"source":"stdout","log":"Testing a log message\r","container_id":"c5db93437b82b371454bac959110dc45802b115c134b4520ea3f848343c46002","container_name":"/elastic_pike"}
Log Analyticsにログを転送する
今度は出力先をLog Analyticsにします。まずワークスペースIDとキーを確認しましょう。ポータルだと以下に出ています。
fluent-bitのコンテナを作り直します。
$ docker run -p 127.0.0.1:24224:24224 fluent/fluent-bit:1.5 /fluent-bit/bin/fluent-bit -i forward -o azure -p customer_id=ワークスペースID -p shared_key=キー -m '*' -f 1
[2021/09/24 20:24:54] [ info] [engine] started (pid=1)
[2021/09/24 20:24:54] [ info] [storage] version=1.0.5, initializing...
[2021/09/24 20:24:54] [ info] [storage] in-memory
[2021/09/24 20:24:54] [ info] [storage] normal synchronization mode, checksum disabled, max_chunks_up=128
[2021/09/24 20:24:54] [ info] [input:forward:forward.0] listening on 0.0.0.0:24224
[2021/09/24 20:24:54] [ info] [output:azure:azure.0] customer_id='xxxxxxxxxxxxxxxx' host='xxxxxxxxxxxxxxxxxxxx.ods.opinsights.azure.com:443'
[2021/09/24 20:24:54] [ info] [sp] stream processor started
入力は変更していないのでさきほどと同じ方法でログを書き込みます。
$ docker run --log-driver=fluentd -t ubuntu echo "Testing a log message"
Testing a log message
fluent-bit側のコンテナをみて、以下のように出力されていたら問題ないはずなので、しばらく待ちます。10分くらい待ったかも。
[2021/09/24 20:25:01] [ info] [output:azure:azure.0] customer_id=xxxxxxxxxxxxxxxxxxxxxx, HTTP status=200
どこにも記載がなくて困ったのですが、Log Analyticsのテーブルはカスタムになっていて、fluentbit_CLというところに書かれています。