私は持っている:
- JSON ログ出力を stdout に書き込む単純な Python アプリ (「iss-web」)
- Python アプリ (「iss-web」) は Docker コンテナー内にあります。
- Python アプリ (「iss-web」) コンテナー ロギング ドライバーが「fluentd」に設定されている
- Python アプリの JSON ログ出力を収集するために「fluent/fluent-bit:1.7」を実行する別のコンテナ
- コンテナーを介してデプロイされた Loki 2.2.1 は、fluent-bit からの Python アプリ ログ出力を受信します。
- ログデータを視覚化するために Loki に接続された Grafana
問題は、「ログ」フィールドが fluent-bit によってフィルタリング/解析されないことです。そのため、Loki/Grafana では「ログ」フィールドの内容が解析されず、「検出されたフィールド」として使用されます。
「iss-web」docker-compose.yml
version: '3'
services:
iss-web:
build: ./iss-web
image: iss-web
container_name: iss-web
env_file:
- ./iss-web/app.env
ports:
- 46664:46664
logging:
driver: fluentd
options:
tag: iss.web
redis:
image: redis
container_name: redis
ports:
- 6379:6379
logging:
driver: "json-file"
options:
max-file: ${LOG_EXPIRE}
max-size: ${LOG_SEGMENT}
"流暢なビット" docker-compose.yml
version: '3'
services:
fluent-bit:
image: fluent/fluent-bit:1.7
container_name: fluent-bit
environment:
- LOKI_URL=http://135.86.186.75:3100/loki/api/v1/push
user: root
volumes:
- ./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
- ./parsers.conf:/fluent-bit/etc/parsers.conf
ports:
- "24224:24224"
- "24224:24224/udp"
流暢-bit.conf
[SERVICE]
Flush 1
Daemon Off
log_level debug
Parsers_File /fluent-bit/etc/parsers.conf
[INPUT]
Name forward
Listen 0.0.0.0
port 24224
[FILTER]
Name parser
Match iss.web
Key_Name log
Parser docker
Reserve_Data On
Preserve_Key On
[OUTPUT]
Name loki
Match *
host 135.86.186.75
port 3100
labels job=fluentbit
[OUTPUT]
Name stdout
Match *
parser.conf
Time_Key、Time_Format、Time_Keep あり/なしで試しました
[PARSER]
Name docker
Format json
#Time_Key time
#Time_Format %Y-%m-%dT%H:%M:%S.%L
#Time_Keep On
# Command | Decoder | Field | Optional Action
# =============|==================|=================
#Decode_Field_As escaped_utf8 log do_next
Decode_Field_As json log
fluent-bit ログ抽出
[0] iss.web: [1620640820.000000000、{"ログ"=>"{'タイムスタンプ': '2021:05:10 11:00:20.439513'、'エポック': 1620640820.4395688、'pid': 1、'レベル' : 'DEBUG', 'message': '/ping', 'data': {'message': 'PONG', 'timestamp': '1620640820.4394963', 'version': '0.1'}}", "container_id"= >"bffd720e9ac1e8c3992c1120eed37e00c536cd44ec99e9c13cf690d840363f80", "container_name"=>"/iss-web", "source"=>"stdout"}]