ELK+filebeat采集java日志

本文档记录了使用ELK(Elasticsearch, Logstash, Kibana)堆栈配合filebeat收集Java应用日志的全过程。在三台服务器上部署Elasticsearch集群,一台服务器上安装Logstash、Kibana和Head插件,两台生产环境服务器安装filebeat。详细步骤包括设置hosts、安装JDK、Elasticsearch集群配置、Logstash与Kibana安装、filebeat配置以及采集结果的验证。" 115109933,10768685,排序数组中的查找:顺序法与二分法,"['算法', '二分法']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

此文章是我在生产环境下搭建ELK日志系统的记录,该日志系统主要是采集Java日志,开发人员能通过kibanaWeb页面查找相关主机的指定日志;对于Java日志,filebeat已做多行合并、过滤行处理,更精准的获取需要的日志信息,关于ELK系统的介绍,这里不再赘述。

更多信息可以访问官方网站查询:
Elasticsearch:
https://www.elastic.co/cn/products/elasticsearch
Logstash:
https://www.elastic.co/cn/products/logstash
Kibana:
https://www.elastic.co/cn/products/kibana
Filebeat:
https://www.elastic.co/cn/products/beats/filebeat

环境

主机服务类型 主机名 内存 服务
es1 test-machine 32G elasticsearch、logstash、kibana
es2 926prod 8G elasticsearch
es3 replmysql 4G elasticsearch
web1 template-centos7 16G filebeat
web2 template-centos7 16G filebeat

ELK使用的版本均为6.4.3,在下面的搭建中提供了下载地址。三台elasticsearch搭建集群处理,可靠传输。logstash、kibana搭建在同一台服务器中,资源足够不影响服务。两台web服务器为生产环境下的主机,安装filebeat软件来采集日志数据,传输至logstash服务器。

步骤

1、设置hosts

[root@test-machine /root]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.146 testmachine
192.168.1.60 926prod
192.168.1.62 replmysql
[root@test-machine /root]#scp /etc/hosts 926prod:/etc/hosts
[root@test-machine /root]#scp /etc/hosts replmysql:/etc/hosts

2、安装javaJDK

jdk版本需要时1.8及以上

[root@test-machine /root]#yum -y install java
[root@test-machine /root]#java -version
openjdk version "1.8.0_191"

[root@926prod /root]#yum -y install java
[root@926prod /root]#java -version
openjdk version "1.8.0_191"

[root@replmysql /root]#yum -y install java
[root@replmysql /root]#java -version
openjdk version "1.8.0_191"

3、安装elasticsearch(三台机器相同操作)

下载——安装——启动服务

[root@test-machine ~]#curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz
[root@test-machine ~]#tar -xvf elasticsearch-6.4.3.tar.gz
[root@test-machine ~]#mv elasticsearch-6.4.3 /usr/local/
[root@test-machine ~]#useradd elasticsearch
[root@test-machine ~]#cd /usr/local/elasticsearch-6.4.3/
[root@test-machine bin]#chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-6.4.3/

修改配置文件:

[root@test-machine /root]#grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: sunaw-cluster
node.name: test-machine
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.1.146
discovery.zen.ping.unicast.hosts: ["testmachine", "replmysql", "926prod"]
http.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
# 注意node.name、network.host字段,三台机填入各自的名字和ip地址

启动服务:

