ELFK日志分析系统(六)之搭建ELK+Filebeat+Kafka+Zookeeper

引言

ELK日志分析系统(一)之ELK原理
ELK日志分析系统(二)之ELK搭建部署
ELFK日志分析系统(三)之Filebeat
ELFK日志分析系统(四)之Kafka
ELFK日志分析系统(五)之Zookeeper

一、为什么要做日志分析平台?

随着业务量的增长,每天业务服务器将会产生上亿条的日志,单个日志文件达几个GB,这时我们发现用Linux自带工具,cat grep awk 分析越来越力不从心了,而且除了服务器日志,还有程序报错日志,分布在不同的服务器,查阅繁琐。

待解决的痛点:

  1. 大量不同种类的日志成为了运维人员的负担,不方便管理;
  2. 单个日志文件巨大,无法使用常用的文本工具分析,检索困难;
  3. 日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志。

二、ELK+Filebeat+Kafka+Zookeeper架构

在这里插入图片描述
整体的架构如上图所示

这个架构图从左到右,总共分为5层,每层实现的功能和含义分别介绍如下:

第一层、数据采集层
数据采集层位于最左边的业务服务器集群上,在每个业务服务器上面安装了filebeat做日志收集,然后把采集到的原始日志发送到Kafka+zookeeper集群上。

第二层、消息队列层
原始日志发送到Kafka+zookeeper集群上后,会进行集中存储,此时,filbeat是消息的生产者,存储的消息可以随时被消费。

第三层、数据分析层
Logstash作为消费者,会去Kafka+zookeeper集群节点实时拉取原始日志,然后将获取到的原始日志根据规则进行分析、清洗、过滤,最后将清洗好的日志转发至Elasticsearch集群。

第四层、数据持久化存储
Elasticsearch集群在接收到logstash发送过来的数据后,执行写磁盘,建索引库等操作,最后将结构化的数据存储到Elasticsearch集群上。

第五层、数据查询、展示层
Kibana是一个可视化的数据展示平台,当有数据检索请求时,它从Elasticsearch集群上读取数据,然后进行可视化出图和多维度分析。

三、搭建ELK+Filebeat+Kafka+Zookeeper

IP 角色 所属集群
192.168.109.11 Elasticsearch Elasticsearch集群
192.168.109.12 Elasticsearch Elasticsearch集群
192.168.109.13 Logstash 数据转发
192.168.109.14 Kafka+zookeeper Kafka+zookeeper群集
192.168.109.15 Kafka+zookeeper Kafka+zookeeper群集
192.168.109.16 Kafka+zookeeper Kafka+zookeeper群集
192.168.109.17 filebeat 配置数据采集层

本实验基于ELK已经搭好的情况下

1、安装zookeeper

Zookpeer下载地址:apache-zookeeper-3.7.1-bin.tar.gz

1.1 解压安装zookeeper软件包

tar zxf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin /usr/local/zookeeper-3.7.1
cd /usr/local/zookeeper-3.7.1/conf/
cp zoo_sample.cfg zoo.cfg

在这里插入图片描述

1.2 修改配置文件

vim zoo.cfg

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

1.3 给每个机器指定对应的节点号

mkdir data logs
echo 1 > data/myid 

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

1.4 启动zookeeper

cd /usr/local/zookeeper-3.7.1/bin
./zkServer.sh start

在这里插入图片描述

1.5 开启之后,查看三个节点zookeeper状态

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

2、安装kafka

2.1 安装 kafka(3台机子都要操作)

tar zxf kafka_2.13-2.7.1.tgz
mv kafka_2.13-2.7.1 /usr/local/kafka

在这里插入图片描述

2.2 修改配置文件

cd /usr/local/kafka/config/
vim server.properties

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

2.3 将相关命令加入到系统环境当中

vim /etc/profile
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin

source /etc/profile

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

2.4 启动kafka

cd /usr/local/kafka/config/
kafka-server-start.sh -daemon server.properties
netstat -antp | grep 9092

在这里插入图片描述

Kafka 命令行操作

创建topic

