데이터베이스

JDBC 로거 수집기

JDBC 수집기는 SQL 쿼리를 사용하여 관계형 데이터베이스의 테이블이나 뷰에서 데이터를 수집할 때 사용합니다.

SJDBC 수집 설정

  • JDBC 프로파일: JDBC 접속 프로파일의 이름을 입력합니다. (JDBC 연동 설정 참조)
  • SQL: 데이터 수집에 사용할 SQL 문장을 입력합니다. $where 매크로와 날짜 매크로($yyyy, $MM, $dd, $HH)를 사용할 수 있습니다. 날짜매크로는 일자에 따라 수집대상 데이터베이스 이름이나 테이블 이름이 달라지는 경우 사용합니다.
  • 조건절: $where 매크로에 삽입될 조건절을 입력합니다. 물음표(?)를 위치 지정자 (place holder)로 사용할 수 있습니다. 위치 지정자는 마지막 기준 컬럼 값으로 대치됩니다. 입력할 때 where 문자열까지 포함해야 합니다.
  • 첫번째 기준 열: 매 조회 시 마지막으로 수집했던 행 이후부터 가져올 수 있도록, 검색 기준이 되는 첫번째 컬럼 이름을 입력합니다. 가령 시퀀스, IDENTITY, auto_increment로 지정된 컬럼, 혹은 증가하는 타임스탬프 컬럼의 이름을 입력합니다.
  • 두번째 기준 열: 매 조회 시 마지막으로 수집했던 행 이후부터 가져올 수 있도록, 검색 기준이 되는 두번째 컬럼 이름을 입력합니다.
  • 첫번째 기준 열 초기 값: 첫번째 쿼리 시 조건절에 들어갈 초기 값을 입력합니다. 값을 입력하지 않을 경우 첫번째 쿼리 시 조건절을 무시하고 쿼리가 수행됩니다.
  • 첫번째 기준 열 초기 값 타입: 기준 열 초기 값의 데이터 타입을 입력합니다. 데이터 타입은 string, integer, long, date 중 하나입니다.
  • 두번째 기준 열 초기 값: 첫번째 쿼리 시 조건절에 들어갈 초기 값을 입력합니다. 값을 입력하지 않을 경우 첫번째 쿼리 시 조건절을 무시하고 쿼리가 수행됩니다.
  • 두번째 기준 열 초기 값 타입: 기준 열 초기 값의 데이터 타입을 입력합니다. 데이터 타입은 string, integer, long, date 중 하나입니다.
  • 날짜 컬럼: 데이터가 수집된 날짜를 가지고 있는 컬럼의 이름을 지정합니다. 지정되지 않을 경우 로거가 수집한 날짜를 저장합니다.
  • 날짜 포맷: 날짜 컬럼이 SQL 시간 형식이 아닌 문자열이라면 날짜의 형태를 지정할 수 있습니다(예. yyyyMMdd HH:mm:ss).
  • 데이터베이스 이름: 날짜 매크로를 포함한 데이터베이스 이름을 입력합니다. 날짜 매크로는 $yyyy, $MM, $dd, $HH 매크로를 지원합니다. 날짜매크로는 일자에 따라 수집대상 데이터베이스 이름이나 테이블 이름이 달라지는 경우 사용합니다.
  • 날짜 매크로 시작 날짜: 날짜 매크로를 사용하는 경우 시작 날짜를 지정할 수 있습니다.
  • 수집 반복 횟수 제한: 수집 주기마다 실행할 수 있는 최대 SQL 쿼리 수를 입력합니다.
  • 트랜스포머 설정: 수집된 로그에 적용할 트랜스포머를 선택합니다. "선택하세요."로 설정할 경우 트랜스포머가 적용되지 않고 원본 그대로 수집합니다. 트랜스포머에 대한 자세한 내용은 다음 항목을 참고하세요. 12.2.2 트랜스포머
