+ All Categories
Home > Technology > Centralized logging system using mongoDB

Centralized logging system using mongoDB

Date post: 28-Jan-2015
Category:
Upload: vivek-parihar
View: 126 times
Download: 0 times
Share this document with a friend
Description:
This talk will cover the need of a centralized logging system, showcasing the architecture of the system. Also, I talk about how we ended up building this centralized logging system, What was the need for such a system, what problems we faced, how MongoDB fits into this and what others can learn from this. I also covered some how can we use mongoDB to make our logging system for realtime analytics and alerting system . The major use case of this system it to keeping track of meaningful events. This could be -: 1. How many users registered ? 2. How many registrations fails ? 3. Most occurred errors while doing something. 4. Realtime Analytics and Alerts 5. Identifying the possible threats.
Popular Tags:
48
Centralized Logging System Using MongoDB @vparihar AVP Engineering,Webonise Lab Vivek Parihar
Transcript
Page 1: Centralized logging system using mongoDB

Centralized Logging System Using MongoDB

@vparihar

AVP Engineering,Webonise Lab

Vivek Parihar

Page 2: Centralized logging system using mongoDB

Who Am I?

● A Weboniser and Rubyist● Blogger(vparihar01.github.com)● MongoDb user● Geek● DevOps● Mainly write Ruby, but have great passion for Javascript and Cloud

Platforms...

Page 3: Centralized logging system using mongoDB

● What is Logging? ● Why we need Logging? ● Logging DO’s and Don’t ● Logs are Streams, Not FIles● Problems managing Logs for huge INFRA● What Central Logging System can do for us?● Central Logging System Architecture● What and why Fluentd?● Why MongoDB is good fit.

Agenda

Page 4: Centralized logging system using mongoDB

What is Logging?

Mmmm Logging: It is the most important part of any application.

In General, Logging refers to keeping track of something.

Page 5: Centralized logging system using mongoDB

Why we need Logging?

Page 6: Centralized logging system using mongoDB

Logging: Helps me finding and fixing bugs

Page 7: Centralized logging system using mongoDB

Logging: Extensively used for Debugging

Page 8: Centralized logging system using mongoDB

Logging: Helps us diagnose & understand the behaviour of application.

Page 9: Centralized logging system using mongoDB

Logging: Tells us exactly what happened when, where and why?

Who did it ?At what time ?What did he steal ?

Page 10: Centralized logging system using mongoDB

Logging: Do’s and Don’t

#1 It should be FAST

Page 11: Centralized logging system using mongoDB

Logging: Do’s and Don’t

#2 Should not affect user

Prevent DISK BLOAT

Page 12: Centralized logging system using mongoDB

It should not be like-:{● "#########its working#########"

● "!!!!!coming here in to get secondary users!!!!!"

● "#########I am Here#########"

● "#########Task completed#######"}

Logging: Do’s and Don’t

#3 Do Log only useful INFO

Page 13: Centralized logging system using mongoDB

Logging: Do’s and Don’t

4. Differentiate Log Levels

Page 14: Centralized logging system using mongoDB

Logs Are Streams, Not Files

Logs are a stream, and it behooves everyone to treat them as such. Your programs should log to stdout and/or stderr and omit any attempt to handle log paths, log rotation, or sending logs over the syslog protocol.

Directing where the program’s log stream goes can be left up to the runtime container: a local terminal or IDE (in development environments), an Upstart / Systemd launch script (in traditional hosting environments), or a system like Logplex/Heroku (in a platform environment).

By: Adam Wiggins, Heroku co-founder.

Page 15: Centralized logging system using mongoDB

Problems managing Logs for huge Infra

Page 16: Centralized logging system using mongoDB

What about infra like these ?

Problems managing Logs for huge Infra

Page 17: Centralized logging system using mongoDB

Expression like:

Page 18: Centralized logging system using mongoDB

How can we solve huge Infra problem ?

Page 19: Centralized logging system using mongoDB

Solution: Centralized Logging System

Page 20: Centralized logging system using mongoDB

What Centralized Logging System can do for us?

Page 21: Centralized logging system using mongoDB

What Centralized Logging System can do for us?

All of the logs are in one place, this makes things like searching through logs and analysis across multiple servers easier than bouncing around between boxes. Greatly simplifying log analysis and correlation tasks.

