kafka - boot 集成elk

本文介绍了如何通过Filebeat收集日志并发送到Kafka,然后利用Logstash过滤并提取关键信息,最终存入Elasticsearch。在Filebeat配置中增加了`serviceName`字段,并在Logstash配置中删除了不必要的字段,如`agent`, `ecs`, `log`, `input`等,以优化日志存储效率。通过这个流程,实现了日志数据的有效管理和分析。
摘要由CSDN通过智能技术生成

kafka-boot集成 ELK

在使用 filebeat 收集日志到 ELK 时, 消息中有很多不需要的字段,这里需要去掉:

{
    "@timestamp": "2022 - 04 - 30 T07: 54: 24.132 ",
    "message": {
        "@timestamp": "2022-04-30T03:42:44.156Z",
        "@metadata": {
            "beat": "filebeat",
            "type": "_doc",
            "version": "7.12.1"
        },
        "agent": {
            "ephemeral_id": "fc7259a7-7b4f-400b-aa72-f6041f118336",
            "id": "f6c3697d-6b9b-4ec4-9f1f-0b1ee0c194bc",
            "name": "c49f93715899",
            "type": "filebeat",
            "version": "7.12.1",
            "hostname": "c49f93715899"
        },
        "message": "我是中国人",
        "log": {
            "offset": 18,
            "file": {
                "path": "/var/www/log/a.log"
            }
        },
        "input": {
            "type": "log"
        },
        "ecs": {
            "version": "1.8.0"
        },
        "host": {
            "name": "c49f93715899"
        }
    }
}

目的

提取 meaage 属性 的 json 值,删除 agent, log, input... 等等无用字段, 可以通过 logstash 对 filebeat 传过来的值进行过滤修改

  • filebeat 增加 serverName 属性, 注意 service.name 填加的是 service:{ name: ‘xxx’} 这样的对象
  • logstash 删除无用字段

案例

首先 要有 ELK+Filebeat+ kafka 环境

配置 Filebeat.yml 文件
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/www/log/boot-elk-log/*.log
  fields:  #添加自定义字段   
    serviceName: boot-elk-log
  fields_under_root: true #true为添加到根节点,false为添加到子节点中
output.kafka:
  hosts: ["192.168.1.17:9092"]
  topic: 'kafka_elk_log'
  partition.round_robin:
    reachable_only: false
  compression: gzip
  max_message_bytes: 1000000

这里为根对象增加 一个 serviceName 属性

logstash.conf 配置
input {
 # 从 kafka 消费
  kafka {
    bootstrap_servers => ["192.168.1.17:9092"]
    group_id => "kafka_elk_group"
    topics => ["kafka_elk_log"]
    auto_offset_reset => "earliest"
    codec => "plain"
 }
}

filter{

     json {
         ## 取出 message 属性,格式化成 json , 删除不需要的属性
         source => "message"
         remove_field => ["host","agent","ecs","@version","@metadata","log","input"] #移除字段,不需要采集
      }
     
     # 这里是删除以根对象底下的属性
#    mutate{
#        remove_field => ["host"]
#        remove_field => ["agent"]
#        remove_field => ["ecs"]
#        remove_field => ["tags"]
#        remove_field => ["@version"]
#        remove_field => ["@timestamp"]
#        remove_field => ["input"]
#        remove_field => ["log"]
#    }

}
output {
 # 输出到 elasticsearch
  elasticsearch {
    hosts => "192.168.1.17:9200"
    index => "kafka_elk_log‐%{+YYYY.MM.dd}"
    codec => "plain"
 }
 # 输出到控制台
 stdout { codec => rubydebug }
}

结果

看 logstash 输出日志

{
    "serviceName": "boot-elk-log",
    "@timestamp": "2022 - 04 - 30 T08: 02: 23.254 Z",
    "message": ">>> BootElkLogApplication log 王五 - 2022-04-30T16:02:22.001173180"
}

再看看 kibana 显示页面:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值