kafka-topics.sh --create --zookeeper 192.168.121.10:2181,192.168.121.12:2181,192.168.121.14:2181 --replication-factor 2 --partitions 3 --topic test

–zookeeper:定义 zookeeper 集群服务器地址,如果有多个 IP 地址使用逗号分割,一般使用一个 IP 即可
–replication-factor:定义分区副本数,1 代表单副本,建议为 2
–partitions:定义分区数
–topic:定义 topic 名称

查看当前服务器中的所有 topic

kafka-topics.sh --list --zookeeper 192.168.121.10:2181,192.168.121.12:2181,192.168.121.14:2181

查看某个 topic 的详情

kafka-topics.sh  --describe --zookeeper 192.168.121.10:2181,192.168.121.12:2181,192.168.121.14:2181

发布消息

kafka-console-producer.sh --broker-list 192.168.121.10:9092,192.168.121.12:9092,192.168.121.14:9092  --topic test

消费消息

kafka-console-consumer.sh --bootstrap-server 192.168.121.10:9092,192.168.121.12:9092,192.168.121.14:9092 --topic test --from-beginning

–from-beginning:会把主题中以往所有的数据都读取出来

修改分区数

kafka-topics.sh 
--zookeeper 192.168.80.10:2181,192.168.80.11:2181,192.168.80.12:2181 --alter --topic test --partitions 6

删除 topic

kafka-topics.sh 
--delete --zookeeper 192.168.80.10:2181,192.168.80.11:2181,192.168.80.12:2181 --topic test

2.5 创建topic

[root@localhost bin]# pwd
/usr/local/kafka/bin
[root@localhost bin]# kafka-topics.sh --create --zookeeper \
> 192.168.109.14:2181,192.168.109.15:2181,192.168.109.16:2181 \
> --partitions 3 \
> --replication-factor 2 \
> --topic test
Created topic test.
[root@localhost bin]# kafka-topics.sh 
--describe --zookeeper 192.168.109.14:2181

在这里插入图片描述

2.6 测试topic

发布消息

kafka-console-producer.sh 
--broker-list 192.168.109.14:9092,192.168.109.15:9092,192.168.109.16:9092 --topic test

在这里插入图片描述

kafka-console-producer.sh --broker-list 192.168.109.15:9092 --topic test

在这里插入图片描述
消费消息

kafka-console-consumer.sh --bootstrap-server 192.168.109.15.9092 –topic test --from-beginning

在这里插入图片描述

3、配置数据采集层filebeat(192.168.109.17)

3.1 定制日志格式

vim /etc/nginx/nginx.conf

log_format  json '{"@timestamp":"$time_iso8601",'
                           '"@version":"1",'
                           '"client":"$remote_addr",'
                           '"url":"$uri",'
                           '"status":"$status",'
                           '"domain":"$host",'
                           '"host":"$server_addr",'
                           '"size":$body_bytes_sent,'
                           '"responsetime":$request_time,'
                           '"referer": "$http_referer",'
                           '"ua": "$http_user_agent"'
               '}';

    access_log  /var/log/nginx/access.log  json;

在这里插入图片描述

3.2 上传、解压安装包

cd /opt
tar zxf filebeat-6.5.4-linux-x86_64.tar.gz
mv filebeat-6.5.4-linux-x86_64 /usr/local/filebeat

在这里插入图片描述

3.3 修改配置文件filebeat.yml

vim filebeat.yml

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

3.4 启动filebeat

./filebeat -c filebeat.yml &

在这里插入图片描述

4、所有组件部署完成之后,开始配置部署

4.1 在kafka上创建一个话题nginx-es

kafka-topics.sh --create --zookeeper 
192.168.109.14:2181,192.168.109.15:2181,192.168.109.16:2181 
--replication-factor 1 --partitions 1 –topic nginx-es

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

4.2 修改logstash的配置文件

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

4.3 验证网页

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

4.4 Kibana上创建索引

在这里插入图片描述
在这里插入图片描述
至此,ELFK日志分析系统搭建完成!!!!!

猜你喜欢

转载自blog.csdn.net/qq_45088125/article/details/125662188