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. .NetCore使用NLog写入数据库总结

    考虑到项目后期添加日志的需求,抽个闲暇时间学习一下使用NLog插件将日志信息写入到数据库中,完整项目见下面: 遇到的问题: 使用NLog写到SQLServer里面的中文显示问号? 解决方法:调整数据库 ...

  2. English--元音

    English|元音 在一开始学习英语的时候,最需要掌握的就是音标.所以需要从音标的元音开始,并且不局限于掌握音标的元音与辅音,大家可以参考下英文版发音课,并不知道只学习元音与辅音,还有各种弱读连读等 ...

  3. js生成一定范围内的随机整数

    Math.floor(Math.random()*(m-n+1)+n) Math.floor(Math.random() * (50 - 1 + 1) + 1): 生成1-50内的随机整数

  4. 【MySQL】rds 不支持镜像表/联合表,怎么办?

    出于对业务的不了解,往往会让人做出错误的判断 CREATE TABLE `new_tables` (   `customer_id` int(11) NOT NULL AUTO_INCREMENT C ...

  5. centos7安装mysql注意点

    yum安装yum -y install mariadb-server 启动服务systemctl start mariadb.service 开机自动启动systemctl enable mariad ...

  6. cookie跨域解决方案

    cookie的名/值对中的值不允许出现分号.逗号和空白符,因此在设置cookie前要用encodeURIComponent()编码,读取时再用decodeURIComponent()解码. cooki ...

  7. Shell 编程 排序工具 sort 和 uniq

    本篇主要写一些shell脚本排序工具的使用. sort 概述 sort是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序. 用法 sort [选项] 参数 -f:忽略大小写 -b ...

  8. mapping 映射

    es的映射就相当于编程语言中给变量定义类型,定义后的变量使用起来更高效,未定义的变量相较于定义的性能肯定是不如的.所以需要掌握es映射. 未定义映射es会对提供的数据进行类型猜测,如果对自动判断的类型 ...

  9. [转]【HttpServlet】HttpServletResponse接口 案例:完成文件下载

    创建时间:6.19 & 6.24 1.案例-完成文件下载 1)  什么情况下会文件下载? 浏览器不能解析的文件就下载 *使用a标签直接指向服务器上的资源 2)什么情况下需要在服务端编写文件下载 ...

  10. VUE-X 的传值使用

    1.导入vuex   vuex是基于vue 的 import Vuex from 'vuex' Vue.use(Vuex); 导入 2.创建store 实例 let store = new Vuex. ...