로그프레소 기초 쿼리 가이드

해당 문서는 로그프레소를 처음 접하는 엔지니어 또는 담당자분이 로그프레소 쿼리를 쉽게 접근하기 위해 만든 기초 쿼리 문서입니다.

추가 쿼리 학습은 로그프레소 공식 문서나 인프런 강의 수강 부탁드립니다.


사전 준비

  1. 테스트 테이블 생성

    • [SNR UI][시스템][테이블] 에서 logpresso_query_test 테이블을 생성합니다.
  2. 테스트 데이터 적재

    • [SNR UI][분석][쿼리] 메뉴로 이동하여 아래 명령어를 실행합니다.
    json "{}"
    | eval src_ip=ip("192.168.0.1") | eval src_port=50001 | eval dst_ip=ip("192.168.0.100") | eval dst_port=443 | eval action="permit"
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.2") | eval src_port=50002 | eval dst_ip=ip("192.168.0.100") | eval dst_port=443 | eval action="deny"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.3") | eval src_port=50003 | eval dst_ip=ip("192.168.0.100") | eval dst_port=443 | eval action="deny"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.4") | eval src_port=50004 | eval dst_ip=ip("192.168.0.100") | eval dst_port=80 | eval action="permit"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.5") | eval src_port=50005 | eval dst_ip=ip("192.168.0.101") | eval dst_port=443 | eval action="permit"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.6") | eval src_port=50006 | eval dst_ip=ip("192.168.0.101") | eval dst_port=22 | eval action="deny"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.7") | eval src_port=50007 | eval dst_ip=ip("192.168.0.100") | eval dst_port=443 | eval action="permit"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.8") | eval src_port=50008 | eval dst_ip=ip("192.168.0.102") | eval dst_port=3306 | eval action="deny"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.9") | eval src_port=50009 | eval dst_ip=ip("192.168.0.100") | eval dst_port=80 | eval action="permit"]
    
    | union [json "{}"
    | eval src_ip=ip("192.168.0.10") | eval src_port=50010 | eval dst_ip=ip("192.168.0.101") | eval dst_port=443 | eval action="deny"]
    
    | import logpresso_query_test
    
  • 위 쿼리를 실행하면 src_ip, src_port, dst_ip, dst_port, action 필드를 가진 10건의 테스트 데이터가 logpresso_query_test 테이블에 적재됩니다.

  • 이후부터는 적재된 데이터를 활용해 실습을 진행합니다.


table 쿼리 활용

  1. 기본 사용법

    • 주의 사항 : table 명령은 옵션 없이 사용하면 테이블 전체를 풀스캔하기 때문에 시스템에 큰 부하가 발생할 수 있습니다.

    • 반드시 권장사용법의 예시처럼 limit 또는 from ~ to 옵션을 함께 지정하여 사용해야 합니다.

    table logpresso_query_test
    
  2. 권장 사용법

    • 조회 건수 제한 (limit)

      table limit=1 logpresso_query_test
      
    • 기간 지정 (from ~ to)

      table from=20260101 to=20260512 logpresso_query_test
      
    • 기간+건수 동시 지정

      table from=20260101 to=20260512 limit=2 logpresso_query_test
      

search 쿼리 활용

  1. 기본 사용법

    • 특정 액션이 "deny"인 데이터만 조회

      table logpresso_query_test 
      | search action == "deny"
      
    • 단어 일부만 활용하여 데이터 조회

      table logpresso_query_test 
      | search action == "*en*"
      
    • 특정 출발지 IP만 조회

      table logpresso_query_test 
      | search src_ip == ip("192.168.0.1")
      
    • 복합 조건(AND/OR)

      table logpresso_query_test 
      | search action == "deny" and dst_port == 443
      
      table logpresso_query_test 
      | search action == "permit" or action == "deny"
      

eval 쿼리 활용

  1. 새 필드 생성

    • action 값에 따라 한글 상태 필드 추가

      table logpresso_query_test 
      | eval status = if(action == "permit", "허용", "차단")
      
  2. 필드 가공

    • src_ip와 src_port를 합쳐서 하나의 필드로 만들기

      table logpresso_query_test 
      | eval src = concat(src_ip,":",src_port)
      
  3. 값 변환

    • src_ip의 값을 100.100.100.100으로 변경

      table logpresso_query_test 
      | eval src_ip=ip("100.100.100.100")
      

stats 쿼리 활용

  1. 전체 건수 조회

    table logpresso_query_test 
    | stats count
    
  2. 그룹별 집계

    table logpresso_query_test 
    | stats count by action
    
  3. 고유값 집계 (dc=distinct count)

    table logpresso_query_test 
    | stats dc(action) as unique_action
    
  4. 여러 필드로 그룹화

    table logpresso_query_test 
    | stats count by action, dst_port
    

sort 쿼리 활용

  1. 오름차순 정렬

    table logpresso_query_test 
    | sort src_port
    
  2. 내림차순 정렬

    • 필드명 앞에 - 를 붙입니다.
    table logpresso_query_test 
    | sort -src_port
    
  3. 다중 필드 정렬

    • action 오름차순, 그 안에서 src_port 내림차순
    table logpresso_query_test 
    | sort action, -src_port
    

order 쿼리 활용

기본 사용법

  1. 기본 사용법

    • 원하는 순서로 컬럼 재배치
    table logpresso_query_test 
    | order action, src_ip, dst_ip, src_port, dst_port