Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用logstash中的grok提取匹配位置后的子字符串_Regex_Logstash_Elastic Stack_Logstash Grok - Fatal编程技术网

Regex 使用logstash中的grok提取匹配位置后的子字符串

Regex 使用logstash中的grok提取匹配位置后的子字符串,regex,logstash,elastic-stack,logstash-grok,Regex,Logstash,Elastic Stack,Logstash Grok,目标:我有一个日志文件,我想从中提取以下给定日志文件中字符串amount::后的金额详细信息 到目前为止,我所做的是:由于它是一个自定义解析,所以我使用RegEx创建了一个自定义模式,并尝试使用logstash实现它 这是我的日志文件- 28-04-2017 14:45:50 INFO abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 3000.00 28-04-2017 12:45:50 INFO abcinfo (ABC_Txn

目标:我有一个日志文件,我想从中提取以下给定日志文件中字符串amount::后的金额详细信息

到目前为止,我所做的是:由于它是一个自定义解析,所以我使用RegEx创建了一个自定义模式,并尝试使用logstash实现它

这是我的日志文件-

28-04-2017 14:45:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 3000.00  
28-04-2017 12:45:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 31000.00  
28-04-2017 14:15:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 10000.00  
28-04-2017 11:45:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 9000.00  
28-04-2017 08:15:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 7000.00
我使用Regex查找字符串金额::
注意:我想提取字符串后面的子字符串Amount::

以下是我在Grok中使用的自定义模式:
(但并没有产生好的结果)

我们的目的是使用Kibana和Elasticsearch可视化并基于提取的子字符串执行聚合操作。
但它将日志文件存储到变量
“message”
中。正如您在这里看到的,
match=>{“message”=>“%{CUSTOM\u AMOUNT:AMOUNT”}

下面是当我试图在Kibana中查看该行时,该行如何存储在
“message”

"message": "28-04-2017 11:45:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 9000.00\r",  
"message": "28-04-2017 12:45:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 31000.00\r",    
"message": "28-04-2017 11:45:50 INFO  abcinfo (ABC_TxnLog_ServiceImpl.java295) - Amount::: 9000.00\r",  
Logstash文件正在加载数据(日志文件),索引也正在创建,但是
自定义模式
没有给出预期的结果。
提取我上面提到的子字符串的可能性有哪些?或者我们有其他选择吗?

以下是您必须做的:

filter {
     grok {
                match => {
                        "message" => "%{DATESTAMP:Date} %{WORD:LogSeverity}\s+%{WORD:LogInfo} \(%{NOTSPACE:JavaClass}\) \- Amount::: %{NUMBER:Amount}"
                        }
        }
                mutate
                        {
                                gsub =>
                                [
                                        "Data"," ","-"
                                ]
                                #If you dont want those fields
                                remove_field => ["Date","LogSeverity","LogInfo","JavaClass"]

                        }
        }
我建议您阅读以下文档:

您可以使用以下调试器:


以下是您必须做的事情:

filter {
     grok {
                match => {
                        "message" => "%{DATESTAMP:Date} %{WORD:LogSeverity}\s+%{WORD:LogInfo} \(%{NOTSPACE:JavaClass}\) \- Amount::: %{NUMBER:Amount}"
                        }
        }
                mutate
                        {
                                gsub =>
                                [
                                        "Data"," ","-"
                                ]
                                #If you dont want those fields
                                remove_field => ["Date","LogSeverity","LogInfo","JavaClass"]

                        }
        }
我建议您阅读以下文档:

您可以使用以下调试器:


我真的很感谢你的努力。现在,如果我的日志文件是多行的呢?比如,
28-04-2017 14:45:50 INFO-upiinfo(UPI\u-custacreg\u-serviceinpl.java278)-accntdailscom.fss.connect.domain.UPI。UpiCustAccReg@5007c95d2017年4月28日14:45:50信息更新信息(UPI_TxnLog_ServiceImpl.java295)-金额:3000.00 2017年4月28日14:45:50信息更新信息(UPI_TxnLog_ServiceImpl.java308)-格式化金额:::000000300000 28-04-2017 14:45:50信息
那么解决方案是什么?'28-04-2017 14:45:50信息upiinfo(UPI_custaccurag_ServiceImpl.java278)-账户详情com.fss.connect.domain.UPI。UpiCustAccReg@5007c95‌​d 28-04-2017 14:45:50信息upiinfo(UPI_TxnLog_ServiceImpl.java295)-金额:3000.00 28-04-2017 14:45:50信息upiinfo(UPI_TxnLog_ServiceImpl.java308)-格式化金额:::000000 300000 28-04-2017 14:45:50信息“您的日志是这样格式化的吗?您可以复制并以正确的格式通过。包括新行。现在开始..日志文件中的示例日志..
28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java335)-拆分金额:::28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java295)-金额:3000.00 28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java308)-格式化金额:000000 300000 28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java327)-交易状态:abcinfo(abcinfo_TxnLog_serviceinpl.java335)-拆分金额:28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java295)-金额:::3000.00
OK.!但我想要的是一个格式准确的样本,因为这样我不知道每个日志行的开始和结束位置。每个时间戳对应一个新行?是的!!@rabbit每个时间戳对应一个新行。
28-04-2017 14:45:50信息ABCinfo(g)-金额:::3000.00 28-04-2017 14:45:50信息ABCinfo(u)-格式金额:::000000 300000 28-04-2017 14:45:50信息ABCinfo(ABCog)-TXNLOG状态:::Y 28-04-2017 14:45:50信息ABCinfo(ABC_u日志)-TXNID TXNLOG更新:::28-04-2017 14:45:50信息ABCinfo(Aog)-交易状态:::28-04-2017 14:45:50信息ABCinfo(ALog)-拆分金额::::28-04-2017 14:45:50信息ABCinfo(ABC)-金额:::3000.00 28-04-2017 14:45:50信息ABCinfo(ABC)-格式金额:::000000300000
我真的很感谢你的努力。现在,如果我的日志文件是多行的呢?比如,
28-04-2017 14:45:50信息upiinfo(UPI\u custaccurag\u serviceinmpl.java278)-accntDetailscom.fss.connect.domain.upi。UpiCustAccReg@5007c95d2017年4月28日14:45:50信息upiinfo(UPI_TxnLog_ServiceImpl.java295)-金额:3000.00 2017年4月28日14:45:50信息upiinfo(UPI_TxnLog_ServiceImpl.java308)-格式化金额:::000000 300000 2017年4月28日14:45:50信息
那么解决方案是什么?'2017年4月28日14:45:50信息upiinfo(UPI_custaccurag_serviceinpl.java278)-accntDetailscom.fss.connect.domain.UPI。UpiCustAccReg@5007c95‌​d 28-04-2017 14:45:50信息upiinfo(UPI_TxnLog_ServiceImpl.java295)-金额:3000.00 28-04-2017 14:45:50信息upiinfo(UPI_TxnLog_ServiceImpl.java308)-格式化金额:::000000 300000 28-04-2017 14:45:50信息“您的日志是这样格式化的吗?您可以复制并以正确的格式通过。包括新行。现在开始..日志文件中的示例日志..
28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java335)-拆分金额:::28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java295)-金额:3000.00 28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java308)-格式化金额:000000 300000 28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java327)-交易状态:abcinfo(abcinfo_TxnLog_serviceinpl.java335)-拆分金额:28-04-2017 14:45:50信息abcinfo(ABC_TxnLog_serviceinpl.java295)-金额:::3000.00
OK.!但我想要的是一个格式准确的样本,因为这样我不知道每个日志行的开始和结束位置。每个时间戳对应一个新行?是的!!@rabbit每个时间戳对应一个新行。
28-04-2017 14:45:50信息ABCinfo(g)-金额::3000.00 28-04-2017 14:45:50信息ABCinfo(u)-格式金额::000000 300000 28-04-2017 14:45:50信息ABCinfo(ABCog)-TXNLOG状态:::Y 28-04-2017 14:45:50信息ABCinfo(ABC_u日志)-TXNID TXNLOG更新:::28-
filter {
     grok {
                match => {
                        "message" => "%{DATESTAMP:Date} %{WORD:LogSeverity}\s+%{WORD:LogInfo} \(%{NOTSPACE:JavaClass}\) \- Amount::: %{NUMBER:Amount}"
                        }
        }
                mutate
                        {
                                gsub =>
                                [
                                        "Data"," ","-"
                                ]
                                #If you dont want those fields
                                remove_field => ["Date","LogSeverity","LogInfo","JavaClass"]

                        }
        }