elasticsearch - 如何用循环替换if?
问题描述
这是我的信息:
03-08-2020 06:00:01 /soft/rilprdaglm/scripts/lance_autofd10.sos ---> /soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos wfc1 wfc100 wfc2 wfc200 10 CLOCTRL 1
MESSAGE AUTOMATE 03/08/2020 06:00:01 : DEMARRAGE TRAITEMENT JOURNEE DU 20200731
(1 row affected)
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE 03/08/2020 06:00:01 : POUR LA JOURNEE DU 20200731 L'ETAPE UNIP A PRIS 00H00
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE (CYCLE G) 03/08/2020 06:00:01 :
FIN DU TRAITEMENT UNIP () JOURNEE DU 20200731
(1 row affected)
---
1
(1 row affected)
(1 row affected)
----------- Fichiers de traces
/soft/rilprdaglm/logs/appel_rmi_lancements_22646.log
/soft/ldsrmi/G_ILPRDAGLM_1/log/Loader_G_ILPRDAGLM_1_Report_E0_S472_Gwfc_ctr_unicrs_482.log
Lancer quand la tâche sera terminée
grep -h PROCESSUS /soft/ldsrmi/G_ILPRDAGLM_1/log/Loader_G_ILPRDAGLM_1_Report_E0_S472_Gwfc_ctr_unicrs_482.log
(1 row affected)
---
0
(1 row affected)
(1 row affected)
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE 03/08/2020 06:14:01 : POUR LA JOURNEE DU 20200731 L'ETAPE UNIC A PRIS 00H14
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE (CYCLE G) 03/08/2020 06:14:01 :
FIN DU TRAITEMENT UNIC () JOURNEE DU 20200731
---
0
(1 row affected)
(1 row affected)
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE 03/08/2020 06:14:01 : POUR LA JOURNEE DU 20200731 L'ETAPE CHGFI1 A PRIS 00H00
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE (CYCLE G) 03/08/2020 06:14:01 :
FIN DU TRAITEMENT CHGFI1 () JOURNEE DU 20200731
(1 row affected)
(1 row affected)
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE 03/08/2020 06:14:01 : POUR LA JOURNEE DU 20200731 L'ETAPE RCOU A PRIS 00H00
/soft/rilprdaglm/scripts/wfc_automate_genere_G_WFL10.sos => MESSAGE AUTOMATE (CYCLE G) 03/08/2020 06:14:01 :
FIN DU TRAITEMENT RCOU () JOURNEE DU 20200731
(1 row affected)
这是我的logstash.conf
if [message] =~ "ETAPE"
{
grok {
match => { "message" => "%{URIPATHPARAM:source} %{NOTSPACE:msg} %{WORD:msg} %{WORD:type} %{DATE_EU:date} %{TIME:heure} %{NOTSPACE:msg} %{WORD:msg} %{WORD:msg} %{WORD:msg} %{WORD:msg} %{WORD:msg} (?<etape>\S+[[:punct:]][A-Z]{5}) %{WORD:nom_tache} %{WORD:msg} %{WORD:msg} %{WORD:temps_execution}"}
}
}
我想用一个循环替换if,这样每次当它找到“ETAPE”这个词时都会执行grok过滤器。在kibana中它只显示第一个“ETAPE”。需要帮助。由于我的研究,我不能用于或者同时
解决方案
从所提供的信息中很难确定,但在我看来,您在那里只有一个“消息”字段。
如果是这样,您可能会发现split
过滤器插件对于将消息拆分为单独的行很有用。那么您现有的条件和 grok 配置应该Just Work
.
Logstash 没有“循环”的概念。它只在每个事件中运行一次。如果您希望发生多件事,则需要将数据放入多个事件中。
还有其他过滤器插件 - 以及输入编解码器 - 如果split
不满足您的需求,它们将创建更多事件。