sonar-ai-fix-parser
로그프레소 AI를 통해 기존 파서의 정규표현식을 수정합니다. 서브쿼리로 전달한 샘플 로그를 사용해 기존 파서의 매칭 결과를 검증하고, 매칭에 실패하거나 필드가 누락된 경우 sLLM이 정규표현식을 다시 생성합니다. 운영 중인 파서가 새로운 로그 포맷에 맞지 않을 때 빠르게 보정하기 위한 용도로 사용합니다. 로그프레소 AI 어시스턴트 접속 프로파일은 사전에 구성되어 있어야 합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 집계함 |
| 병렬 실행 | 지원하지 않음 |
| 분산 실행 | 지원하지 않음 |
문법
옵션
profile=STR- 사용할 로그프레소 AI 어시스턴트 접속 프로파일 이름. 생략하면 시스템에 등록된 가용 프로파일 중 하나를 자동으로 선택합니다.
code=STR- 수정할 기존 파서의 식별자. 50자 이하여야 합니다.
prompt=STR- 정규표현식 수정 시 sLLM에 전달할 추가 가이드 문구.
max-retry=INT- 정규표현식 검증 실패 시 sLLM에 재요청하는 최대 횟수 (기본값:
3). debug=BOOLt로 지정하면 sLLM 요청·응답, 자동 수정 결과 등 디버그 메시지도 출력 필드로 반환합니다 (기본값:f).dry-run=BOOLt로 지정하면 검증과 수정 절차만 수행하고 실제 파서 정의를 변경하지 않습니다 (기본값:f).
출력 필드
샘플 추출, 정규식 검증, sLLM 호출, 파서 갱신 단계마다 진행 상황을 한 행씩 반환합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
_time | 날짜 | 진행 이벤트 발생 시각 |
profile | 문자열 | 사용된 접속 프로파일 이름 |
level | 문자열 | 로그 레벨 (info, debug, error) |
module | 문자열 | 처리 모듈 이름 (agent, api, sllm 등) |
msg | 문자열 | 진행 상황 또는 결과 메시지 |
status | 문자열 | 단계별 상태 (success, failure) |
error | 문자열 | 실패 시 오류 메시지 (성공 시 미설정) |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 212200 | 사용 가능한 SLLM 프로파일이 없습니다. | profile을 생략했고 시스템에 등록된 로그프레소 AI 어시스턴트 접속 프로파일이 없음 |
| 212201 | SLLM 프로파일 이름을 입력하세요. | profile 옵션 값이 비어 있는 경우 |
| 212202 | 하나의 프로파일만 지정하세요. | profile에 두 개 이상의 프로파일을 쉼표로 나열한 경우 |
| 212240 | [ ] 괄호 안에 서브쿼리를 지정하세요. | 샘플 로그를 공급할 서브쿼리가 누락된 경우 |
| 212270 | code 옵션을 지정하세요. | 필수 옵션 code가 비어 있는 경우 |
| 212271 | 파서 식별자는 50자 이하여야 합니다. | code 값의 길이가 50자를 초과한 경우 |
런타임 오류
| 오류 코드 | 메시지 | 설명 | 후처리 동작 |
|---|---|---|---|
| 해당 없음 | 파서 수정에 실패했습니다. | sLLM 호출 실패, 정규표현식 검증 재시도 초과, 파서 저장 실패 등 실행 중 발생하는 모든 예외를 포괄합니다. | 예외를 흡수하여 level=error, status=failure, error=<예외 메시지> 행을 반환한 뒤 종료합니다. |
설명
sonar-ai-fix-parser 명령어는 다음 순서로 동작합니다.
- 서브쿼리(
[ ... ])를 실행하여 샘플 로그 라인을 수집합니다. code로 지정된 기존 파서의 정규표현식과 출력 필드 정의를 조회합니다.- 샘플 로그에 대해 기존 정규표현식을 적용하여 매칭 실패·필드 누락 여부를 검증합니다.
- 검증에 실패하면 먼저 자동 수정(
RegexAutoFixer)을 시도하고, 그래도 해결되지 않으면 sLLM에 정규표현식 수정을 요청합니다. - sLLM이 반환한 정규표현식을 다시 검증하며, 실패 시
max-retry횟수만큼 재시도합니다. - 검증을 통과한 정규표현식을 파서에 반영합니다.
dry-run=t이면 이 단계는 건너뜁니다.
각 단계의 진행 상황은 level=info 행으로, sLLM 요청·응답 본문이나 정규표현식 자동 수정 내역 등 상세 정보는 level=debug 행으로 반환됩니다. debug=t로 지정해야 디버그 행이 출력됩니다.
서브쿼리는 반드시 line 필드를 포함하는 원본 로그 레코드를 반환해야 합니다. 일반적으로 운영 환경의 수집 테이블에서 최근 데이터를 추출하거나, 미리 적재한 샘플 테이블을 조회합니다. profile 옵션에는 단일 프로파일만 지정할 수 있으며, 두 개 이상이 입력되면 파싱 단계에서 오류가 발생합니다.
사용 예
-
운영 중인
WEB_APACHE테이블의 최근 1시간 로그로 파서web-apache정규표현식 수정sonar-ai-fix-parser code="web-apache" [ table duration=1h WEB_APACHE | fields line | limit 100 ]서브쿼리에서 추출한 100건의 원본 로그 라인으로 기존 파서를 검증하고, 매칭에 실패한 라인이 있으면 정규표현식을 수정한 뒤 파서에 반영합니다. 실행 결과로 단계별 진행 메시지가 행 단위로 반환됩니다.
-
추가 가이드를 전달하여 시뮬레이션만 실행
sonar-ai-fix-parser profile="logpresso-ai" code="custom-fw" prompt="src_ip 그룹은 IPv4와 IPv6를 모두 매칭해야 함" dry-run=t [ table duration=10m FW_CUSTOM | fields line | limit 50 ]dry-run=t이므로 검증과 수정 절차만 수행하고 파서 정의는 변경하지 않습니다. 출력 필드의msg값에서 sLLM이 제안한 정규표현식과 검증 결과를 확인할 수 있습니다. -
디버그 모드로 sLLM 응답과 정규식 차이까지 함께 조회
sonar-ai-fix-parser code="web-nginx" max-retry=5 debug=t [ json "[{'line': '203.0.113.5 - - [18/Nov/2024:10:00:00 +0900] \"GET / HTTP/1.1\" 200 1024'}]" ]debug=t로 sLLM 요청·응답 본문, 자동 수정 단계, 원본 정규식과 수정된 정규식의 변경된 명명 그룹 차이가level=debug행으로 함께 반환됩니다.
호환성
sonar-ai-fix-parser 명령어는 소나 5.0.2603.0 버전부터 사용 가능합니다.