Fluentd and Docker - running fluentd within a docker container

36
FLUENTD: UNIFIED LOGGING LAYER John Hammink August 11, 2015 Docker San Francisco Meetup

Transcript of Fluentd and Docker - running fluentd within a docker container

Page 1: Fluentd and Docker - running fluentd within a docker container

FLUENTD: UNIFIED LOGGING LAYER

John HamminkAugust 11, 2015

Docker San Francisco Meetup

Page 2: Fluentd and Docker - running fluentd within a docker container

About Me

• A recovering software & QA engineer turned digital artist once interested in fractals;

• now into data visualization based on large datasets rendered directly to GPU (RGL, various Python GL libraries, etc.)

• github: jammink2; twitter: rijksband

Page 3: Fluentd and Docker - running fluentd within a docker container

Tweet NOW!“At #svde learning how to collect more event data using #Fluentd”

Page 4: Fluentd and Docker - running fluentd within a docker container

WHAT’S FLUENTD?

An extensible & reliable data collection tool

simple core + plugins

buffering, HA (failover),load balancing, etc.

like syslogd

Page 5: Fluentd and Docker - running fluentd within a docker container

What’s Fluentd?

> Data collector for unified logging layer> Streaming data transfer based on JSON> Written in Ruby

> Gem based various plugins> http://www.fluentd.org/plugins

> Working in production> http://www.fluentd.org/testimonials

Page 6: Fluentd and Docker - running fluentd within a docker container

data collection tool

Page 7: Fluentd and Docker - running fluentd within a docker container

✓ duplicated code for error handling...✓ messy code for retrying mechnism...

Blueflood

MongoDB

Hadoop

Metrics

Amazon S3

Analysis

Archiving

MySQL

Apache

Frontend

Access logs

syslogd

App logs

System logs

Backend

Your system

bash scripts ruby scripts

rsync

log file

bash

python scripts

customloggger

cron

other customscripts...

Page 8: Fluentd and Docker - running fluentd within a docker container

(this is painful!!!)

Page 9: Fluentd and Docker - running fluentd within a docker container

Blueflood

MongoDB

Hadoop

Metrics

Amazon S3

Analysis

Archiving

MySQL

Apache

Frontend

Access logs

syslogd

App logs

System logs

Backend

Your systemfilter / buffer / route

Page 10: Fluentd and Docker - running fluentd within a docker container

extensible

Page 11: Fluentd and Docker - running fluentd within a docker container

CORE PLUGINS• Divide & Conquer• Buffering & Retries• Error Handling• Message Routing• Parallelism

• Read Data• Parse Data• Buffer Data• Write Data• Format Data

CommonConcerns

Use CaseSpecific

Page 12: Fluentd and Docker - running fluentd within a docker container

architecture

Page 13: Fluentd and Docker - running fluentd within a docker container

INTERNAL ARCHITECTURE

“input-ish” “output-ish”

Input Parser Buffer Output FormatterFilter

Page 14: Fluentd and Docker - running fluentd within a docker container

Internal Architecture (Simplified)

Input Buffer Output

Plugin Plugin Plugin

2012-02-04 01:33:51 myapp.buylog { “user”: ”me”, “path”: “/buyItem”, “price”: 150, “referer”: “/landing” }

timetag

record

Page 15: Fluentd and Docker - running fluentd within a docker container

Architecture :: Input plugins

Input

HTTP+JSON (in_http)File tail (in_tail)Syslog (in_syslog)...

Plugin

✓ Receive logs

✓ Or pull logs from data

sources

✓ in non-blocking manner

Page 16: Fluentd and Docker - running fluentd within a docker container

Architecture :: Output plugins

Plugin

✓ Write or send event logs

Output

File (out_file)Amazon S3 (out_s3)MongoDB (out_mongo)...

Page 17: Fluentd and Docker - running fluentd within a docker container

Architecture :: Buffer plugins

Plugin

✓ Improve performance

✓ Provide reliability

✓ Provide thread-safety

Buffer

Memory (buf_memory)File (buf_file)

Page 18: Fluentd and Docker - running fluentd within a docker container

Architecture :: Buffer plugins

Plugin

✓ Improve performance

✓ Provide reliability

✓ Provide thread-safety

chunk

chunk

chunk output

Input

Page 19: Fluentd and Docker - running fluentd within a docker container
Page 20: Fluentd and Docker - running fluentd within a docker container

reliable data transfer

Page 21: Fluentd and Docker - running fluentd within a docker container

DIVIDE & CONQUER & RETRY

error retry

error retry retry

retry

Page 22: Fluentd and Docker - running fluentd within a docker container

reliable process

Page 23: Fluentd and Docker - running fluentd within a docker container

THIS?

Page 24: Fluentd and Docker - running fluentd within a docker container

OR THIS?

Page 25: Fluentd and Docker - running fluentd within a docker container

M X N → M + N

Nagios

MongoDB

Hadoop

Alerting

Amazon S3

Analysis

Archiving

MySQL

Apache

Frontend

Access logs

syslogd

App logs

System logs

Backend

Databasesbuffer/filter/route

Page 26: Fluentd and Docker - running fluentd within a docker container

use cases

Page 27: Fluentd and Docker - running fluentd within a docker container

SIMPLE FORWARDING

Page 28: Fluentd and Docker - running fluentd within a docker container

# logs from a file<source> type tail path /var/log/httpd.log format apache2 tag backend.apache</source>

# logs from client libraries<source> type forward port 24224</source>

# store logs to ES and HDFS<match backend.*> type mongo database fluent collection test</match>

Page 29: Fluentd and Docker - running fluentd within a docker container

LESS SIMPLE FORWARDING

Page 30: Fluentd and Docker - running fluentd within a docker container

LAMBDA ARCHITECTURE

Page 31: Fluentd and Docker - running fluentd within a docker container

# logs from a file<source> type tail path /var/log/httpd.log format apache2 tag web.access</source>

# logs from client libraries<source> type forward port 24224</source>

# store logs to ES and HDFS<match *.*> type copy

<store> type elasticsearch logstash_format true </store>

<store> type webhdfs host namenode port 50070 path /path/on/hdfs/ </store></match>

Page 32: Fluentd and Docker - running fluentd within a docker container

FLUENTD ON KUBERNETES (NOV 2015)

Page 33: Fluentd and Docker - running fluentd within a docker container

FLUENTD LOGGING DRIVER (APR 2015)

Page 34: Fluentd and Docker - running fluentd within a docker container

Tweet Again!“Happy v1 #k8s and congrats #Fluentd for becoming a #docker logging driver”

Page 35: Fluentd and Docker - running fluentd within a docker container

DEMO: FLUENTD + DOCKER

Page 36: Fluentd and Docker - running fluentd within a docker container

THANK YOU!

AND TREASURE DATA IS HIRING!WWW.TREASUREDATA.COMC/CAREERS