分布式日志系统
我们采用了一个经典的组合 logstash + elasticsearch + kibana。
说明:
多个独立的agent(Shipper)负责收集各应用不同来源的数据,中心agent(Indexer)负责汇总和分析数据,在中心agent前的Broker(使用redis实现)作为缓冲区,中心LogStash后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。
- Shipper表示日志发送者,在应用中使用NLog组件来发送日志数据;
- Broker作为远程agent与中心agent之间的缓冲区,使用redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在redis中,而不至于丢失;
- 中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter);
- ElasticSearch用于存储最终的数据,并提供搜索功能;
- Kibana提供一个简单、丰富的web界面,数据来自于ElasticSearch,支持各种查询、统计和展示;
在搭建完成之后要做的:
- 使用LogStash的Filter对日志数据进行过滤和分析;
- 使用Redis的Cluster模式替换当前的多点单机模式;
- 在elasticsearch中对数据进行高级的分析和查询;
- 熟悉Kibana的展示组件以及查询语法;