Go语言系列- 日志收集系统

Posted zhangyafei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言系列- 日志收集系统相关的知识,希望对你有一定的参考价值。

一、日志收集系统背景

1 项目背景

  • a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题
  • b. 当系统机器比较少时,登陆到服务器上查看即可满足
  • c. 当系统机器规模巨大,登陆到机器上查看几乎不现实

2 解决方案

  • a. 把机器上的日志实时收集,统一的存储到中心系统
  • b. 然后再对这些日志建立索引,通过搜索即可以找到对应日志
  • c. 通过提供界面友好的web界面,通过web即可以完成日志搜索

3 遇到的问题

a. 实时日志量非常大,每天几十亿条
b. 日志准实时收集,延迟控制在分钟级别
c. 能够水平可扩展

4 业界方案ELK

技术图片

 

 5 ELK方案问题

a. 运维成本高,每增加一个日志收集,都需要手动修改配置
b. 监控缺失,无法准确获取logstash的状态
c. 无法做定制化开发以及维护

 

二、日志收集系统架构

6 日志收集系统设计

技术图片

 

各组件介绍

a. Log Agent,日志收集客户端,用来收集服务器上的日志
b. Kafka,高吞吐量的分布式队列,linkin开发,apache顶级开源项目
c. ES,elasticsearch,开源的搜索引擎,提供基于http restful的web接口
d. Hadoop,分布式计算框架,能够对大量数据进行分布式处理的平台

 

以上是关于Go语言系列- 日志收集系统的主要内容,如果未能解决你的问题,请参考以下文章

海量日志实时收集系统架构设计与go语言实现

Go实现海量日志收集系统

ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)

日志收集系统(scribechukwakafkaflume)对比

(19)go-micro微服务filebeat收集日志

六、跨语言微服务框架 - Istio日志采集EFK