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. ansible简易使用

    一.本地环境: centos 7    192.168.10.10      主控机 centos 7    192.168.10.130    被控机 Windows7  192.168.10.13 ...

  2. Servlet处理(jQuery)Ajax请求

    1. jQuery     jQuery是一个JavaScript函数库,极大的简化了JavaScript编程,很容易学习.jQuery是目前最流行的开源js框架,并且提供了大量的扩展. 2. Aja ...

  3. python3 + robotframework ride 乱码问题

    执行ride时乱码问题 如果被执行的文件所在路径中含有中文,执行时可能会报如下错误 robotframework版本:robotframework-ride 1.7.3.1python 3.7.3 解 ...

  4. Django app安装,配置mysql,时区,模板,静态文件,媒体,admin

    1.创建app python manage.py startapp 名字 Migrations 数据库同步目录,记录数据库同步的记录 init 包文件 Admin.py django自带的后台管理文件 ...

  5. springboot工程启动即执行一段代码

    最近在做一个项目, 需要Tomcat启动后就执行一段代码 在这里需要用到CommandLineRunner这个接口, Spring boot的CommandLineRunner接口主要用于实现在应用初 ...

  6. Linux系统运行模式介绍

    Linux运行模式 自由服务,即不需要用户独立去安装的软件服务,而是在系统安装好之后就可以直接使用的服务(内置服务). 运行模式也称为运行级别,属于linux的自有服务. 运行模式可以理解为一旦你开机 ...

  7. 源码解析 || ArrayList源码解析

    前言 这篇文章的ArrayList源码是基于jdk1.8版本的源码,如果与前后版本的实现细节出现不一致的地方请自己多加注意.先上一个它的结构图 ArrayList作为一个集合工具,对于我而言它值得我们 ...

  8. 借助模板类自动实现COM连接点接收器(Sink)

    本文的更新:借助模板类自动实现COM连接点接收器(Sink)更新 (2014-06-09 17:09) 最初的代码源自free2000fly的一个标准的 COM 连接点接收器(Sink)的实现, 使用 ...

  9. linux 利用 crontab 实现 程序开机启动/crontab任务的多种实现方法

    方法一,用户登录服务器,直接修改: crontab -e 然后添加: @reboot [nohup] {命令} ctrl + O ctrl + x 方法二,指定用户进行修改: sudo crontab ...

  10. python操作mysql(增、删、改、查)

    用python操作数据库,特别是做性能测试造存量数据时特别简单方便,比存储过程方便多了. 连接数据库 前提:安装mysql.python,参考:https://www.cnblogs.com/Uncl ...