1
Grok가 이미 정의 된 필드에서 필드를 저장할 수있는 방법이 있습니까? "log_message"결과Logstash는 필드 내의 필드를 정의합니다
grok {
match => [ "message", "\[%{TIMESTAMP_ISO8601:timestamp}\]\s+\[%{DATA:homebridge_app}\]\s+%{GREEDYDATA:log_message}" ]
}
이 같은 것들로 채워지 :
Current temperature for Entryway Thermostat is: 20.5 C
Current humidity for Entryway Thermostat is: 60%
Current temperature for Entryway Thermostat is: 21 C
Current temperature for Entryway Thermostat is: 21.5 C
Current humidity for Entryway Thermostat is: 61%
등
나는 다음과 같은 필터가 있습니다. 거기에 다른 데이터가있을 수 있지만 위의 내용은 제가 관심있는 라인입니다.
시간대에 따라 습도와 온도를 차트에 표시 할 수 있기를 원하지만 log_message에 위와 같이 전체 문자열. 그 필드를 두 개로 분할하지 않고도 log_message 필드에서 정수를 저장할 수있는 방법이 있습니까? 내가 사용
전체 스택 당신은 log_message
필드에 두 번째 grok 수 필터를 추가 할 수 있습니다 Filebeat-> Logstash-> Elasticsearch-> 키바
정확히 내가 무엇을 찾고 있었는지; 감사! 물론,이 작업을 수행하려면 break_on_match => false로 설정해야합니다. – RCross
@RCross 나는이 옵션에 대해 몰랐습니다. 그러나 왜 'break_on_match'가 필요한지 이해하지 못합니다. 왜냐하면 첫 번째 패턴과 일치하는 것이 있다면 두 번째 패턴과 일치하지 않을 것이기 때문입니다. 아니면 뭔가를 놓친 것 같습니다. – baudsp
죄송합니다 - 어떻게 설명 상자에 명령을 강조 표시 해야할지 모르겠지만 깨끗하지는 않았지만 요점이 'false'로 설정되어 첫 번째 일치 항목이 참일 때 Logstash가 중단되지 않도록합니다. 기본적으로 Logstash는 일치하는 즉시 표시를 중단합니다. https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html#plugins-filters-grok-break_on_match – RCross