Я пытаюсь создать шаблон grok для чего-то подобного
********************************************************
18.03.13, 10:14:25: Starting new session
********************************************************
12:43:38 Warning: X-Ray blocked because signal XRAY_ENABLE_FPD is high.
13:31:08 Error 770.999 (DigitizerPt1000Pixium):
OffsetCalibration: mode not active
13:31:21 Error 770.999 (DigitizerPt1000Pixium):
Cannot stop grabbing
Однако
13:31:08 Error 770.999 (DigitizerPt1000Pixium):
OffsetCalibration: mode not active
это одна запись в журнале, а не две (grok рассматривает ее как две разные записи). Есть ли какой-либо шаблон в grok или любой другой фильтр, который я могу использовать???
Также я хочу связать дату, указанную в первой строке, с записями журнала предупреждений и ошибок.
Примечание. Я создал для него шаблон grok, но не решены только следующие проблемы.
Я попытался использовать следующий код (для всего файла журнала, который приведен здесь). Но я не могу связать дату в первой строке с записями об ошибках и предупреждениях.
input {
file {
path => "E:\Softwares\logstash-1.5.4\bin\Error_log_29092015.txt"
start_position => beginning
sincedb_path => "E:/sincedb"
}
}
filter {
multiline {
pattern => "^%{NOTSPACE}"
what => previous
}
if "Starting" in [message]{
grok {
match => [ "message", "%{DATE_EU:Start_date}, %{TIME:Start_time}: %{WORD:session_status}"]
}
}
else if "Terminating" in [message] {
grok{
match => [ "message", "%{DATE_EU:Terminate_date}, %{TIME:Terminate_time}: %{WORD:session_status}"]
}
}
else if "Warning" in [message] {
grok {
match => [ "message", "%{TIME:Warning_time} \t%{WORD:Indicator}: %{GREEDYDATA:Warning_Message}\r"]
}
}
else if "Error" in [message] {
if "Generator" in [message]{
grok{
match => ["message","%{TIME:Error_time} \t%{WORD:Indicator} G %{NOTSPACE:Error_Num} %{NOTSPACE:Error_Type}: \r\n%{GREEDYDATA:Error_Message}\r"]
}
}
else{
grok {
match => [ "message", "%{TIME:Error_time} \t%{WORD:Indicator} %{NOTSPACE:Error_Num} %{NOTSPACE:Error_Type}: \r\n%{GREEDYDATA:Error_Message}\r"]
}
}
}
else if "Invalid" in [message]{
grok {
match => [ "message", "%{TIME:InvalidCode_time} \t%{WORD:Type} Code. %{GREEDYDATA:InvalidCode_Message}"]
}
}
else if "Sedecal" in [message]{
grok {
match => [ "message", "%{TIME:Sedecal_time} \t%{GREEDYDATA:Type}: %{GREEDYDATA:InvalidCode_Message}"]
}
}
else if "UIMS" in [message]{
grok {
match => [ "message", "%{TIME:UIMSInternalState_time} \t%{GREEDYDATA:Type}: %{GREEDYDATA:UIMSInternalState_Message}"]
}
}
else {
drop{}
}
}
output {
stdout{ codec => rubydebug}
elasticsearch{
cluster => "My_ProjectC"
host => localhost
codec => rubydebug}
}