Distributed Logging Architecture in Container Era
LinuxCon Japan 2016 at Jun 13 2016 Satoshi "Moris" Tagomori (@tagomoris)
Distributed Logging Architecture in Container Era LinuxCon Japan - - PowerPoint PPT Presentation
Distributed Logging Architecture in Container Era LinuxCon Japan 2016 at Jun 13 2016 Satoshi "Moris" Tagomori (@tagomoris) Satoshi "Moris" Tagomori (@tagomoris) Fluentd, MessagePack-Ruby, Norikra, ... Treasure Data, Inc.
LinuxCon Japan 2016 at Jun 13 2016 Satoshi "Moris" Tagomori (@tagomoris)
about an users access
about an users access
from many services to know what is happening
Users Service (Application) Logs Users Logs
(VM -> containers)
development environment (containers on desktop)
→ be gone w/ container instance 😟
→ hosts are shared by many services ☹
→ one more component 😟
→ one more tool to depend on ☹
→ very hard to maintain 😟
→ many containers/roles in a host ☹
Collector nodes (Docker containers + agent) Destination (Storage, Database, ...) Aggregator nodes
source aggregation NO source aggregation YES destination aggregation NO destination aggregation YES
w/o source aggregation
w/ source aggregation
collector aggregator aggregate container
collector aggregator
(by specifying localhost)
(by deployment only for aggregate containers)
aggregate container
w/o destination aggregation
w/ destination aggregation
aggregator collector destination
free from storage side changes
aggregator
Scaling Up Endpoints HTTP/TCP load balancer Huge queue + workers Scaling Out Endpoints Round-robin clients
Load balancer Backend nodes Collector nodes Aggregator nodes
in collector nodes
Load balancer Backend nodes
by adding aggregator nodes
Without Destination Aggregation With Destination Aggregation Scaling Up Endpoints Systems in early stages Collecting logs over Internet
Using queues Scaling Out Endpoints Impossible :( Collector nodes must know all endpoints ↓ Uncontrollable Collecting logs in datacenter
directly - less overhead
in application code
Application code
reads logs from file parse JSON objects writes logs to Elasticsearch
http://kubernetes.io/docs/getting-started-guides/logging-elasticsearch/ Elasticsearch Application code
Files (JSON)
to localhost Fluentd
gets logs over TCP pushes logs into Kafka
Kafka Application code
to localhost Fluentd
gets logs over TCP sends logs into Aggregator Fluentd w/ round-robin load balance
Application code