[英]Logstash event field reference is not working
我有一個小事件,我想從 python 傳遞給 logstash:
{
"@timestamp":"2022-06-13T16:48:39.422Z",
"@version":"1",
"message":"Something happened",
"host":"Not important",
"path":"Not important",
"tags":[
],
"type":"logstash",
"level":"INFO",
"logger_name":"python-logstash-logger",
"product":"MySoftware"
}
我想從我的事件中提取“產品”字段,以便稍后在 Kibana 中使用它。
我已經嘗試過這個配置:
filter {
mutate {
add_field => { "Product" => "%{product}" }
}
}
我得到Product = %{product}
作為輸出,但我想得到Product = MySoftware
。 我如何使它工作?
當您將Product = %{product}
作為輸出時,這意味着字段“產品”不存在。
在設置"Product"
之前驗證"product"
產品”是否存在。
filter {
if [product] {
mutate {
add_field => { "Product" => "%{[product]}" }
}
}
}
據我了解,問題出在我正在使用的 python 的 logstash 客戶端。 它被稱為 python-logstash,運行速度很慢(與我的解決方案相比),並為我創建了不必要的字段。 也許我只是沒有弄清楚如何正確使用它。
我決定改用 tcp-handler,並發送帶有我想要的字段的 json。
現在我的 logstash 配置如下所示:
input {
tcp {
port => 5000
codec => json
}
}
沒有“過濾器”字段,因為 kibana 自動將所有 json 鍵解釋為可用字段。
這是關於 Python 的最小工作示例:
import json
import socket
host = 'localhost'
port = 5000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect((host, port))
data = {'message': 'hi', 'product': 'mySoftware'}
sock.send(str.encode(json.dumps(data)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.