ELK+filebeat+kafka部署 (3)Kafka部署

目录

部署Kafka

1.部署jdk

上传软件包

解压jdk 

配置jdk环境变量

查看java 环境

 2.安装zookeeper

配置hosts 映射

解压安装包

创建快照日志存放目录

创建事务日志方法目录

生成配置文件

修改配置文件zoo.cfg

添加path环境变量

启动zookeeper

 添加开机自启

3.Kafka单节点 单Broker部署

上传解压软件到指定目录

修改配置文件

创建日志目录

添加path 环境变量

启动kafka

添加开机自启动

4. 设置filebeat

修改filebeatyml配置文件

修改hosts

重启filebeat

查看kafka上所有的topic 信息

启动一个消费者获取信息

5.配置logstash

添加hosts解析

修改logstash 配置文件

重启logstash

 6.在kibana上查看数据


部署kafka

为了防止收集日志信息太多或者服务器down机导致的信息丢失,我们这里引入kafka消息队列服务器也起到了日志缓冲的作用,我们这里搭建单节点的kafka,在实际环境下应该使用集群方式部署

1.部署jdk

zookeeper依赖 java 环境 ,所以我们需要安装 jdk官网建议 最低安装 jdk 1.8 版本

zookeeper下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz

上传软件包

解压jdk 

tar zxf jdk-8u171-linux-x64.tar.gz -C /usr/local/

配置jdk环境变量

vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_171 
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar 
export PATH JAVA_HOME CLASSPATH
source /etc/profile  #使环境变量生效

查看java 环境

java -version

 2.安装zookeeper

配置hosts 映射

vim /etc/hosts
192.168.30.13 cong13

解压安装包

tar -zxf apache-zookeeper-3.5.5-bin.tar.gz -C /usr/local/

创建快照日志存放目录

mkdir -p /data/zk/data

创建事务日志方法目录

 mkdir -p /data/zk/datalog

生成配置文件

cd /usr/local/apache-zookeeper-3.5.5-bin/conf/
cp zoo_sample.cfg  zoo.cfg   #复制一份zoo_sample.cfg文件并命名为zoo.cfg

修改配置文件zoo.cfg

vim zoo.cfg 
dataDir=/data/zk/data     #修改这一行为我们创建的目录
dataLogDir=/data/zk/datalog       #添加这一行

添加path环境变量

export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.5.5-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile

启动zookeeper

