Go运维开发之日志收集(1)技术选型和架构设计

Go运维开发之日志收集(1)收集应用程序日志到kafka中

一 , 需求背景

每个业务系统都有自己的⽇志,当业务系统出现问题时,需要通过查找⽇志信息来定位和解决问题。 当业务系统服务器⽐较少时,登陆到服务器上查看即可满⾜。但当系统机器规模巨⼤,登陆到服务器上查看⼏乎不现实(分布式的系统,⼀个系统部署在⼗⼏甚至几十台服务器上)

解决方案

把服务器上的⽇志实时收集,统⼀存储到中⼼系统。 再对这些⽇志建⽴索引,通过搜索即可快速找到对应的⽇志记录。 通过提供⼀个界⾯友好的web⻚⾯实现⽇志展示与检索。

业界方案

有早期的ELK到现在的EFK。ELK在每台服务器上部署logstash,比较重量级,所以演化成客户端部署filebeat的EFK,由filebeat收集向logstash中写数据,最后落地到elasticsearch,通过kibana界面进行日志检索。

业界方案ELK

在这里插入图片描述

优缺点

优点:现成的解决方案,直接拿过来用,能够实现日志收集与检索。

缺点:

运维成本⾼,每增加⼀个⽇志收集项,都需要⼿动修改配置。
监控缺失,⽆法准确获取logstash的状态。⽆法做到定制化开发与维护。
⽆法做到定制化开发与维护。

日志收集的整体架构:

在这里插入图片描述
LogAgent: 日志收集客户端,用来收集服务器上的日志。Kafka: 高吞吐量的分布式队列(Linkin开发,apache顶级开源项目) ElasticSearch: 开源的搜索引擎,提供基于HTTP RESTful的web接口。
Kibaa: 开源的ES数据分析和可视化工具。
Hadoop: 分布式计算框架,能够对大量数据进行分布式处理的平台。
Storm: -个免 费并开源的分布式实时计算系统。

日志收集系统设计

在这里插入图片描述

二:安装与启动

一: Mac版安装

brew install kafka
安装kafka是需要依赖于zookeeper的,所以安装kafka的时候也会包含zookeeper 
kafka的安装目录:/usr/local/Cellar/kafka 
kafka的配置文件目录:/usr/local/etc/kafka 
kafka服务的配置文件:/usr/local/etc/kafka/server.properties 
zookeeper配置文件: /usr/local/etc/kafka/zookeeper.properties

server.properties中的重要配置

broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://127.0.0.1:9092
log.dirs=/usr/local/var/lib/kafka-logs
zookeeper.properties
dataDir=/usr/local/var/lib/zookeeper
clientPort=2181
maxClientCnxns=0 

二: 启动zookeeper

新起一个终端启动zookeeper
cd /usr/local/Cellar/kafka/1.0.0
./bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties

三: 启动kafka

新起一个终端启动zookeeper,注意启动kafka之前先启动zookeeper
cd /usr/local/Cellar/kafka/1.0.0
./bin/kafka-server-start /usr/local/etc/kafka/server.properties

四:创建topic

新起一个终端来创建主题
cd /usr/local/Cellar/kafka/1.0.0
 
创建一个名为“test”的主题,该主题有1个分区
./bin/kafka-topics --create 
    --zookeeper localhost:2181 
    --partitions 1 
    --topic test

五:查看topic

// 创建成功可以通过 list 列举所有的主题
./bin/kafka-topics --list --zookeeper localhost:2181

// 查看某个主题的信息
./bin/kafka-topics --describe --zookeeper localhost:2181 --topic

六:发送消息

新起一个终端,作为生产者,用于发送消息,每一行算一条消息,将消息发送到kafka服务器
  > ./bin/kafka-console-producer --broker-list localhost:9092 --topic test 
  This is a message
  This is another message

七:消费消息(接收消息)

新起一个终端作为消费者,接收消息
cd /usr/local/Cellar/kafka/1.0.0
> ./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message

八:在生产者发送消息

在步骤六中新起的终端属于一条消息(任意字符),输入完回车就算一条消息,可以看到在步骤7中的消费者端就会显示刚才输入的消息

kafka应用场景

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

zookeeper应用场景

  1. 服务注册与发现
    在这里插入图片描述
  2. 配置中心
    在这里插入图片描述
    安装kafka
    a. 安装JDK,从oracle下载最新的SDK安装
    b. 安装zookeeper3.3.6,下载地址:http://apache.fayea.com/zookeeper/
    1)mv conf/zoo_sample.cfg conf/zoo.cfg
    2)编辑 conf/zoo.cfg,修改dataDir=D:\zookeeper-3.3.6\data
    3)运行bin/zkServer.cmd
    c. 安装kafka
    1)打开链接:http://kafka.apache.org/downloads.html下载kafka2.1.2
    2)打开config目录下的server.properties, 修改log.dirs为D:\kafka_logs,
    修改advertised.host.name=服务器ip
    3)启动kafka ./bin/windows/kafka-server-start.bat ./config/server.preperties

log agent流程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值