저는 ELK와 Grok 필터링을 처음 접했고, grok 필터에서이 특정 패턴을 분석하는 데 어려움을 겪고 있습니다.시간 카운터를위한 Grok 필터 HH : MM
나는 이것을 시도하고 해결하기 위해 grok debugger을 사용했지만 도구가 마음에 들지만 사용자 정의 패턴에 혼란스러워합니다.
결국, filebeat에서 보내온 많은 로그 파일을 logstash로 구문 분석 한 다음, 구문 분석 된 로그를 elasticsearch에 보내 kibana 또는 유사한 시각화 도구로 표시하려고합니다. 나는 다음과 같은 양상을 분석 할 필요가
의 선 :
이1310 2017-01-01 16:48:54 [325:51] [326:49] [359:57] Some log info text
- 처음 네 자리 숫자는 로그 유형 식별자이며, 그룹화에 사용됩니다. 필드 "LogLineID"를 호출했습니다.
- 날짜의 형식은 YYYY-MM-DD HH : MM : SS이며 구문 분석이 잘됩니다. 필드 "LogDate"를 호출했습니다.
- 하지만 이제 문제가 시작됩니다. 원하는 경우 대괄호 안에 MM : SS 형식의 카운터가 있습니다. 나는이 삶을 비교할 수있는 방법을 찾지 못한다. 그러나 나는이 시간들을 비교할 필요가있다. 그러므로 나는 그 숫자들을 단지 몇 분이 아니라 몇 분으로 저장하고 싶다.
- 첫번째
- 번째 카운터 "TimeStarted"및
- 제 이의 "TimeSinceDown"이다 "TimeSpent"카운터이다.
- 마지막으로 % {GREEDYDATA : LogInfo}를 적용하는 것으로 끝내는 정보 텍스트가 나옵니다. 다음
나는 분의 양이 시간 이내에 표준 60분보다 훨씬 더 높을 수 있다는 것을 발견, 그래서 나는 그런 TIMESTAMP_ISO8601 같은 날짜 패턴을 분석하려고 여기 잘못 짚었 수 있습니다 만, 나는이 일을 어떻게 할 수 있는지 정말로 모른다.
그래서, 나는 여기까지 온 :
%{NUMBER:LogLineID} %{TIMESTAMP_ISO8601:LogDate}
및 (대괄호 부분을 멀리 절단하여)에 수 언급로를 만들
%{GREEDYDATA:LogInfo}
와 로그 정보 텍스트를 구문 분석했다 LogInfo 필드.
하지만 그건 내가 붙어 있었어. 누군가가 나머지를 알아낼 수있게 도와 주시겠습니까?
미리 감사드립니다.
PS! 나는 또한 %{NUMBER:duration}을 찾았지만, 콜론이 아닌 점으로 타임 스탬프를 파싱 할 수는 있습니다.