#1 Log Collections

Page 22: Centralized logging system using mongoDB

#2 Aggregation

Scaled-out servers behind load balancers each produce their own log files, making it impossible to debug a single action flow that distributed between servers, unless the logs converge into a single article.

What Centralized Logging System can do for us?

Page 23: Centralized logging system using mongoDB

#3 High Availability

Suppose your system is down or overloaded and unable to tell you what happened.

What Centralized Logging System can do for us?

Page 24: Centralized logging system using mongoDB

Local logs from the server may be lost in the event of an intrusion or system failure. But by having the logs elsewhere you at least have a chance of finding something useful about what happened.

#4 Security

What Centralized Logging System can do for us?

Page 25: Centralized logging system using mongoDB

It reduces disk space usage and disk I/O on core servers that should be busy doing something else.

#5 Prevent Disk BLOAT

What Centralized Logging System can do for us?

Page 26: Centralized logging system using mongoDB

#6 Visual IndicatorsAbnormal behaviors can be detected faster when we see them in a visual instrument such as a graph, where peak points are easily noticed.

What Centralized Logging System can do for us?

Page 27: Centralized logging system using mongoDB

Centralized Logging System Architecture

Page 28: Centralized logging system using mongoDB

What and Why ?

Page 29: Centralized logging system using mongoDB

What’s Fluentd?

It’s like syslogd, but uses JSON for log messages

Page 30: Centralized logging system using mongoDB

What’s Fluentd?

Page 31: Centralized logging system using mongoDB

What’s Fluentd?

timetag

record

Page 32: Centralized logging system using mongoDB

What’s Fluentd?

Page 33: Centralized logging system using mongoDB

What’s Fluentd?

Plug-in Plug-in Plug-in

Page 34: Centralized logging system using mongoDB

So Fluentd is a:BufferRouterCollectorConverterAggregator…….

What’s Fluentd?

Page 35: Centralized logging system using mongoDB

It’s written in RUBY :)

Why Fluentd?

Page 36: Centralized logging system using mongoDB

Extensibility - Plugin ArchitectureWhy Fluentd?

Page 37: Centralized logging system using mongoDB

Unified log format - JSON formatWhy Fluentd?

Page 38: Centralized logging system using mongoDB

Reliable - HA configurationWhy Fluentd?

Page 39: Centralized logging system using mongoDB

Easy to install - RPM/deb packages> sudo fluentd --setup && fluentd

Very small footprint> small engine (3,000 line) + plugins

Why Fluentd?

Page 40: Centralized logging system using mongoDB

Why is good fit ?

Page 41: Centralized logging system using mongoDB

1. It’s Schemaless

Document-oriented / JSON is a great format for log information. Very flexible and “schemaless” in the sense we can throw in an extra field any time we want.

Why ?

Page 42: Centralized logging system using mongoDB

2. Fire and Forget

MongoDB inserts can be done asynchronously.

Why ?

Page 43: Centralized logging system using mongoDB

3. Scalable and easy to replicate.

Built in ReplicaSet and Sharding provides high availability.

Why ?

Page 44: Centralized logging system using mongoDB

4. Centralized and easy remote access

Why ?

Page 45: Centralized logging system using mongoDB

5. Capped Collection● They "remember" the insertion order of their documents● They store inserted documents in the insertion order on disk● They remove the oldest documents in the collection automatically as new

documents are inserted

However, you give up some things with capped collections:

● They have a fixed maximum size● You cannot shared a capped collection● Any updates to documents in a capped collection must not cause a document to

grow. (i.e. not all$set operations will work, and no $push or $pushAll will)● You may not explicitly .remove() documents from a capped collection

Why ?

Page 46: Centralized logging system using mongoDB

6. Tailing Logs● You’ll really miss ability to tail logfiles● Or, .. will you?● MongoDB offers tailable cursors

Why ?

Page 47: Centralized logging system using mongoDB

Tailable Cursors

What with Tailable Cursors ?

We can implement the pub/sub usingNode.js and MongoDB

https://github.com/scttnlsn/mubsub

Why ?

Page 48: Centralized logging system using mongoDB

Thanks

Would Love to answer your queries...

Vivek Parihar@vparihar


Recommended