ELK集群+Filebeat+Kafka

概述

Linux主机的ip是10.10.20.26,版本为CentOS Linux release 7.6.1810 (Core) ,当前用户为wender,jdk版本为1.8.0_121。各组件的版本为:
filebeat-6.4.3-linux-x86_64
elasticsearch-6.4.3
logstash-6.4.3
kibana-6.4.3-linux-x86_64
kafka_2.12-2.3.0

Filebeat监控三个文件;把文件的变更,发送到Kafka,Logstash读取Kafka的topic中的消息,再发送到ElasticSearch,Kibana读取ElasticSearch的日志展示到浏览器

文件夹权限:

chown -R wender /home/wender/app/
chown -R wender /home/wender/app/jdk1.8.0_121

配置Filebeat

以wender用户,修改 filebeat.yml

su wender
vi filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  # 题库
  paths:
    - /var/logs/zbg/xapi/xapi/*.json
  tail_files: true
  fields:
    logtopic: elk-msg-a
    
- type: log
  enabled: true
  # 学习中心
  paths:
    - /var/logs/study/study/*.json
  tail_files: true
  fields:
    logtopic: elk-msg-b

- type: log
  enabled: true
  # 教务
  paths:
    - /var/logs/zbg/zbg/*.json
  tail_files: true
  fields:
    logtopic: elk-msg-c

output.kafka:
  enabled: true
  hosts: ["10.10.20.26:9092"]
  
  topic: '%{[fields.logtopic]}'
  partition.round_robin:
    reachable_only: false

  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000
  name: 10.10.20.26_filebeat

启动filebeat

su wender
nohup /home/wender/app/filebeat-6.4.3-linux-x86_64/filebeat -c /home/wender/app/filebeat-6.4.3-linux-x86_64/filebeat.cluster.kafka.yml &

配置Kafka

启动zk

##以root身份启动zk
su
/home/wender/app/kafka_2.12-2.3.0/bin/zookeeper-server-start.sh /home/wender/app/kafka_2.12-2.3.0/config/zookeeper.properties >/dev/null 2>&1 &
##或执行下面的命令
nohup /home/wender/app/kafka_2.12-2.3.0/bin/zookeeper-server-start.sh /home/wender/app/kafka_2.12-2.3.0/config/zookeeper.properties &

启动Kafka,创建topic

##start kafka
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-server-start.sh /home/wender/app/kafka_2.12-2.3.0/config/server.properties >/dev/null 2>&1 &

##create topic
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-topics.sh --create --zookeeper 10.10.20.26:2181 --replication-factor 1 --partitions 1 --topic elk-msg-a
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-topics.sh --create --zookeeper 10.10.20.26:2181 --replication-factor 1 --partitions 1 --topic elk-msg-b
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-topics.sh --create --zookeeper 10.10.20.26:2181 --replication-factor 1 --partitions 1 --topic elk-msg-c

##以下命令在kafka中常用,仅做记录,不在本次ELK配置中使用
##get all topics
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-topics.sh --list --zookeeper localhost:2181

##delete topic
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-topics.sh --delete --zookeeper 10.10.20.26:2181 --topic elk-msg-c
/home/wender/app/kafka_2.12-2.3.0/bin/zookeeper-shell.sh 10.10.20.26:2181
ls /brokers/topics
rmr /brokers/topics/elk-msg-c
quit

##consume message on topic
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-console-consumer.sh --bootstrap-server 10.10.20.26:9092 --topic elk-msg-a --from-beginning
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-console-consumer.sh --bootstrap-server 10.10.20.26:9092 --topic elk-msg-b --from-beginning
/home/wender/app/kafka_2.12-2.3.0/bin/kafka-console-consumer.sh --bootstrap-server 10.10.20.26:9092 --topic elk-msg-c --from-beginning

配置Logstash

创建logstash-msg-a.conf,内容如下:

cat /home/wender/app/logstash-6.4.3/config/conf.d/conf.d_kafka/logstash-msg-a.conf

input {
    kafka {
        bootstrap_servers => "10.10.20.26:9092"
        topics => ["elk-msg-a"]
        auto_offset_reset => "earliest"
        codec => json {
            charset => "UTF-8"
        }
        client_id => "client-msg-a"
        group_id => "group-msg-a"
    }
    #如果有其他数据源,直接在下面追加
}

filter {
    #将message转为json格式
    json {
        source => "message"
    }

    mutate {
    #移除message字段
        remove_field => ["message"]
    }
}

output {
    #处理后的日志入es
    if [fields][logtopic] == "elk-msg-a" {
        elasticsearch {
            hosts => "10.10.20.26:9200"
            index => "elk-msg-a"
            codec => "json"
        }
    }
} 

创建logstash-msg-b.conf,内容如下:

cat /home/wender/app/logstash-6.4.3/config/conf.d/conf.d_kafka/logstash-msg-b.conf

input {
    kafka {
        bootstrap_servers => "10.10.20.26:9092"
        topics => ["elk-msg-b"]
        auto_offset_reset => "earliest"
        codec => json {
            charset => "UTF-8"
        }
        client_id => "client-msg-b"
        group_id => "group-msg-b"
    }
    #如果有其他数据源,直接在下面追加
}

filter {
    #将message转为json格式
    json {
        source => "message"
    }

    mutate {
        #移除message字段
        remove_field => ["message"]
    }
}

output {
    if [fields][logtopic] == "elk-msg-b" {
    #处理后的日志入es
        elasticsearch {
            hosts => "10.10.20.26:9200"
            index => "elk-msg-b"
            codec => "json"
       }
    }
}

创建/logstash-msg-c.conf,内容如下:

cat /home/wender/app/logstash-6.4.3/config/conf.d/conf.d_kafka/logstash-msg-c.conf

input {
    kafka {
        bootstrap_servers => "10.10.20.26:9092"
        topics => ["elk-msg-c"]
        auto_offset_reset => "earliest"
        codec => json {
            charset => "UTF-8"
        }
        client_id => "client-msg-c"
        group_id => "group-msg-c"
    }
    #如果有其他数据源,直接在下面追加
}

filter {
    #将message转为json格式
    json {
        source => "message"
    }
    
    mutate {
            #移除message字段
        remove_field => ["message"]
    }            
}

output {
    #处理后的日志入es
    if [fields][logtopic] == "elk-msg-c" {
        elasticsearch {
            hosts => "10.10.20.26:9200"
            index => "elk-msg-c"
            codec => "json"
        }
    }
}

启动Logstash

#start logstash
vi /home/wender/app/logstash-6.4.3/bin/logstash
export JAVA_CMD="/home/wender/app/jdk1.8.0_121/bin"  #改为自己服务器JDK位置
export JAVA_HOME="/home/wender/app/jdk1.8.0_121/"    #改为自己服务器JDK位置

#启动/home/wender/app/logstash-6.4.3/config/conf.d/目录下的所有配置文件,末尾一定要有/,表示是目录
su wender
nohup /home/wender/app/logstash-6.4.3/bin/logstash -f /home/wender/app/logstash-6.4.3/config/conf.d_kafka/ &

配置ElasticSearch

解析ES异常

[2020-05-07T13:25:01,579][ERROR][o.e.b.Bootstrap          ] [node-26] node validation exception
[1] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
1、修改/etc/security/limits.conf
*    hard    nofile    65536
*    soft    nofile    65536
2、修改(如果没有文件,新建)
[root@master config]# cat /etc/pam.d/sshd
session    required   /lib64/security/pam_limits.so
[root@master config]# cat /etc/pam.d/common-session
session required /lib64/security/pam_limits.so
3、修改/etc/profile增加一条
ulimit -n 65536
4、重启sshd服务
/etc/init.d/sshd restart
service sshd restart

启动ES

[elasticsearch-6.4.3]chown -R wender 
su wender
/home/wender/app/elasticsearch-6.4.3/bin/elasticsearch -d

配置Kibana

vi config/kibana.yml
server.port: 5601
server.host: "10.10.20.26"
server.name: "wender"
elasticsearch.url: "http://10.10.20.26:9200" # es的地址
kibana.index: ".kibana"

启动停止访问kibana

#启动
su wender
./kibana
#或
nohup ./kibana > /dev/null 2>&1 &

#停止
fuser -n tcp 5601 #查看端口进程
kill -9  进程号 #杀死上步执行结果进程

#访问地址
http://10.10.20.26:5601

各组件启动顺序

1.zookeeper
2.kafka
3.filebeat
4.elasticsearch
5.logstash
6.kibana


参考资料

https://www.jianshu.com/p/c3d35cceaabc
https://blog.csdn.net/wyalonehome/article/details/83990512

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答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平台中重要的数据收集和传输工具,可以帮助企业快速、高效地收集和分析海量的日志数据,实现企业数据的全面监控和分析,提高企业的运营效率和竞争力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值