在Windows10中使用filebeat将日志发送至kafka,并去除fileBeat添加的冗余字段步骤方法

7 篇文章 0 订阅
6 篇文章 0 订阅

环境

  • win10系统
    • filebeat 7.10.0
  • CentOS7 集群(虚拟机)
    • kafka 0.11

第一步 下载filebeat

下载地址
filebeat下载
我下载的是图中圈出的压缩包版本,也有MSI版本供下载。

第二步 配置filebeat

官方教程

  1. 将下载的压缩包解压到“C:\Program Files\Filebeat”。
  2. 修改该目录中的配置文件filebeat.yml,主要修改以下几个地方:
  • 添加filebeat要采集的源文件相关信息,主要在inputs中。
# ============================== Filebeat inputs ===============================

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.
  enabled: true #这里一定要改成true才会生效

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    #- /var/log/*.log 这是linux中的路径
    #- c:\programdata\elasticsearch\logs\*
    - e:\Lab\Logs\test.log #日志文件路径

添加输出信息(kafka),主要在output中。

# ---------------------------- kafka Output----------------------------
output.kafka:
  # initial brokers for reading cluster metadata hosts是string数组类型,支持多个kafka实例地址(此处不是配置zookeeper地址)
  hosts: ["XXXX:9092"]

  # message topic selection + partitioning
  #发送到kafka的那个topic,我这里事先在fields中配置了一个kafka_topic字段,下边有写
  topic: '%{[fields.kafka_topic]}'
  version: 0.11.0.0 #kafka版本
  partition.round_robin: #向kafka分区发送的方式(这里是轮询)
    reachable_only: false

  required_acks: 1 #kafka应答方式
  compression: gzip
  max_message_bytes: 1000000

自己添加的字段,kafka的topic名称

# ================================== General ===================================

# The name of the shipper that publishes the network data. It can be used to group
# all the transactions sent by a single shipper in the web interface.
#name:

# Optional fields that you can specify to add additional information to the
# output.
fields:
  kafka_topic: first #自己定义的字段 表示kafka中的topic 名称为first

配置完以后保存即可。

第三步 开启filebeat

此时部署在linux虚拟机上的kafka集群已启动,不再赘述。

  1. 管理员身份打开powershell,进入filebeat安装目录"C:\Program Files\Filebeat",输入以下命令,使用刚修改好的配置文件启动filebeat。
PS C:\Program Files\Filebeat> .\filebeat -e -c filebeat.yml

注意一定要以管理员身份打开。
  如果powershell报”系统中禁止执行脚本",就输入以下命令更改执行策略:

PS C:\Program Files\Filebeat> set-ExecutionPolicy RemoteSigned

记得也要在管理员权限下才行。
  另外一提,powershell的cmd的cd命令有点区别,当目录名字带空格时,需要将目标地址写进引号里,形成一个参数,否则powershell切换会提示找不到目标位置。

  1. 如果问题都解决完毕,filebeat正常开启,此时只需要之前在配置文件的inputs中设置的log文件有新增行,filebeat就会把数据发送到Kafka中。
      在kafka中事先开启一个kafka的consumer,方便看到filebeat传输的数据。
[root@centos7_1 kafka]# bin/kafka-console-consumer.sh --bootstrap-server CentOS7_1:9092 --topic first
  1. 此时在”e:\Lab\Logs\test.log“中随便输入一些数据并保存,kafka的消费者就会打印相应数据,数据是json格式的:
{
    "@timestamp": "2020-12-01T07:49:19.035Z",
    "@metadata": {
        "beat": "filebeat",
        "type": "_doc",
        "version": "7.10.0"
    },
    "fields": {
        "kafka_topic": "first"
    },
    "host": {
        "name": xxx,
        "mac": [
            xxx
        ],
        "hostname": xxx,
        "architecture": "x86_64",
        "os": {
            "build": "18363.1198",
            "platform": "windows",
            "version": "10.0",
            "family": "windows",
            "name": "Windows 10 Home China",
            "kernel": "10.0.18362.1198 (WinBuild.160101.0800)"
        },
        "id": xx,
        "ip": [
            xxx
        ]
    },
    "agent": {
        "ephemeral_id": "8a09326d-8a07-41cc-aba4-6735eec57c63",
        "id": "287d0b6a-2dc7-427e-af59-2acea9a2b89e",
        "name": "LAPTOP-TP5O2I6E",
        "type": "filebeat",
        "version": "7.10.0",
        "hostname": xxx
    },
    "ecs": {
        "version": "1.6.0"
    },
    "log": {
        "file": {
            "path": "e:\\Lab\\Logs\\test.log"
        },
        "offset": 14
    },
    "message": "1231323231132",
    "input": {
        "type": "log"
    }
}

message中便是我在日志文件中输入的内容,可以看到已经成功发了过来。
但是,我就随便打了一行,filebeat发过来变成这么多,有很多我不需要的数据,那么是否可以去掉哪些不需要的字段呢?当然可以!

去除filebeat发送数据中不需要的字段

重新回到filebeat.yml文件,修改processors,在这里我们可以对filebeat发送的数据格式做一些处理。
官方介绍

# ================================= Processors =================================
processors:
  # 去掉这些自带的处理器
  # - add_host_metadata:
  #     when.not.contains.tags: forwarded
  # - add_cloud_metadata: ~
  # - add_docker_metadata: ~
  # - add_kubernetes_metadata: ~
  # 使用drop_fields这个处理器去掉不想要的字段
    - drop_fields:
      # when: #可以设置条件,这里就不设置了
      #   condition
      # 要去除的字段
      fields: ["log","host","input","agent","ecs"]
      ignore_missing: false #缺少字段是否报错

修改完成后再次运行filebeat,并在log文件中输入数据并保存,在kafka的消费者可以看到这次收到的数据就清爽了许多:

{
   "@timestamp": "2020-12-01T09:11:04.239Z",
   "@metadata": {
       "beat": "filebeat",
       "type": "_doc",
       "version": "7.10.0"
   },
   "message": "12312321",
   "fields": {
       "kafka_topic": "first"
   }
}

注意:@timestamp@metadata这两个字段是去不掉的。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值