배치 프로그램 모니터링
배치 애플리케이션에 와탭 에이전트를 적용하기 위한 설치 및 설정 절차를 안내합니다.

배치 모니터링 구성
배치 애플리케이션은 WAS와 달리 실행과 중단을 반복합니다. 따라서 배치 모니터링은 다음 두 개의 프로세스로 나뉩니다.
| 프로세스 | 역할 | 실행 단위 |
|---|---|---|
| 배치 호스트(Batch Host) | 배치 에이전트에서 받은 데이터를 수집 서버로 전송 | 호스트당 1개 |
| 배치 에이전트(Batch Agent) | 배치 잡의 데이터를 수집해 배치 호스트로 전송 | 배치 잡당 1개 |
두 프로세스는 UDP로 통신합니다. 이 구조 덕분에 여러 배치 잡을 병렬로 실행할 수 있습니다. 배치 호스트와 배치 에이전트는 배치 잡을 실행하는 서버에 함께 설치하세요.
통신 요건
| 경로 | 프로토콜/포트 |
|---|---|
| 배치 호스트 → 수집 서버 | TCP 6600(아웃바운드) |
| 배치 에이전트 → 배치 호스트 | UDP 6611 |

배치 프로그램 모니터링은 Java 모니터링의 부가 기능이지만 Java 모니터링 에이전트와 별개로 동작하는 독립된 시스템입니다. Java 에이전트의 설정 옵션은 배치 모니터링에 적용되지 않습니다. 이 문서에 기재한 옵션만 사용하세요. Java 에이전트에서 profile_ 접두어를 쓰는 옵션은 배치 프로그램에서 trace_ 접두어를 씁니다.
에이전트 다운로드
다음 명령어를 실행해 배치 애플리케이션 모니터링용 에이전트를 내려받으세요.
wget https://api.whatap.io/agent/whatap.agent.batch.tar.gz
tar xzf whatap.agent.batch.tar.gz
압축을 해제하면 다음과 같이 구성됩니다.
{BATCH_HOME}/
├── whatap.agent.batch.host-X.Y.Z.jar 배치 호스트
├── whatap.agent-X.Y.Z.jar Java 에이전트
├── whatap.conf 배치 호스트 설정 파일
└── agent/
├── whatap.agent.batch-X.Y.Z.jar 배치 에이전트
└── whatap.conf 배치 에이전트 설정 파일
whatap.conf 파일이 없다면 새로 만든 다음, 설정 > 에이전트 설치 메뉴에서 확인할 수 있는 license와 whatap.server.host 항목을 추가하세요.
설정 파일의 위치
도입할 때 가장 많이 실패하는 부분입니다. 반드시 확인하세요.
와탭은 설정 파일과 로그의 위치를 whatap.home 기준으로 결정합니다. whatap.home이 결정되는 방식은 기동 방법에 따라 다릅니다. 설정 파일을 찾지 못하면 기동할 때 배너에 PCODE(0)이 표시되고 데이터를 수집하지 않습니다.
whatap.home 결정 방식
우선순위는 다음과 같습니다.
-Dwhatap.home을 지정하면 항상 그 값이 우선합니다.- 지정하지 않으면
-javaagent로 기동한 프로세스(배치 에이전트)는 에이전트 jar이 있는 디렉터리를whatap.home으로 씁니다. -cp로 메인 클래스를 지정해 기동한 프로세스(배치 호스트)는 위 자동 설정이 적용되지 않으므로, 기동 시점의 작업 디렉터리가whatap.home이 됩니다.
| 프로세스 | 기동 방법 | whatap.home | 읽어들이는 설정 파일 |
|---|---|---|---|
| 배치 호스트 | -cp + 메인 클래스 | 작업 디렉터리 | 작업 디렉터리의 whatap.conf |
| 배치 에이전트 | -javaagent | 에이전트 jar이 있는 디렉터리 | jar과 같은 디렉터리의 whatap.conf |
배치 호스트는 반드시 설치 디렉터리로 이동한 다음 기동하세요. 작업 스케줄러나 잡 관리 제품에서 기동하면 작업 디렉터리가 예상과 다를 수 있습니다. 기동 스크립트 안에서 작업 디렉터리를 명시적으로 이동하세요.
배치 호스트 설정
license와 whatap.server.host 옵션값은 프로젝트의 설정 > 에이전트 설치 메뉴에서 확인할 수 있습니다.
license=
whatap.server.host=
whatap.server.port=6600
| Option | Default | Description |
|---|---|---|
license | - | 프로젝트 액세스 키 |
whatap.server.host | - | 수집 서버 주소. 이중화한 경우 슬래시(/)로 구분. 예) 10.0.0.1/10.0.0.2 |
whatap.server.port | 6600 | 수집 서버 포트 |
위 세 항목만으로 동작합니다. 이후 설명하는 옵션은 필요할 때만 추가하세요.
UDP 수신 설정
배치 호스트가 배치 에이전트로부터 데이터를 받을 주소와 포트입니 다.
net_udp_listen_ip=0.0.0.0
net_udp_listen_port=6611
| Option | Default | Description |
|---|---|---|
net_udp_listen_port | 6611 | UDP 데이터를 받을 포트. 기본 포트를 다른 용도로 쓰는 경우 변경 |
net_udp_listen_ip | 0.0.0.0 | UDP 데이터를 받기 위해 바인딩할 IP 주소. 변경 가능하나 기본값 권장 |
UDP 포트를 변경하면 배치 호스트와 배치 잡 양쪽을 모두 변경해야 합니다.
| 변경 대상 | 설정 파일 | 옵션 |
|---|---|---|
| 수신 측(배치 호스트) | {BATCH_HOME}/whatap.conf | net_udp_listen_port |
| 송신 측(배치 잡) | 배치 잡의 whatap.conf | net_udp_port |
한쪽만 변경하면 오류 없이 트랜잭션 데이터를 잃습니다. 배치 잡은 기존 포트로 계속 보내고 배치 호스트는 변경한 포트에서만 기다리기 때문입니다. 변경한 다음에는 배치 호스트와 배치 잡을 모두 다시 기동하세요.
트레이스 스텝 수집 설정
개별 트랜잭션 트레이스는 스텝을 무한정 수집할 수 없습니다. 트랜잭션별로 길이가 제한된 버퍼에 트레이스 스텝을 저장하며, 기본 설정에서는 한 배치 잡당 1,000개까지 수집합니다.
split_trace_enabled=false
| Option | Default | Description |
|---|---|---|
split_trace_enabled | false | 트레이스를 분할해 전송 |
상한을 초과한 스텝은 트레이스에 별도 표시 없이 누락됩니다. 트레이스 분석 화면의 스텝 번호가 1,000 부근에서 끊겨 있으면 이 경우입니다.
스텝 수가 많은 배치 잡의 전체 처리 내역이 필요하면 기술지원팀으로 문의하세요.
프로파일링 종료 대기 시간
배치 호스트는 실행 중인 잡을 주기적으로 점검해, 일정 시간 동안 스텝이 도착하지 않은 잡의 프로파일링을 강제로 종료합니다.
profile_expired_time=30000
| Option | Default | Description |
|---|---|---|
profile_expired_time | 30000 | 마지막 스텝을 받은 시점부터 이 시간(밀리초)이 지나면 프로파일링 강제 종료 |
배치 잡이 비정상 종료됐을 때 트랜잭션이 실행 중인 상태로 남지 않도록 자동 정리하는 기능입니다. 강제 종료한 트랜잭션에는 lost-profile 스텝을 기록합니다.
외부 시스템 응답 대기처럼 계측 대상 처리가 발생하지 않는 구간이 이 시간을 넘으면, 잡이 정상 실행 중이어도 강제 종료합니다. 이런 구간이 있는 배치 잡은 실제 무입력 구간보다 여유 있는 값으로 설정하세요.
배치 에이전트 설정
net_udp_ip=127.0.0.1
net_udp_port=6611
job_name=sample-batch-job
time_limit=300000
trace_httpc_limit=1000000
trace_sql_limit=1000000
active_stack_enabled=true
active_stack_start_wait_time=1000
active_stack_time1=5000
active_stack_time2=10000
| Option | Default | Description |
|---|---|---|
net_udp_ip | 127.0.0.1 | 데이터를 보낼 배치 호스트의 IP 주소. 같은 서버에서 실행하면 변경 불필요 |
net_udp_port | 6611 | 데이터를 보낼 배치 호스트의 UDP 포트. 배치 호스트의 net_udp_listen_port와 같은 값 |
job_name | - | 배치 잡을 식별하는 이름. 트랜잭션 이름으로 표시. 잡마다 고유한 값 설정 |
time_limit | 300000 | 지연 경고를 표시하는 임계치(밀리초). 잡을 중단시키는 값 아님 |
trace_httpc_limit | 1000000 | 배치 잡 1건에서 수집할 HTTP 호출 최대 건수 |
trace_sql_limit | 1000000 | 배치 잡 1건에서 수집할 SQL 최대 건수 |
active_stack_enabled | true | 액티브 스택 수집 여부 |
active_stack_start_wait_time | 1000 | 배치 잡 시작 후 첫 액티브 스택을 수집하기까지 대기 시간(밀리초) |
active_stack_time1 | 5000 | 최초 5회까지의 액티브 스택 수집 간격(밀리초) |
active_stack_time2 | 10000 | 6회 이후의 액티브 스택 수집 간격(밀리초) |
net_udp_ip와 net_udp_port는 배치 호스트와 같은 서버에서 실행하는 일반적인 구성이라면 기본값으로 동작합니다. 그 외 옵션은 필요할 때만 추가하세요.