ELK+Filebeat+Kafka日志采集

一起探讨学习

欢迎大家进群,一起讨论学习

每天给大家提供技术干货

在这里插入图片描述

博主技术笔记 https://notes.xiyankt.com


博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位star https://gitee.com/bright-boy/xiyan-blog


1.ELK


2. ELFK


3. 架构演进

ELK缺点:ELK架构,并且Spring Boot应用使用 logstash-logback-encoder 直接发送给 Logstash,缺点就是Logstash是重量级日志收集server,占用cpu资源高且内存占用比较高
ELFK缺点:一定程度上解决了ELK中Logstash的不足,但是由于Beats 收集的每秒数据量越来越大,Logstash 可能无法承载这么大量日志的处理

4. 日志新贵ELK + Filebeat + Kafka

随着 Beats 收集的每秒数据量越来越大,Logstash 可能无法承载这么大量日志的处理。虽然说,可以增加 Logstash 节点数量,提高每秒数据的处理速度,但是仍需考虑可能 Elasticsearch 无法承载这么大量的日志的写入。此时,我们可以考虑 引入消息队列 ,进行缓存:
Beats 收集数据,写入数据到消息队列中。

5.搭建

5.1需要的组件

1、elasticsearch-7.9.3
2、elasticsearch-head-5.0.0
3、filebeat-7.9.3
4、kibana-7.9.3
5、logstash-7.9.3
6、kafka_2.13-2.5.0
7、zipkin-server-2.14.0-exec

5.2修改elasticsearch-7.9.3/config/elasticsearch.yml 文件

修改配置:#ubuntu需要加上node.name sentos7可以不需要,尽量还是加上吧
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
#这里可以换未cluster.initial_master_nodes: ["node-1"]
cluster.initial_master_nodes: ["192.168.28.129:9300"]


