问题:
json
输入上的log
配置选项)吗?摘自Filebeat文档(https://www.elastic.co/guide/en/beats/filebeat/current/how-filebeat-works.html#input):
什么是输入? 输入负责管理收割机并查找所有可读取的资源。
对于如何使用TCP输入以及这些TCP输入需要什么样的数据格式,文档尚不清楚(https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-tcp.html)。我最终阅读了TCP输入的源代码,但是我仍然不清楚如何使用TCP输入。
答案 0 :(得分:1)
TL; DR:它需要一条JSON消息,我看到的是从logstash发送到filebeat。
我和你有同样的疑问。但是,我花了一整天的时间尝试以某种方式使用filebeat。我想要实现的目标是将stacktrace添加到kibana,许多网站都说,作为一种好的做法,您不应在logstash中应用多行概念,而在filebeat中使用它。
因此,我尝试将文件信号添加到我的ELK堆栈中。
这是我的应用程序和堆栈之间的先前通信:
SpringApp> Logstash> ElasticSearch> Kibana
但是我更改了它,并通过TCP通讯添加了文件信号
SpringApp> Logstash> Filebeat > ElasticSearch> Kibana
我是通过以下配置实现的:
input {
tcp {
port => 5000
codec => multiline {
pattern => "\tat\s"
what => "previous"
}
}
}
## Add your filters / logstash plugins configuration here
output {
tcp {
host => "filebeat"
port => "5044"
mode => "client"
reconnect_interval => "2"
codec => "line"
}
stdout { }
}
filebeat.inputs:
- type: tcp
host: "0.0.0.0:5044"
multiline.pattern: '^\t'
multiline.negate: false
multiline.match: after
output.elasticsearch:
hosts: ["http://elasticsearch:9200"]
logging.level: debug
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0644
logging.metrics.enabled: false
注意1:Logstash正在通过TCP接收和发送通信
注释2:filebeat无法识别输出的其他logstash编解码器
注意3:我正在使用kubernetes和容器进行所有人之间的通信