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.日志收集系统设计

技术图片

 

 

 7.各组件介绍

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

    7.1 kafka应用场景

1. 异步处理, 把非关键流程异步化,提高系统的响应时间和健壮性

技术图片技术图片 

2. 应用解耦,通过消息队列,

技术图片

 

 

 技术图片

3. 流量削峰

技术图片

    7.2 zookeeper应用场景

1. 服务注册&服务发现

技术图片

2. 配置中心

技术图片

3. 分布式锁

- Zookeeper是强一致的
- 多个客户端同时在Zookeeper上创建相同znode,只有一个创建成功

8. 安装kafka

a.安装JDK,从oracle下载最新版本的SDK安装

b.安装zookeeper,https://mirrors.cnnic.cn/apache/zookeeper/

 1)下载解压到指定目录

 2)修改conf/zoo_sample.cfg为conf/zoo.cfg

 3)新建data文件夹,编辑 conf/zoo.cfg,修改dataDir=D:zookeeper-3.3.6data

 4)运行bin/zkServer.cmd

c. Kafka官网下载安装包 http://kafka.apache.org/downloads.html

1)新建logs文件夹,打开config目录下的server.properties, 修改log.dirs为log目录,修改advertised.host.name=服务器ip

2)启动kafka ./bin/windows/kafka-server-start.bat ./config/server.preperties(windows.inwindowskafka-server-start.bat .configserver.properties)

 二、日志客户端的开发

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

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

Go实现海量日志收集系统

日志架构与部署

基于Flume的美团日志收集系统架构和设计

基于Flume的美团日志收集系统架构和设计

Flume日志收集系统架构详解