5.3编辑 filebeat-7.9.3/filebeat.yml 文件 (不同的服务配置不同的日志路径

filebeat.inputs:
- type: log
  enabled: true
  paths:
   # 配置我们要读取的 Spring Boot 应用的日志
    - /home/aisys/logs/member-service/*.log
  fields:
  #         #定义日志来源,添加了自定义字段
    log_topic: member-service

- type: log
enabled: true
paths:
- /home/aisys/logs/yoostar-gateway/*.log
fields:
log_topic: yoostar-gateway


#----------------------------- kafka output --------------------------------
output.kafka:
enabled: true
hosts: [“192.168.28.128:9092”]
topic: ‘tv-%{[fields][log_topic]}
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip




5.4编辑 kibana-7.9.3/config/kibana.yml 文件

server.host: “0.0.0.0
elasticsearch.hosts: [“http://10.20.22.30:9200”]

英文很6的可以忽略这个

i18n.locale: “zh-CN


5.5编辑 logstash-7.9.3/config/logstash.conf 文件(该文件需要手动创建)

input {
kafka {
bootstrap_servers =>“192.168.28.128:9092”
topics_pattern =>“tv-.*”
consumer_threads =>5
decorate_events =>true
codec =>“json”
auto_offset_reset =>“earliest”
#集群需要相同
group_id =>“logstash1”
}
}
filter{
json{
source =>“message”
target =>“doc”
}
}
output{
elasticsearch{
action =>“index”
hosts =>[“192.168.28.128:9200”]
#索引里面如果有大写字母就无法根据topic动态生成索引,topic也不能有大写字母
index =>“%{[fields][log_topic]}-%{+YYYY-MM-dd}”
}
stdout{
codec =>rubydebug
}
}

5.6启动elasticsearch-head

// 下载

wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz

tar xf node-v10.9.0-linux-x64.tar.xz // 解压

cd node-v10.9.0-linux-x64/ // 进入解压目录

./bin/node -v // 执行node命令 查看版本

v10.9.0
配置环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/node-v10.9.0-linux-x64/bin


刷新配置

source /etc/profile


执行npm install -g grunt-cli 编译源码
执行npm install 安装服务
如果查询install.js错误执行npm -g install phantomjs-prebuilt@2.1.16 –ignore-script
执行grunt server启动服务。或者 nohup grunt server >output 2>&1 &
启动服务之后访问http😕/10.20.22.30:9100/


5.7启动kafka

1.下载kafka安装包

(未安装wget请先安装)
yum -y install wget
wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz


2.解压kafka

tar -zxvf kafka_2.13-2.5.0.tgz


3.进入配置目录

cd kafka_2.13-2.5.0/config/


4.修改配置文件server.properties,添加下面内容

vim server.properties


broker.id=0
port=9092 #端口号
host.name=172.30.0.9 #服务器IP地址,修改为自己的服务器IP
log.dirs=/usr/local/logs/kafka #日志存放路径,上面创建的目录
zookeeper.connect=localhost:2181 #zookeeper地址和端口,单机配置部署,localhost:2181


5.编写脚本

vim zookeeper_start.sh


启动zookeeper

/usr/local/kafka_2.13-2.5.0/bin/zookeeper-server-start.sh /usr/local/kafka_2.13-2.5.0/config/zookeeper.properties &


编写kafka启动脚本

vim kafka_start.sh


启动kafaka

/usr/local/kafka_2.13-2.5.0/bin/kafka-server-start.sh /usr/local/kafka_2.13-2.5.0/config/server.properties &


编写zookeeper停止脚本

vim zookeeper_stop.sh


停止zookeeper

/usr/local/kafka_2.13-2.5.0/bin/zookeeper-server-stop.sh /usr/local/kafka_2.13-2.5.0/config/zookeeper.properties &


编写kafka停止脚本

vim kafka_stop.sh


停止kafka

/usr/local/kafka_2.13-2.5.0/bin/kafka-server-stop.sh /usr/local/kafka_2.13-2.5.0/config/server.properties &


启动关闭脚本赋予权限

chmod 777 kafka_start.sh
chmod 777 kafka_stop.sh
chmod 777 zookeeper_start.sh
chmod 777 zookeeper_stop.sh


7.先启动zookeeper在启动kafka

./zookeeper_start.sh---------------------------------------------启动zookeeper
./kafka_start.sh----------------------------------------------------启动kafka
ps -ef | grep zookeeper------------------------------------------查看zookeeper进程状态
ps -ef | grep kafka-------------------------------------------------查看kafka进程状态


若出现kafka.common.InconsistentClusterIdException: The Cluster ID MoJxXReIRgeVz8GaoglyXw doesn’t match stored clusterId Some(t4eUcr1HTVC_VjB6h-vjyA) in meta.properties异常解决方法 意思是集群id跟元数据meta.properties中存储的不一致,导致启动失败。因此去查看meta.properties文件中的元数据信息。这个文件的存储路径是通过/config/server.properties配置文件中的log.dirs属性配置的。所以通过配置文件找到meta.properties,修改里面的cluster.id即可。 将异常信息中的Cluster ID MoJxXReIRgeVz8GaoglyXw写入

在这里插入图片描述

5.8启动elasticsearch

启动es出现以下错误是不能用root用户进行启动es


groupadd es

-g 指定组 -p 指定密码

useradd es -g es -p es

-R : 处理指定目录下的所有文件

chown -R es:es /usr/local/elasticsearch-7.9.3/
chown -R es:es /usr/local/kibana-7.9.3-linux-x86_64
su es
./elasticsearch -d



5.9启动kibana(也是只能用es用户启动)

nohup bin/kibana >output 2>&1 &
访问 http://10.20.22.30:5601/ ,即可访问 kibana


5.10、启动filebeat

su root #切换成root用户
nohup ./filebeat -e -c filebeat.yml >output 2>&1 &


5.11、启动logstash

nohup ./bin/logstash -f ./config/logstash.conf >output 2>&1 &


5.12、启动zipkin

nohup java -jar zipkin-server-2.19.0-exec.jar --KAFKA_BOOTSTRAP_SERVERS=10.20.22.30:9092 --STORAGE_TYPE=elasticsearch --ES_HOSTS=http://10.20.22.30:9200 >output 2>&1 &
访问 http://10.20.22.30:9411/zipkin/ 即可查看zipkin

5.13测试

在/home/aisys/logs/yoostar-gateway放入日志文件


Elasticsearch查询索引数据



kinaba查看数据




或者





5.14采用filebeat自带的module收集日志 我这里就举例收集nginx日志

启动module默认都是disable的
./filebeat modules enable nginx

修改配置文件

vim modules.d/nginx.yml


由于我filebeat配置是一个日志文件对应一个topic所以还需要修改nginx对应的数据topic

vim module/nginx/error/config/nginx-error.yml


vim module/nginx/access/config/nginx-access.yml

再次重启filebeat大功告成



写的不错记得关注博主一波

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: elk+kafka+filebeat 是一种常见的数据处理和分析架构。ELK指的是Elasticsearch、Logstash和Kibana,它们分别用于数据存储、数据处理和数据可视化。Kafka是一个分布式流处理平台,用于处理大量的实时数据流。Filebeat是一个轻量级的日志数据收集器,用于将日志数据发送到ELKKafka中进行处理和分析。这种架构可以帮助企业实现实时数据处理和分析,提高数据的价值和利用率。 ### 回答2: ElkElasticsearch,Logstash和Kibana)是一个开源的数据分析平台,其可帮助组织收集、分析、可视化并作出更明智的决策。Elk框架大致包含三个主要组成部分:Elasticsearch、Logstash和Kibana。其中,Elasticsearch是一个基于Lucene的搜索和分析引擎,Logstash是一种数据收集引擎,而Kibana则为数据可视化提供了一种界面。 Kafka 是一个分布式的消息发布订阅系统,其主要目的是为服务之间的通信提供高吞吐和低延迟的解决方案。Kafka 的核心设计思想是基于发布订阅模式,确保系统的整个数据流可以持久化存储,同时支持高效和可扩展的水平拓展。 相比之下,Filebeat 是一个轻量级的日志收集器,用于从多个服务器上收集和转发日志数据。该工具提供了一个快速且灵活的方法来读取多个日志文件,包括系统日志、应用程序日志和安全日志等。由于其轻量化的特性,Filebeat 可以提供高性能的数据收集,并消耗较少的系统资源。 底层架构上,Filebeat 可以将日志数据转发到 Kafka 以供后续处理,同时,Kafka 可以将处理完成的数据转发到 Elasticsearch 索引中,从而让 Kibana 提供友好的用户界面进行可视化和分析。在这个集成方案中,每个组件都贡献其自身的优势,从而实现了一个用于日志收集、处理、存储和展现的完整系统。 ### 回答3: Elasticsearch、Logstash、Kibana和Beats,简称ELK,是一个开源的数据收集和分析平台。随着互联网的不断发展,日志数据的产生量已经变得越来越大,ELK逐渐成为了企业处理和分析大数据的主流工具之一。其中,KafkaFilebeat则是ELK平台中重要的两个工具。 Kafka是一种高吞吐量的分布式发布-订阅消息系统,它可以处理消费者规模不断增长的数据流,实现消息的持久化、数据复制、分区和提交等功能。在ELK平台中,Kafka用于将采集过来的日志数据进行传输,具体流程如下: 首先,用Filebeat采集产生的日志数据,将数据推送到Kafka中;然后,从Kafka中取出数据,通过Logstash进行数据过滤、解析和清洗;最后,Logstash将清洗后的数据推送到Elasticsearch中进行存储和分析。 Filebeat是一个开源的轻量级数据收集工具,可以采集不同服务器上的日志数据,并将数据发送到Kafka中。Filebeat具有占用资源低、运行效率高等优点,是在ELK平台中数据采集的重要工具。 综上所述,KafkaFilebeat作为ELK平台中重要的数据收集和传输工具,可以帮助企业快速、高效地收集和分析海量的日志数据,实现企业数据的全面监控和分析,提高企业的运营效率和竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘明同学呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值