<think>好的,我现在要帮助用户了解如何搭建ELK+Kafka+Filebeat日志系统。根据用户提供的信息,步骤包括配置JDK8、ZooKeeper集群、Kafka和Filebeat。我需要先理解每个组件的作用以及它们之间的关系。 首先,ELK指的是Elasticsearch、Logstash和Kibana,这三个通常一起使用来处理和可视化日志。但用户提到的是ELK+Kafka+Filebeat,所以应该是用Filebeat代替Logstash收集日志,然后发送到Kafka,再由Logstash或另一个消费者处理数据并传给Elasticsearch。不过用户提供的步骤中没有提到Logstash,可能需要确认是否需要配置Logstash,但用户的问题可能只关注这四个部分:JDK8、ZooKeeper、Kafka、Filebeat。 用户给出的步骤是1到4点,我需要按照这个顺序来介绍。首先配置JDK8,因为Kafka和ZooKeeper都需要Java环境。然后配置ZooKeeper集群,因为Kafka依赖ZooKeeper来做集群管理。接着安装Kafka,最后配置Filebeat日志发送到Kafka。 接下来,我需要详细每个步骤的具体操作。例如,安装JDK8可能需要下载安装包,设置环境变量。配置ZooKeeper集群需要修改配置文件,设置服务器ID,启动服务等。Kafka的配置可能涉及修改server.properties,设置ZooKeeper的连接地址,创建topic等。Filebeat需要配置输入和输出,指定日志路径和Kafka的地址及topic。 同时,需要注意各个组件之间的依赖关系和通信端口是否开放,比如ZooKeeper默认端口2181,Kafka的9092端口,以及集群节点之间的通信。另外,是否需要配置多个Kafka broker,形成集群,或者单节点。用户可能是在搭建一个测试环境,所以可能只需要单节点,但如果是生产环境,则需要集群配置。但用户的问题中没有明确说明,所以可能需要涵盖基本的集群配置。 还要考虑可能的错误点和常见问题,例如环境变量未正确设置,配置文件中的IP地址或主机名错误,防火墙未开放端口,服务启动顺序是否正确(比如先启动ZooKeeper再启动Kafka)。此外,Filebeat的配置是否正确,比如日志路径是否正确,Kafka输出配置是否正确,是否需要SSL认证等。 另外,用户可能希望了解每个步骤的命令或配置示例,例如如何修改ZooKeeper的zoo.cfg文件,Kafka的server.properties中的配置项,Filebeatfilebeat.yml的设置。需要确保提供的命令和配置示例准确,避免语法错误。 可能还需要验证步骤的正确性,例如安装JDK后通过java -version检查,启动ZooKeeper后查看日志是否有错误,Kafka是否能够创建topic和发送接收消息,Filebeat是否成功将日志发送到Kafka。 最后,是否需要整合ELK的其他组件,比如Elasticsearch和Kibana,用户的问题中没有提到,但可能需要简要说明整个数据流,即Filebeat收集日志发送到Kafka,然后由Logstash或直接由Elasticsearch消费,存储到Elasticsearch,最后用Kibana展示。但根据用户提供的步骤,可能不需要详细配置ELK部分,只关注到Kafka和Filebeat的设置。</think>以下是ELK+Kafka+Filebeat架构的部署流程详解: --- ### **架构组件说明** - **Filebeat**:轻量级日志采集器,负责收集服务器日志 - **Kafka**:高吞吐量消息队列,作为日志缓冲层 - **ZooKeeper**:Kafka的集群协调服务 - **Elasticsearch**:日志存储和搜索引擎 - **Logstash/Kibana**:日志处理和可视化(本教程暂不展开) --- ### **1. 配置JDK8** ```bash # 下载JDK8 wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz # 解压安装 tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/ # 配置环境变量 echo 'export JAVA_HOME=/usr/local/jdk1.8.0_202 export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile # 验证安装 java -version ``` --- ### **2. ZooKeeper集群部署** **所有节点操作:** ```bash # 下载安装包 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz # 解压并创建数据目录 tar -zxvf zookeeper-3.4.14.tar.gz -C /opt/ mkdir -p /data/zookeeper/{data,log} # 配置文件 zoo.cfg cat > /opt/zookeeper-3.4.14/conf/zoo.cfg <<EOF tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/log clientPort=2181 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 EOF # 创建myid文件(各节点不同) echo "1" > /data/zookeeper/data/myid # node1执行 echo "2" > /data/zookeeper/data/myid # node2执行 echo "3" > /data/zookeeper/data/myid # node3执行 # 启动服务 /opt/zookeeper-3.4.14/bin/zkServer.sh start ``` --- ### **3. Kafka集群部署** **所有节点操作:** ```bash # 下载安装包 wget https://archive.apache.org/dist/kafka/2.4.1/kafka_2.13-2.4.1.tgz # 解压安装 tar -zxvf kafka_2.13-2.4.1.tgz -C /opt/ # 修改配置文件 server.properties vim /opt/kafka_2.13-2.4.1/config/server.properties --- broker.id=1 # 各节点唯一ID listeners=PLAINTEXT://当前节点IP:9092 zookeeper.connect=node1:2181,node2:2181,node3:2181 log.dirs=/data/kafka-logs --- # 创建数据目录 mkdir -p /data/kafka-logs # 启动服务 /opt/kafka_2.13-2.4.1/bin/kafka-server-start.sh -daemon config/server.properties # 创建测试topic /opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --create \ --zookeeper node1:2181 \ --replication-factor 2 \ --partitions 3 \ --topic test-log ``` --- ### **4. Filebeat配置** **日志采集节点操作:** ```yaml # 编辑配置文件 /etc/filebeat/filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log output.kafka: hosts: ["kafka-node1:9092", "kafka-node2:9092"] topic: "test-log" required_acks: 1 compression: gzip # 启动服务 systemctl start filebeat ``` --- ### **架构数据流向** $$ \text{Filebeat} \xrightarrow{\text{日志采集}} \text{Kafka} \xrightarrow{\text{消息缓冲}} \text{Logstash/ES} \xrightarrow{\text{存储分析}} \text{Kibana} $$ --- ### **关键验证点** 1. ZooKeeper集群状态检查: ```bash echo stat | nc 127.0.0.1 2181 ``` 2. Kafka生产/消费测试: ```bash # 生产者 /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-log # 消费者 /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-log --from-beginning ``` 3. Filebeat日志验证: ```bash tail -f /var/log/filebeat/filebeat.log ``` --- ### **注意事项** 1. Kafka集群建议至少3节点,ZooKeeper集群节点数应为奇数 2. 生产环境需配置SSL认证和ACL权限控制 3. 日志保留策略需在Kafka中配置`log.retention.hours`参数 4. 建议使用版本匹配:Filebeat 7.x + Kafka 2.x + JDK8
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值