在不同的redis键中的logstash输出

问题描述

我正在使用logstash从filebeat中读取日志并写入redis。我来到一种情况,我想过滤日志并存储在2个redis密钥中,其中一个密钥将存储日志的一部分,而另一个密钥将存储日志的其他部分。 这是我的日志格式

TRANSACTION::test_user::MsgiD-aa0313ea-2d26-47b1-a2c7-207d969a1298::{"message":[{"recipientType":"individual","recipient":"919876543210","xApiheader":"asdf","typeText":[],"typeTemplate":[{"name":"template_name","attributes":["testing","123"]}],"typeContact":[],"typeLocation":[]}],"username":"test_user","msgid":"aa0313ea-2d26-47b1-a2c7-207d969a1298"}::CLIENT_disPLAY_ID-gBEGkZmHmWIxAgk8BPgSu2GrihM

这是我的logstash代码

input {
  beats {
    port => 5044
  }
}
filter
{
    if "TRANSACTION::" in [message]
    {
        grok
        {
            match => [ "message","TRANSACTION::%{GREEDYDATA:username}::MsgiD-%{GREEDYDATA:messageId}::%{GREEDYDATA:messageJson}::ERRORCODE-%{GREEDYDATA:errorCode}::ERRORMESSAGE-%{GREEDYDATA:errorMessage}" ]
        }
        grok
        {
            match => [ "message","TRANSACTION::%{GREEDYDATA:username}::MsgiD-%{GREEDYDATA:messageId}::%{GREEDYDATA:messageJson}::CLIENT_disPLAY_ID-%{GREEDYDATA:clientMessageId}" ]
        }
        mutate
        {
            add_field    => { "CLIENT" => "%{username}" }
            add_field    => { "INDEX_TYPE" => "MESSAGE" }
            remove_field => "beat"
            remove_field => "tags"
            remove_field => "host"
            remove_field => "prospector"
            remove_field => "input"
            remove_field => "Meta"
            remove_field => "offset"
            remove_field => "log"
        }
    }
}

output {
    if [INDEX_TYPE] == "MESSAGE"
    {
        redis {    
            data_type => "list"
            host      => ["localhost:6379"]
            key       => "QUEUE_MESSAGE_TRANS"
        }
    }
#stdout { }
}

现在,此脚本将消息正确存储在Redis列表“ QUEUE_MESSAGE_TRANS”中。但是,现在我想从该日志中存储 xApiheader 到另一个密钥=>值对中的redis密钥中,例如:set XAPIHEADER_gBEGkZmHmWIxAgk8BPgSu2GrihM asdf,其中 gBEGkZmHmWIxAgk8BPgSu2GrihM 是该日志中的CLIENT_disPLAY_ID。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...