[root@cong13 ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看zookeeper的状态

 zkServer.sh status

 或者执行jps查看状态,其中QuorumPeerMain是zookeeper进程

 添加开机自启

方法1:添加/etc/rc.local文件

echo "source /etc/profile" >> /etc/rc.local
echo "cd /usr/local/apache-zookeeper-3.5.5-bin/bin && ./zkServer.sh start " >> /etc/rc.local
chmod +x /etc/rc.local

方法二:将zookeeper添加到开机自启服务

在/lib/systemd/system/文件夹下创建一个启动脚本zookeeper.service

 vim /lib/systemd/system/zookeeper.service
[Unit]
Description=Zookeeper service
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk1.8.0_171"
User=root
Group=root
ExecStart=/usr/local/apache-zookeeper-3.5.5-bin/bin/zkServer.sh start
ExecStop=/usr/local/apache-zookeeper-3.5.5-bin/bin/zkServer.sh stop

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable zookeeper

3.Kafka单节点 单Broker部署

官网地址:Apache Kafka

上传解压软件到指定目录

 tar zxf kafka_2.12-2.2.0.tgz -C /usr/local/

修改配置文件

vim /usr/local/kafka_2.12-2.2.0/config/server.properties
# broker的全局唯一编号,不能重复
broker.id=0
# 监听
listeners=PLAINTEXT://:9092  #开启此项
# 日志目录
log.dirs=/data/kafka/log      #修改日志目录
# 配置zookeeper的连接(如果不是本机,需要该为ip或主机名)
zookeeper.connect=localhost:2181

创建日志目录

mkdir -p /data/kafka/log

添加path 环境变量

export KAFKA_HOME=/usr/local/kafka_2.12-2.2.0
export PATH=$KAFKA_HOME/bin:$PATH
source /etc/profile

启动kafka

后台启动kafka

kafka-server-start.sh  -daemon /usr/local/kafka_2.12-2.2.0/config/server.properties 

添加开机自启动

将kafka添加到开机自启服务

在/lib/systemd/system/文件夹下创建一个启动脚本kafka.service

[Unit]
Description=Apache Kafka server (broker)
After=network.target  zookeeper.service

[Service]
Type=simple
Environment="PATH=/usr/local/jdk1.8.0_171/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
User=root
Group=root
ExecStart=/usr/local/kafka_2.12-2.2.0/bin/kafka-server-start.sh /usr/local/kafka_2.12-2.2.0/config/server.properties
ExecStop=/usr/local/kafka_2.12-2.2.0/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable kafka

测试:

kill 3607

 systemctl start kafka

4. 设置filebeat

修改filebeatyml配置文件

修改 filebeat 配置文件,把filebeat收集到的nginx日志保存到kafka消息队列中。把output.elasticsearch和output.logstash都给注释掉,添加kafka项

[root@cong12 ~]# vim /usr/local/filebeat/filebeat.yml 
- type: log
  enabled: true              #开启此配置
  paths:
    - /usr/local/nginx/logs/*.log     #添加收集nginx服务日志
    #- /var/log/*.log          #注释该行
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:        # Elasticsearch这部分全部注释掉
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]
#----------------------------- Logstash output --------------------------------
#output.logstash:      # logstash这部分全部注释掉
  # The Logstash hosts
  #hosts: ["192.168.30.11:5044"]
#在Logstash后面添加如下行
#----------------------------- KAFKA output --------------------------------
output.kafka:            #把日志发送给kafka
  enabled: true          #开启kafka模块
  hosts: ["192.168.30.13:9092"]  #填写kafka服务器地址
  topic: nginx_logs        #填写kafka的topic(主题),自定义的

 把output.elasticsearch和output.logstash都给注释掉,然后在output.logstash结尾添加KAFKA output把日志数据发送给kafka。需要注意的是kafka中如果不存在这个topic,则会自动创建。如果有多个kafka服务器,可用逗号分隔

修改hosts

这里需要添加kafka的hosts解析,如不添加则会报错

[root@cong12 ~]# vim /etc/hosts
192.168.30.12 cong12
192.168.30.13 cong13

重启filebeat

kill 919
cd /usr/local/filebeat/ && ./filebeat -e -c filebeat.yml

注: 当启动时没有显示kafka,一、需要访问nginx的测试页,目的是产生日志记录,filebeat作为消息的生产者才可以将日志数据写到kafka

二、配置文件配置错误

查看kafka上所有的topic 信息

 在kafka服务器上查看filebeat保存的数据,topice为nginx_logs

kafka-topics.sh --list --zookeeper localhost:2181

启动一个消费者获取信息

 启动一个消费者去查看filebeat发送过来的消息,能看到消息说明我们的filebeat的output.kafka配置成功。接下来配置logstash去kafka消费数据

5.配置logstash

配置logstash去kafka拿取数据,进行数据格式化,然后把格式化的数据保存到Elasticsearch,通过kibana展示给用户。kibana是通过Elasticsearch进行日志搜索的

添加hosts解析

vim /etc/host
192.168.30.11 cong11
192.168.30.12 cong12
192.168.30.13 cong13

修改logstash 配置文件

vim /usr/local/logstash-7.3.0/config/http_logstash.conf 
input{
    kafka {
        codec => plain{charset => "UTF-8"}
        bootstrap_servers => "192.168.30.13:9092"
        client_id => "httpd_logs"  #这里设置client.id和group.id是为了做标识
        group_id => "httpd_logs"
        consumer_threads => 5    #设置消费kafka数据时开启的线程数,一个partition对应一个消费者消费,设置多了不影
响,在kafka中一个进程对应一个线程
        auto_offset_reset => "latest"  #从最新的偏移量开始消费
        decorate_events => true  #此属性会将当前topic,offset,group,partition等信息>也带到message中
        topics => "nginx_logs"
    }
}
output {
  stdout {
      codec => "rubydebug"
  }
  elasticsearch {
      hosts => [ "192.168.30.11:9200" ]
      index => "nginx-logs-%{+YYYY.MM.dd}"
  }

}

可以使用相同的group_id方式运行多个Logstash实例,以跨物理机分布负载。主题中的消息将分发到具有相同的所有Logstash实例group_id

Kafka input参数详解:

Kafka input plugin | Logstash Reference [8.2] | Elastic

重启logstash

kill 941
nohup logstash  -f /usr/local/logstash-7.3.0/config/http_logstash.conf &

查看 nohup输出文件:

[root@cong11 ~]# tail -0f nohup.out

 刷新nginx页面,产生数据 

 6.在kibana上查看数据

可以在kibana上查看我们最新收集到的nginx服务日志。到这里我们的ELK+filebeat+kafka部署完成

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ELK(Elasticsearch、Logstash、Kibana)是一个开源的日志管理和分析平台,能够帮助企业收集、存储、搜索、分析和可视化各种类型的日志数据。而Kafka是一个高吞吐量的分布式消息队列系统,可以用来收集和传输大规模的日志数据。Reyslog是一个开源的日志收集器,可以帮助企业从各种不同的数据源中收集日志数据。Filebeat是一个轻量级的日志收集工具,可以帮助企业从各种不同的文件中收集日志数据。 以下是ELK+kafka+reyslog+filebeat企业级部署的步骤: 1. 安装和配置Elasticsearch、Logstash和Kibana,并确保它们能够正常运行。可以使用docker-compose等工具来简化部署过程。 2. 安装和配置Kafka,并创建一个主题(topic)用于存储日志数据。 3. 安装和配置Reyslog,并将其配置为从各种不同的数据源中收集日志数据,并将其发送到Kafka主题(topic)中。 4. 安装和配置Filebeat,并将其配置为从各种不同的文件中收集日志数据,并将其发送到Kafka主题(topic)中。 5. 在Kibana中创建一个索引(index),并定义一个包含所有必需字段的映射(mapping)。然后,使用Logstash来将从Kafka主题(topic)中接收到的日志数据转换为适合索引(index)的格式,并将其存储在Elasticsearch中。 6. 在Kibana中创建一个仪表板(dashboard),并使用其可视化功能来呈现和分析日志数据。可以使用各种不同的可视化插件来创建自定义可视化效果。 7. 部署整个系统,并定期监控其性能和可用性,以确保其正常运行。 总之,ELK+kafka+reyslog+filebeat企业级部署需要进行一系列复杂的配置和设置,需要具备一定的技术知识和实践经验。建议企业可以考虑使用专业的日志管理和分析平台,如Splunk等,以简化部署和管理过程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蟹黄堡!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值