【ELK7.4】 使用kafka作为消息队列收集日志

前言

公司计划将ai产生的日志进行收集,用来给机器学习提供数据。
以下是实现方案

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

使用程序直接将日志输出到kafka,然后通过logstash来进行过滤收集。

一、详细配置

1、kafka收集信息

topic:    ai
分区数:    3

2、logstash input配置

#收集kafka配置
input{
  kafka {
    bootstrap_servers => ["172.16.1.10:9092,172.16.1.11:9092,172.16.1.12:9092"]
    topics => ["ai"]        #topic名称
    codec => "plain"
    consumer_threads => 3   #分区数量
    group_id => "logstash_kafka"  #logstash组id
    client_id => "logstash_1"   #client id
    decorate_events => false
    auto_offset_reset => "latest"
  }
}

配置多个logstash收集时,只需要修改client_id即可,配置如下:

#node1:
input{
  kafka {
    bootstrap_servers => ["172.16.1.10:9092,172.16.1.11:9092,172.16.1.12:9092"]
    topics => ["ai"]        #topic名称
    codec => "plain"
    consumer_threads => 2   #分区数量
    group_id => "logstash_kafka"  #logstash组id
    client_id => "logstash_1"   #client id
    decorate_events => false
    auto_offset_reset => "latest"
  }
}

#node2
input{
  kafka {
    bootstrap_servers => ["172.16.1.10:9092,172.16.1.11:9092,172.16.1.12:9092"]
    topics => ["ai"]        #topic名称
    codec => "plain"
    consumer_threads => 1   #分区数量
    group_id => "logstash_kafka"  #logstash组id
    client_id => "logstash_2"   #client id
    decorate_events => false
    auto_offset_reset => "latest"
  }
}
#两个节点使用的分区数量相加之和不能大于3。

3、注意事项

(1)创建kafka topic时分区数量尽量不小于3个,以便应对未来数据量增大需要扩展logstash的需要
(2)使用grok进行日志切割时最好全部写正则表达式进行,要不然数据量大时,将会导致数据延迟十分大,以下举例说明:

#最开始的grok语句
filter {
     grok {
        match => [
               "message", "%{NOTSPACE:env} (?<time>[^ ]+ [^ ]+) (?<level>[^ ]+) (?<sessionId>[a-zA-Z]+\[[0-9]+\]) (?<body>(.*))"
        ]
       remove_field => ["message","@version","host"]
    }
}
#上线之后数据延迟时间达到了10小时,严重影响使用。

优化后

filter {
     grok {
        match => [
               "message", "(?<env>(.*)) (?<time>[^ ]+ [^ ]+) (?<level>[^ ]+) (?<sessionId>[a-zA-Z]+\[[0-9]+\]) (?<body>(.*))"
        ]
       remove_field => ["message","@version","host"]
}     
}
#上线之后数据收集变为实时。
#%{NOTSPACE:env} 这种格式严重消耗CPU,导致logstash的处理速率大大降低!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

平凡似水的人生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值