簡體   English   中英

Logstash 事件字段引用不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM