ELK集群在大规模的日志收集中面临着数据量大,收集不及时,或宕机的风险,可以选择单节点的redis,但是相比redis,kafka集群高可用的特性,更优,下面来配置kafka集群配置elk作为缓存的方法。

kafka集群的安装配置

一. 初始环境准备

1.服务器准备
主机 地址
db01 10.0.0.200
db02 10.0.0.201
db03 10.0.0.202
# cat /etc/redhat-release  #这里我使用的是centos7.6的系统
CentOS Linux release 7.6.1810 (Core)
2. 下载安装包

安装kafka之前,需要每台服务器上配置好zookeeper

#(以下操作,三台服务器同时操作)
#创建目录
mkdir /kafka
cd /kafka #下载kafka地址
http://kafka.apache.org/downloads #下载kafka
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.1/kafka_2.11-2.3.1.tgz #下载zookeeper地址
http://zookeeper.apache.org/releases.html #下载zookeeper
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz #jdk准备好
jdk-8u151-linux-x64.tar.gz
3.配置java环境
#解压tar包
tar xf jdk-8u151-linux-x64.tar.gz -C /opt #创建软链接
ln -s /opt/jdk1.8.0_151/ /opt/jdk #配置环境变量
#在/etc/profile后三行添加如下:
# tail -3 /etc/profile
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin #验证
source /etc/profile java -version
java version "1.8.0_151"

二. 安装zookeeper服务

1.安装kafka
#解压zookeeper
tar xf zookeeper-3.4.14.tar.gz -C /opt/ #创建软链接
ln -s /opt/zookeeper-3.4.14 /opt/zookeeper #创建数据目录
mkdir -p /data/zookeeper #编辑配置文件
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg vim /opt/zookeeper/conf/zoo.cfg tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=10.0.0.200:2888:3888
server.2=10.0.0.201:2888:3888
server.3=10.0.0.202:2888:3888 #复制到另外两台
scp /opt/zookeeper/conf/zoo.cfg 10.0.0.201:/opt/zookeeper/conf/ scp /opt/zookeeper/conf/zoo.cfg 10.0.0.202:/opt/zookeeper/conf/ #创建myid
echo 1 > /data/zookeeper/myid #server1
echo 2 > /data/zookeeper/myid #server2
echo 3 > /data/zookeeper/myid #server3
3.启动zookeeper
#三台都启动zookeeper
/opt/zookeeper/bin/zkServer.sh start #查看状态
# /opt/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
# Mode: follower 从库
# Mode: leader 主库 #配置环境变量,更方便的使用命令
echo "export PATH=/opt/zookeeper/bin/:$PATH" >> /etc/profile
source /etc/profile #测试
zkCli.sh -server 10.0.0.202:2181 #可以登录任意一个节点 create /test dhc #创建 get /test #查看 set /test ctt #改变key的值

三.安装kafka并测试

1.安装kafka
#以下操作3台服务器都需要操作,以server1为事列

#解压
tar xf kafka_2.11-2.3.1.tgz -C /opt/
cd /opt #创建软链接
ln -s kafka_2.11-2.3.1 kafka
cd kafka #编辑配置文件 vim config/server.properties #我只放修改的,其他的不动 broker.id=1 #对应zookeeper的id
listeners=PLAINTEXT://10.0.0.200:9092 #配置自己的ip地址
log.retention.hours=24 #改成24小时
zookeeper.connect=10.0.0.200:2181,10.0.0.201:2181,10.0.0.202:2181 #配置集群 #测试启动
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties #只是测试 #最后一行出现一下,证明启动成功
INFO [KafkaServer id=1] started (kafka.server.KafkaServer) #ctrl +c掉,重新后台运行
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties #测试
ps all|grep kafka #查看日志
tail -f /opt/kafka/logs/server.log #在node1上创建test
# bin/kafka-topics.sh --create --bootstrap-server 10.0.0.200:9092 --replication-factor 1 --partitions 1 --topic test #在node2上创建test1
# bin/kafka-topics.sh --create --bootstrap-server 10.0.0.201:9092 --replication-factor 1 --partitions 1 --topic test1 #在node3上查看创建了什么,如果可以看到证明成功
# bin/kafka-topics.sh --list --bootstrap-server 10.0.0.202:9092 #查看具体的topic里面有什么内容
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.0.0.200:9092 --topic kafka --from-beginning #具体实验步骤请看官网
http://kafka.apache.org/quickstart

四 安装filebeat并配置

#安装filebeat(这里就不详细说明了,详细请看上一篇博客)
rpm -ivh jdk-8u102-linux-x64.rpm
rpm -ivh filebeat-7.5.0-x86_64.rpm # grep -Ev '^$|#' /etc/filebeat/filebeat.yml #修改后的配置文件
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.kafka:
hosts: ["10.0.0.200:9092","10.0.0.201:9092","10.0.0.202:9092"]
topic: kafka
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~ #启动filebeat
systemctl start filebeat #验证kafka里面是否有新增topic
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server 10.0.0.201:9092 #查看topic-kafka里面有没有内容
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.0.0.200:9092 --topic kafka --from-beginning

