퀴즈: LogQL 파서
logfmt 파서가 JSON 형식의 줄을 만나면 어떻게 되나?
__error__="LogfmtParserErr"라벨이 붙어 오류로 표시된다- 오류 없이 아무 라벨도 만들지 않고 지나간다
- 질의 전체가 422 로 실패한다
- 자동으로
json파서로 넘어가 값을 꺼낸다
| json 을 붙였더니 일부 줄에 __error__ 라벨이 생겼다. 가장 먼저 할 일은?
| __error__=""를 붙여 그 줄을 결과에서 지운다- 스트림의 보존 기간을 줄여 깨진 줄을 빨리 없앤다
- 그 줄이 몇 줄인지 세고 어떤 형식인지 확인한다
- 파서를
regexp로 바꿔 같은 질의를 다시 던진다
파서가 만든 라벨은 어디에 저장되나?
- 질의할 때만 만들어지고 저장되지 않는다
- 인제스터가 청크와 함께 색인에 저장한다
- 컴팩터가 다음 압축 때 색인으로 옮긴다
- 첫 질의 때 만들어져 스트림 라벨로 굳는다
접근 로그처럼 자리가 고정된 줄에서 값을 꺼낼 때 regexp 보다 pattern 을 먼저 고려하는 이유는?
regexp는 이름 있는 잡기 그룹을 지원하지 않는다pattern만 숫자 비교를 할 수 있는 라벨을 만든다regexp는 줄 필터 뒤에 올 수 없다pattern쪽이 읽고 고치기 쉽고 처리도 가볍다
한 스트림에 JSON 과 평문이 섞여 들어오는 문제의 근본 해결은 어디에 있나?
- 질의에 파서를 두 개 이어 붙여 한 번에 읽는다
- 수집 쪽에서 라벨을 달리해 다른 스트림으로 보낸다
- 질의마다
| __error__=""를 기본으로 붙인다 - 보존 기간을 늘려 과거 자료를 다시 파싱한다
{app="x"} | logfmt | status="" 는 어떤 줄을 고르나?
- 본문에
status=라는 글자가 없는 줄만 status값이 빈 문자열로 기록된 줄만status라벨이 만들어지지 않았거나 값이 비어 있는 줄- 파싱 오류가 난 줄만