33
Sadayuki Furuhashi uentd.org Fluentd the missing log collector

Fluentd meetup at Slideshare

Embed Size (px)

Citation preview

Page 1: Fluentd meetup at Slideshare

Sadayuki Furuhashi!uentd.org

Fluentdthe missing log collector

Page 2: Fluentd meetup at Slideshare

Self-introduction

> Sadayuki Furuhashitwitter/github: @frsyuki

> Treasure Data, Inc.Founder & Software Architect

> Open source projectsMessagePack - “It’s like JSON. but fast and small”

Fluentd - “Log everything in JSON”

Page 3: Fluentd meetup at Slideshare

Today’s topic:

Make log collection easyusing Fluentd

Page 4: Fluentd meetup at Slideshare

Reporting & Monitoring

Page 5: Fluentd meetup at Slideshare

Reporting & Monitoring

Collect Store Process Visualize

Page 6: Fluentd meetup at Slideshare

Collect Store Process Visualize

easier & shorter time

Hadoop / Hive

MongoDB

Treasure Data

Tableau

Excel

R

Page 7: Fluentd meetup at Slideshare

Collect Store Process Visualize

easier & shorter timeHow to shorten here?

Hadoop / Hive

MongoDB

Treasure Data

Tableau

Excel

R

Page 8: Fluentd meetup at Slideshare

Collect Store Process Visualize

easier & shorter timeHow to shorten here?

Hadoop / Hive

MongoDB

Treasure Data

Tableau

Excel

R

Page 9: Fluentd meetup at Slideshare

Fluentd Users

Page 10: Fluentd meetup at Slideshare

How Fluentd works?

Page 11: Fluentd meetup at Slideshare

=Fluentd

syslogd+

many

Page 12: Fluentd meetup at Slideshare

=Fluentd

syslogd+

many

✓ Plugins

✓ JSON

Page 13: Fluentd meetup at Slideshare

Nagios

MongoDB

Hadoop

Alerting

Amazon S3

Analysis

Archiving

MySQL

Apache

Frontend

Access logs

syslogd

App logs

System logs

Backend

Databasesfilter / buffer / routing

Page 14: Fluentd meetup at Slideshare

Nagios

MongoDB

Hadoop

Alerting

Amazon S3

Analysis

Archiving

MySQL

Apache

Frontend

Access logs

syslogd

App logs

System logs

Backend

Databasesfilter / buffer / routing

Page 15: Fluentd meetup at Slideshare

Nagios

MongoDB

Hadoop

Alerting

Amazon S3

Analysis

Archiving

MySQL

Apache

Frontend

Access logs

syslogd

App logs

System logs

Backend

Databasesfilter / buffer / routing

Page 16: Fluentd meetup at Slideshare

Input Plugins Output Plugins

Buffer Plugins(Filter Plugins)

Page 17: Fluentd meetup at Slideshare

Input Plugins Output Plugins

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

timetag

record

JSON

log

Page 18: Fluentd meetup at Slideshare

in_tail: reads !le and parses lines

fluentdapache

access.log

✓ read a log file✓ custom regexp✓ custom parser in Ruby

in_tail

Page 19: Fluentd meetup at Slideshare

failure handling & retrying

fluentdapache

access.log buffer

✓ retry automatically✓ exponential retry wait✓ persistent on a file

in_tail

Page 20: Fluentd meetup at Slideshare

routing / copying

fluentdapache

access.log buffer

✓ routing based on tags✓ copy to multiple storages

in_tail

Amazon S3

Hadoop

Page 21: Fluentd meetup at Slideshare

# 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 MongoDB and S3<match **> type copy

<match> type mongo host mongo.example.com capped capped_size 200m </match>

<match> type s3 path archive/ </match></match>

Fluentd

Page 22: Fluentd meetup at Slideshare

forwarding

fluentd

fluentd

fluentd

fluentd

fluentd

fluentdfluentd

send / ackFluentd

Page 23: Fluentd meetup at Slideshare

=Fluentd

syslogd+

many

✓ Plugins

✓ JSON

Page 24: Fluentd meetup at Slideshare

Fluentd - plugin distribution platform

$ fluent-gem search -rd fluent-plugin

$ fluent-gem install fluent-plugin-mongo

Page 25: Fluentd meetup at Slideshare

Fluentd - plugin distribution platform

$ fluent-gem search -rd fluent-plugin

$ fluent-gem install fluent-plugin-mongo

117 plugins!

Page 26: Fluentd meetup at Slideshare

Collect Store Process Visualize

Hadoop / Hive

MongoDB

Treasure DataTableau

Excel

R

our company provides

Treasure Data?

Page 28: Fluentd meetup at Slideshare

Backup slides

Page 29: Fluentd meetup at Slideshare

Fluentd and Flume NG - con!guration

<source> type forward port 24224</source>

<match **> type file path /var/log/logs</match>

# source

host1.sources = avro-source1

host1.sources.avro-source1.type = avro

host1.sources.avro-source1.bind = 0.0.0.0

host1.sources.avro-source1.port = 41414

host1.sources.avro-source1.channels = ch1

# channel

host1.channels = ch_avro_log

host1.channels.ch_avro_log.type = memory

# sink

host1.sinks = log-sink1

host1.sinks.log-sink1.type = logger

host1.sinks.log-sink1.channel = ch1

Page 30: Fluentd meetup at Slideshare

Fluentd and Flume NG - topology

fluentd

fluentd

fluentd

fluentd

fluentd

fluentdfluentd

send / ack

Fluentd

Agent

Agent

Agent

Agent

Collector

CollectorCollector

send / ack

Flume NG

Page 31: Fluentd meetup at Slideshare

out_hdfs

fluentdapache

access.log buffer

✓ retry automatically✓ exponential retry wait✓ persistent on a file

✓ slice files based on time

in_tail

2013-01-01/01/access.log.gz2013-01-01/02/access.log.gz2013-01-01/03/access.log.gz...

fluentd

fluentd

fluentd

✓ automatic fail-over✓ load balancing

Page 32: Fluentd meetup at Slideshare

out_s3

fluentdapache

access.log buffer

✓ retry automatically✓ exponential retry wait✓ persistent on a file

Amazon S3

✓ slice files based on time

in_tail

2013-01-01/01/access.log.gz2013-01-01/02/access.log.gz2013-01-01/03/access.log.gz...

Page 33: Fluentd meetup at Slideshare

out_hdfs

fluentdapache

access.log buffer

✓ retry automatically✓ exponential retry wait✓ persistent on a file

✓ slice files based on time

in_tail

2013-01-01/01/access.log.gz2013-01-01/02/access.log.gz2013-01-01/03/access.log.gz...

HDFS

✓ custom text formater