Fluent Bit
Overview
Fluent Bit adalah lightweight log collector yang mengumpulkan logs dari Docker containers dan system logs.
Configuration
Docker Compose
fluent-bit:
image: clm-fluent-bit:latest
build:
context: ./configs/fluent-bit
dockerfile: Dockerfile
container_name: fluent-bit
volumes:
- ./configs/fluent-bit/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf:ro
- ./configs/fluent-bit/parsers.conf:/fluent-bit/etc/parsers.conf:ro
- ./configs/fluent-bit/scripts:/fluent-bit/scripts:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/log:/var/log:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
mem_limit: 128m
cpus: "0.25"
fluent-bit.conf
[SERVICE]
Flush 5
Log_Level info
Daemon off
Parsers_File parsers.conf
[INPUT]
Name tail
Path /var/lib/docker/containers/*/*.log
Parser docker
Tag docker.*
Mem_Buf_Limit 5MB
[INPUT]
Name tail
Path /var/log/*.log
Parser syslog
Tag system.*
Mem_Buf_Limit 5MB
[FILTER]
Name record_modifier
Match docker.*
Record source_type docker
Record app_slug clm-backend
[FILTER]
Name record_modifier
Match system.*
Record source_type system
Record app_slug clm-system
[OUTPUT]
Name forward
Match *
Host fluentd
Port 24224
parsers.conf
[PARSER]
Name docker
Format json
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L
[PARSER]
Name syslog
Format regex
Regex ^(?<time>[^ ]+ [^ ]+) (?<ident>[a-zA-Z0-9_\/\.]+)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$
Time_Key time
Time_Format %b %d %H:%M:%S
Collecting Docker Logs
Automatic Container Discovery
#!/bin/bash
# scripts/generate-container-map.sh
# Generate container map for Fluent Bit
docker ps --format '{{.Names}}' | while read container; do
log_path=$(docker inspect --format='{{.LogPath}}' "$container")
echo "$container: $log_path"
done
Manual Configuration
[INPUT]
Name tail
Path /var/lib/docker/containers/docker-container-id/*.log
Parser docker
Tag docker.clm-backend
Collecting System Logs
[INPUT]
Name tail
Path /var/log/messages
Parser syslog
Tag system.messages
[INPUT]
Name tail
Path /var/log/secure
Parser syslog
Tag system.secure
[INPUT]
Name tail
Path /var/log/auth.log
Parser syslog
Tag system.auth
Monitoring
Health Check
curl http://localhost:2020/api/v1/health
Metrics
curl http://localhost:2020/api/v1/metrics
Troubleshooting
Check Logs
docker logs fluent-bit --tail 100
Test Parser
fluent-bit -c /fluent-bit/etc/fluent-bit.conf -p parsers_file=/fluent-bit/etc/parsers.conf -T
Next Steps
- Fluentd - Log forwarder
- OpenSearch - Storage