Note
기준 열 초기 값을 지정하지 않을 경우, 수집기가 처음 수행할 때는 조건절을 무시하고 SQL을 수행합니다. 이는 기존 적재 로그를 모두 가져올 수 있게 하기 위함입니다. 모든 로그를 가져오지 않고 특정 범위의 로그만 가져오고 싶을 경우 기준 열 초기 값을 설정해야 합니다.
SQL 성능 고려사항
  • 기준 컬럼으로 검색할 때 인덱스를 타는지 확인합니다. 인덱스를 타지 않는다면 수천만건 이상 들어있는 테이블의 경우 지속적으로 테이블 풀스캔 부하가 걸릴 수 있습니다.
  • 한 번에 가져오는 갯수를 제한합니다. 가령, 오라클의 경우 rownum을 사용하여 가져올 행 갯수를 제한할 수 있습니다. 이를 고려하지 않으면 초기 적재 시에 너무 많은 데이터를 한 번에 가져오려고 시도하면서 문제가 발생할 수 있습니다. JDBC 로거는 지정된 주기별로 쿼리를 수행하지만, 한 번 수집할 때 더 이상 새로운 값이 없을 때까지 쿼리를 반복 수행하므로 가져오는 행 갯수를 제한하는 것이 좋습니다.
  • 필요한 컬럼만 SELECT 절에 명시적으로 지정합니다. JDBC 로거는 조회되는 모든 컬럼 값을 키/값 형태로 수집합니다. 불필요한 컬럼을 제외하면 더 나은 성능을 기대할 수 있습니다.
날짜 매크로 사용 방법
  • 날짜 매크로는 일자에 따라 수집대상 데이터베이스 이름이나 테이블 이름이 달라지는 경우 사용합니다.
  • 날짜 매크로는 연($yyyy), 월($MM), 일($dd), 시($HH) 매크로를 지원합니다.
  • 날짜 매크로 사용 시 수집 범위는 "날짜 매크로 시작 날짜" 입력값부터 현재 시간 까지입니다. 다음 날 테이블을 미리 생성해두더라도 미리 수집되거나 오늘 일자 데이터 수집을 건너뛰지 않습니다.
  • 날짜 매크로 수집은 최소 매크로 단위가 1씩 증가하면서 수집됩니다. 최소 매크로 단위가 $dd이면 1일씩, $HH면 한 시간씩 수집됩니다.
  • 예를 들어, 데이터베이스 이름 항목에 db_log_$yyyy_$MM 을 입력하고 SQL문 from 절에 db_user_$dd 를 입력하고 "날짜 매크로 시작 날짜" 항목에 2017-01-01 00:00:00 을 입력하면 JDBC 수집기는 db_log_2017_01.db_user_01, db_log_2017_01.db_user_02 순으로 테이블들을 조회해서 현재 일자 테이블까지 데이터를 수집합니다.
웹키퍼 수집기

소만사 웹키퍼 로그를 수집합니다.

웹키퍼 수집 설정

  • 데이터베이스 IP: 접속하고자 하는 MS SQL 서버 데이터베이스 IP 주소를 입력합니다.
  • 데이터베이스 접속 포트: 데이터베이스 포트를 입력합니다. 기본 포트는 1433입니다.
  • 데이터베이스 계정: 접속 가능한 데이터베이스 계정을 입력합니다.
  • 데이터베이스 암호: 데이터베이스 계정의 암호를 입력합니다.
  • 에이전트 UID: 네트워크 에이전트 UID를 입력합니다.
  • 파일 목록 추가: 첨부파일 목록 수집 여부를 설정합니다. "true"로 입력시 활성화되고, 미설정시 기본값 "false"로 비활성화됩니다.
  • 수집 기준 일자: 수집 기준 일자를 입력합니다. 미지정시 수집기 시작 시작부터 수집합니다. (예) yyyy-MM-dd HH:00:00)
  • 수집 반복 횟수 제한: 수집 주기마다 실행할 수 있는 최대 SQL 쿼리 수를 입력합니다.
  • 트랜스포머 설정: 수집된 로그에 적용할 트랜스포머를 선택합니다. "선택하세요."로 설정할 경우 트랜스포머가 적용되지 않고 원본 그대로 수집합니다. 트랜스포머에 대한 자세한 내용은 다음 항목을 참고하세요. 12.2.2 트랜스포머