HTTPPOST 수집기 생성 가이드

로그프레소에서 HTTP POST 수집기를 만들고, 외부에서 로그를 전송하는 두 가지 방법을 안내합니다.

내용 중 수정이 필요한 부분이나 추가 의견이 있으시면 언제든 피드백 부탁드립니다.


1. 사전 준비

  • 수집기를 동작시키려면 테이블 → 수집 모델 → 수집기 순서로 만들어 두어야 합니다.

테이블 생성

  1. [시스템] → [테이블] → 추가 클릭

  2. 항목 입력 후 저장

    • 테이블 이름: getpost

    • 보관주기 : 0일(무제한)

수집 모델 생성

  1. 수집 → 수집 모델 → 추가 클릭

  2. 항목 입력 후 저장

    • 이름: HTTPPOST

    • 수집 유형: HTTP POST 선택

수집기 생성

  1. 수집 → 수집 → 추가 클릭

  2. 항목 입력 후 저장

    • 이름: HTTPPOST

    • 주기: 5초

    • 수집모델: HTTP POST

    • 대상 테이블: getpost

    • 콜백 이름: getpost

  3. 수집기 실행

엔드포인트 URL

  • 수집 엔드포인트는 다음과 같이 구성됩니다.

  • https://<로그프레소_서버_주소>:8443/log/<콜백이름>

  • 예) 로컬에서 콜백 이름이 getpost인 경우 → https://127.0.0.1:8443/log/getpost


2. 로그프레소 wget 쿼리로 전송 테스트

  • 로그프레소 쿼리 창에서 wget 명령을 사용하면, 서버에 별도로 접속하지 않고도 자기 자신(또는 다른 노드)의 HTTP POST 수집기로 데이터를 보낼 수 있습니다.

  • 예시 쿼리(분석 → 쿼리로 이동 후 하기 쿼리 실행)

    json "{}"
    | eval url="<https://127.0.0.1:8443/log/getpost>"
    | eval headers=dict("Accept", "application/json")
    | eval name="superman"
    | eval age=30
    | wget method=post format=json header=headers
    
  • 확인(분석 → 쿼리로 이동 후 하기 쿼리 실행하여 테이블 조회)

    table getpost
    

3. CLI(curl)에서 전송 테스트

  • 서버 터미널이나 다른 호스트에서 곧바로 보낼 때는 curl 를 이용하여 데이터를 전달 할 수 있습니다.

  • 예시 쿼리(127.0.0.1로 데이터 전달)

    curl -k -L -v \
         -d '{"name":"superman","age":30}' \
         -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         https://127.0.0.1:8443/log/getpost
    
  • 확인(분석 → 쿼리로 이동 후 하기 쿼리 실행하여 테이블 조회)

    table getpost
    
json "{}"
| eval url="<https://127.0.0.1:8443/log/getpost>"
| eval headers=dict("Accept", "application/json")
| eval name="superman"
| eval age=30
| wget method=post format=json header=headers

올려주신 예제 그대로 테스트 했는데 수집되지 않습니다.

  • https://127.0.0.1:8443/log/getpost 로 바꿔야 할까요?

추가적으로 아래 내용도 질문 드립니다.

  • 분석 밖에 없는데 443이 아닌 8443으로 수집해야 하나요?
  • 443, 8443이 아닌 전용 포트로 수집하고 싶으면 어떻게 해야 하나요?