filebeat + logstash 发送日志至kafka 入门

filebeat

官方文档
第三方配置说明

配置文件 filebeat.yml

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

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/log/testlog/*.log

  # 自定义添加字段 下面的local_ip 变量是从环境变量中export 出来的 
  fields:
  	ip: ${local_ip}
  # 如果fields_under_root 值为ture,那么fields存储在输出文档的顶级位置
  fields_under_root: true


# 由于是入门,其他配置暂且忽略 ,将读取到的日志信息,输出给logstash 
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.153.129:5044"]

启动filebeat

./filebeat -e -c filebeat.yml  -d 'publish'

如果遇到下面的情况导致没法读取传输数据
在这里插入图片描述

INFO最近30秒钟内没有非零指标
我们可以删除注册表文件registry,注册表文件存储了Filebeat用来跟踪其最后读取位置的状态和位置信息

在这里插入图片描述
在这里插入图片描述
删除(备份)后,重启filebeat即可。

下边是正常工作
在这里插入图片描述

logstash

官网
第三方配置详解
常用的logstash正则表达式规则
logstash 可以对filebeat 发来的数据进行格式化或过滤,还可以发送给其他服务。

首先我们需要创建一个配置(在logstash 根目录)

vim kafka-config.conf 

由于我们这个案例输出给的是kafka,所以我们需要基本配置一下

input {
	# 这是filebeat 发送数据接收的端口
        beats {
                port => "5044"
        }

}

output {
		# kafka的配置
        kafka {

                codec => json
                topic_id => "test-logstash"
                # kafka 所在的主机及端口
                bootstrap_servers => "192.168.201.209:9092"
                batch_size => 1
        }
}

启动logstash

bin/logstash -f kafka-config.conf 

在这里插入图片描述

kafka

创建测试 topic (最好在filebeat 和 logstash 启动前创建好,并启动kafka)

# 测试的kafka我是放在windows上的 
kafka-topics.bat --create --bootstrap-server localhost:9092 --topic test-logstash

启动 kafka Tools ,查看数据
在这里插入图片描述

通过logstash 判断数据分发给哪个output

先附上官方filter的github文档
filter文档

伪造数据

[2021.07.28-06:40:21][353470090698976][MZ202104091847341917315573311500][gRPCServer][2000] MD5 code check success. savedFile:559178e95ebd1dcdbcb0dd71c19ccfa9 answer:559178e95ebd1dcdbcb0dd71c19ccfa9
[2021.07.28-06:40:33][353470090698977][MZ202104091847341917315573311501][abc][2111] MD5 code check success. savedFile:559178e95ebd1dcdbcb0dd71c19ccfa9 answer:559178e95ebd1dcdbcb0dd71c19ccfa9

这两行数据中node 一个是 gRPCServer 另外一个是 abc ,我们分别将它们发给 topictest-logstash
test-logstash2

编辑logstash 配置 kafka-config.conf

input {
        beats {
                port => "5044"
                client_inactivity_timeout => 36000
                ssl => true
                ssl_certificate_authorities => "/etc/pki/tls/certs/filebeat.crt"
                ssl_certificate => "/etc/pki/tls/certs/logstash.crt"
                ssl_key => "/etc/pki/tls/private/logstash.key"
                ssl_verify_mode => "peer"
        }

}

filter{
      grok{
        match => {
          "message" => "\[%{DATA:logtime}\]\[%{DATA:ipcNo}\]\[%{DATA:orderID}\]\[%{DATA:node}\]\[%{DATA:code}\] %{GREEDYDATA:msg}"

        }
        overwrite => [ "message" ]
     }
}



output {
        if [node] == "gRPCServer" {
                kafka {

                        codec => json
                        topic_id => "test-logstash"
                        bootstrap_servers => "192.168.201.209:9092"
                        batch_size => 1
                }


        }

        if [node] == "abc" {
                kafka {

                        codec => json
                        topic_id => "test-logstash2"
                        bootstrap_servers => "192.168.201.209:9092"
                        batch_size => 1
                }


        }

#        stdout {
#                codec => rubydebug
#                       
#       }


}

启动logstash 和 filebeat

# 启动 logstash 在192.168.153.129 如需使用多个配置文件:`bin/logstash -f 目录` ,配置文件都放在该目录下即可
bin/logstash -f kafka-config.conf
# 启动 filebeat 在192.168.153.128
./filebeat -e -c filebeat.yml  -d 'publish'

image

image

image

posted @ 2021-07-27 18:28  秀元  阅读(600)  评论(0)    收藏  举报