五 配置logstash

#安装logstash(具体的安装步骤请看上一篇博客)
rpm -ivh logstash-7.5.0.rpm #配置logstash
[root@db01 elk]# cat /etc/logstash/conf.d/kafka.conf
input { kafka{
bootstrap_servers => ["10.0.0.200:9092,10.0.0.201:9092,10.0.0.202:9092"]
group_id => "test"
auto_offset_reset => "earliest"
consumer_threads => "5"
decorate_events => "false"
topics => ["kafka"]
type => "bbs_log"
codec => json }
}
output {
stdout {} #只是用来测试输出 }
到此,kafka集群配合filebeat+logstash 完成!

kafka作为elk缓存使用的更多相关文章

  1. 6张图为你分析Kafka Producer 消息缓存模型

    摘要:发送消息的时候, 当Broker挂掉了,消息体还能写入到消息缓存中吗? 本文分享自华为云社区<图解Kafka Producer 消息缓存模型>,作者:石臻臻的杂货铺. 在阅读本文之前 ...

  2. 使用 Kafka 和 ELK 搭建测试日志系统(1)

    本文仅供自己学习,不合适转载. 这是两篇文章的第一部分. 1. 安装 ELK 1.1 安装 ElasticSearch 在海航云上创建一个 Ubutu 16.4 虚机,2核4GB内存. (1)执行以下 ...

  3. linux单机部署kafka(filebeat+elk组合)

    filebeat+elk组合之kafka单机部署 准备: kafka下载链接地址:http://kafka.apache.org/downloads.html 在这里下载kafka_2.12-2.10 ...

  4. Kafka与ELK实现一个日志系统

    1.概述 客户端应用程序在运行过程中可能会产生错误,例如调用服务端接口超时.客户端处理业务逻辑发生异常.应用程序突然闪退等.这些异常信息都是会产生日志记录的,并通过上报到指定的日志服务器进行压缩存储. ...

  5. ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台

    日志分析平台,架构图如下: 架构解读 : (整个架构从左到右,总共分为5层) 第一层.数据采集层 最左边的是业务服务器集群,上面安装了filebeat做日志采集,同时把采集的日志分别发送给两个logs ...

  6. ELK+Kafka学习笔记之搭建ELK+Kafka日志收集系统集群

    0x00 概述 关于如何搭建ELK部分,请参考这篇文章,https://www.cnblogs.com/JetpropelledSnake/p/9893566.html. 该篇用户为非root,使用用 ...

  7. Kafka实战解惑

    目录 一. kafka简介二. Kafka架构方案三. Kafka安装四. Kafka Client API 4.1 Producers API 4.2 Consumers API 4.3 消息高可靠 ...

  8. ELK日志相关

    转: Logstash 讲解与实战应用 原创qw871122016-08-20 16:06:07评论(1)40217人阅读 一.Logstash 介绍 Logstash 是一款强大的数据处理工具,它可 ...

  9. Apache Kafka 企业级消息队列

    1.大纲 了解 Apache Kafka是什么 掌握Apache Kafka的基本架构 搭建Kafka集群 掌握操作集群的两种方式 了解Apache Kafka高级部分的内容 2.消息系统的作用是什么 ...

随机推荐

  1. 关于SQL server事务

  2. SpringBoot 整合MyBatis 统一配置bean的别名

    所谓别名, 就是在mappper.xml配置文件中像什么resultType="xxx" 不需要写全限定类名, 只需要写类名即可. 配置方式有两种: 1. 在 applicatio ...

  3. Vue – 基础学习(4):事件修饰符

    Vue – 基础学习(3):事件修饰符

  4. iOS开发使用Xcode的一些小技巧

    1.打开iOS项目 如果你当前目录下既有project又有workspace,你可以在终端使用命令“xed.”自动打开workspace,如果只有project,它会自动打开project. 2.清理 ...

  5. np.append()

    1.numpy.append() np.append(arr,values,axis=None) 功能:在array后面追加values 参数: arr:array_like 值将附加到此数组的副本. ...

  6. Python多线程采集百度相关搜索关键词

    百度相关搜索关键词抓取,读取txt关键词,导出txt关键词 #百度相关搜索关键词抓取,读取txt关键词,导出txt关键词   # -*- coding=utf-8 -*- import request ...

  7. python基础之一:input、if、while

  8. 修改/etc/docker/daemon.json中的log-opts配置发现无效 docker 限制日志大小

    https://colobu.com/2018/10/22/no-space-left-on-device-for-docker/ 在/etc/docker/daemon.json中修改或添加log- ...

  9. Java Map常用操作

    Java之map常用操作 package basic; import java.util.HashMap; import java.util.Map; /** *Map常用操作方法 */ public ...

  10. 阿里云centos 7上面安装mysql5.7的详细步骤!!!

    前言: 网上太多的linux 的安装mysql教程,很多教程不全或者因为环境不一致导致无法成功安装,以下是亲测的可行性的方法,请参考. 步骤: Centos7操作系统YUM库列表里默认不再提供MySQ ...