10x系列之Clay.io是如何处理日志的

jopen 9年前

【编者的话】Clay.io基于Docker来管理服务器日志,架构组合是Docker+Logstash+ElasticSearch,文章对各个工具进行了简单介绍。Clay.io还开源了Docker容器,以帮助开发者快速构建一个分布式的日志系统。

对于一个小团队来说,管理20多台服务器并不是一件简单的事情,当发生故障时,我们需要迅速定位问题。当然我们不能挨个去ssh,这非常耗时间,在Clay.io我们选择使用 Logstash来聚合日志。

10x系列之Clay.io是如何处理日志的

这是我的“10x”系列的第二篇文章,如果你错过了上一篇,可以 点此阅读。

Logstash概览

Logstash的部署可以分为两部分,聚合服务器(集群)和客户端服务器,聚合服务器可以通过 logstash包运行,客户端服务器可以通过 logstash-forwarder运行,它负责将日志传输到 logstash实例。这是我们的配置图:
10x系列之Clay.io是如何处理日志的

注意 logstash-forwarder不会rotate(分割)日志,日志ratation是一个将老的日志按照大小或者日期存储到buckets的过程,做这项工作的工具是 [logrotate](http://linuxcommand.org/man_pages/logrotate8.html)

日志分析

10x系列之Clay.io是如何处理日志的

Logstash进程会运行 ElasticSearchKibana来分析日志,ElasticSearch支持多条件查询和过滤日志数据。

注意你不能对外暴露ElasticSearch的端口,以免服务器遭受攻击。我们就曾经被攻击过,解决方案是将我们的基础架构迁移到 Amazon VPC,这样所有的服务都在内网环境中。

Journalist + Scribe

我们已经开源了我们的Docker容器,这样所有人都可以在几秒钟内构建一个分布式的日志系统。
Logstash Server: clay/journalist-public
Logstash-forwarder Server: clay/scribe-public
原文地址: http://zolmeister.com/2014/10/ ... .html