ELK+Kafka搭建日志系统

1.什么是ELK

通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成,这三个软件当中,每个软件用于完成不同的功能。

  • Elasticsearch: elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比如 Nginx、Tomcat、系统日志等功能。
  • Logstash: logstash可以通过插件实现日志收集和转发,支持日志过滤,支持普通 log、自定义 json格式的日志解析。
  • kibana: kibana主要是通过接口调用 elasticsearch 的数据,并进行前端数据可视化的展现。

为什么使用 ELK?
ELK 组件在海量日志系统的运维中,可用于解决以下主要问题:

  • 分布式日志数据统一收集,实现集中式查询和管理
  • 故障排查
  • 安全信息和事件管理
  • 报表功能

ELK 组件在大数据运维系统中,主要可解决的问题如下:

  • 日志查询,问题排查,故障恢复,故障自愈
  • 应用日志分析,错误报警
  • 性能分析,用户行为分析

官方站点:https://www.elastic.co/cn/

2.搭建ELK日志系统

架构图:
在这里插入图片描述由于 Logstash 比较耗资源,一般我们不会在应用服务器上直接安装 Logstash 来收集日志,我们可能会采用更轻量级的 Filebeat 来采集日志,但当多台 Filebeat 向 Logstash 传输数据再交给ES入库时,压力会比较大,可以在 Filebeat 和 Logstash 之间加上一层消息队列减轻压力,比如Redis、Kafka。

实验环境:

系统 节点 JDK Zookeeper Kafka Elasticsearch logstash kibana
CentOS7.6 elk-node1 (192.168.100.111) jdk-8u212 zookeeper-3.4.14 kafka_2.12-2.1.0 elasticsearch-6.8.7 logstash-6.8.7 kibana-6.8.7
CentOS7.6 elk-node2 (192.168.100.112) jdk-8u212 zookeeper-3.4.14 kafka_2.12-2.1.0 elasticsearch-6.8.7 logstash-6.8.7 kibana-6.8.7
CentOS7.6 elk-node3 (192.168.100.113) jdk-8u212 zookeeper-3.4.14 kafka_2.12-2.1.0 elasticsearch-6.8.7 logstash-6.8.7

实验准备:

~]# systemctl stop firewalld
~]# systemctl disable firewalld
~]# setenforce 0
~]# sed -i '/SELINUX/s/enforcing/disabled/g' /etc/sysconfig/selinux

~]# cat /etc/hosts
	...
	192.168.100.111 elk-node1
	192.168.100.112 elk-node2
	192.168.100.113 elk-node3

2.1 安装JDK

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

~]# tar xf jdk-8u212-linux-x64.tar.gz -C /usr/local/
~]# cd /usr/local/
~]# ln -sv jdk1.8.0_212/ jdk
~]# echo 'JAVA_HOME=/usr/local/jdk' > /etc/profile.d/jdk.sh
~]# echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/jdk.sh
~]# . /etc/profile.d/jdk.sh
~]# java -version
	java version "1.8.0_212"
	Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
	Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

2.2 安装Zookeeper

下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/

zookeeper配置参数:http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_configuration

在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. 这大概描述了Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理。此处我们需要使用Zookeeper来管理Kafka集群。

~]# tar xf zookeeper-3.4.14.tar.gz -C /opt/
~]# cd /opt/
~]# ln -sv zookeeper-3.4.14/ zookeeper
~]# cd zookeeper/conf/
~]# cp zoo_sample.cfg zoo.cfg
~]# cat zoo.cfg
	tickTime=2000
	initLimit=10
	syncLimit=5
	dataDir=/opt/zookeeper/data
	
	dataLogDir=/opt/zookeeper/log
	autopurge.snapRetainCount=3
	autopurge.purgeInterval=1
	
	clientPort=2181
	server.0=192.168.100.111:2888:3888
	server.1=192.168.100.112:2888:3888
	server.2=192.168.100.113:2888:3888
	
~]# mkdir ../{
   data,log}
~]# echo 0 > ../data/myid		#三台zk编号不同,此处为0,其余两台为12,与配置中的server.x有关
~]# echo 'ZK_HOME=/opt/zookeeper' > /etc/profile.d/zk.sh 
~]# echo 'PATH=$ZK_HOME/bin:$PATH' >> /etc/profile.d/zk.sh
~]# source /etc/profile.d/zk.sh
~]# zkServer.sh start
~]# zkServer.sh status
~]# zkCli.sh -server localhost:2181

配置解析:

  • tickTime:客户端与服务器或者服务器与服务器之间每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认2秒
  • initLimit:集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
  • syncLimit:集群中flower服务器(F)跟leade
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值