데이터베이스
데이터베이스 로거는 데이터베이스 서버로부터 데이터를 수집합니다.
JDBC 로거
JDBC 로거는 SQL 쿼리를 사용하여 관계형 데이터베이스의 테이블이나 뷰에서 데이터를 수집합니다.
- JDBC 프로파일
- 원격 호스트 연결에 사용할 JDBC 접속 프로파일
- SQL
- 데이터 수집에 사용할 SQL 문.
$where매크로와 날짜 매크로($yyyy(연),$MM(월),$dd(일),$HH(시))를 사용할 수 있습니다. 날짜 매크로는 일자에 따라 수집대상 데이터베이스 이름이나 테이블 이름이 달라지는 경우 사용합니다. - 조건절
$where매크로에 삽입할 조건절. 물음표(?)를 위치 지정자 (placeholder)로 사용할 수 있습니다. 위치 지정자는 마지막 기준 컬럼 값으로 대치됩니다. 입력할 조건절은where문자열을 포함해야 합니다.- 첫번째 기준 열
- 매 조회 시 마지막으로 수집했던 행 이후부터 가져올 수 있도록 검색 기준이 되는 첫 번째 컬럼 이름. 가령 시퀀스,
IDENTITY,auto_increment로 지정된 컬럼, 혹은 증가하는 타임스탬프 컬럼의 이름을 입력합니다. - 두번째 기준 열
- 매 조회 시 마지막으로 수집했던 행 이후부터 가져올 수 있도록 검색 기준이 되는 두번째 컬럼 이름
- 첫번째 기준 열 초기 값
- 첫번째 쿼리 시 조건절에 들어갈 초기 값을 입력합니다. 값을 입력하지 않을 경우 첫번째 쿼리 시 조건절을 무시하고 쿼리가 수행됩니다.
- 첫번째 기준 열 초기 값 타입
- 기준 열 초기 값의 데이터 타입(
string,integer,long,date중 하나) - 두번째 기준 열 초기 값
- 첫 번째 쿼리 시 조건절에 들어갈 초기 값. 값을 입력하지 않으면 첫번째 쿼리 시 조건절을 무시하고 쿼리가 수행됩니다.
- 두번째 기준 열 초기 값 타입
- 기준 열 초기 값의 데이터 타입(
string,integer,long,date중 하나) - 날짜 컬럼
- 데이터가 수집된 날짜를 가지고 있는 컬럼의 이름. 지정되지 않을 경우 로거가 수집한 날짜를 저장합니다.
- 날짜 포맷
- 날짜 컬럼이 SQL 시간 형식이 아닌 문자열에 적용할 날짜의 형태(예: yyyyMMdd HH:mm:ss)
- 데이터베이스 이름
- 날짜 매크로(
$yyyy(연),$MM(월),$dd(일),$HH(시))를 포함한 데이터베이스 이름. 날짜 매크로는 일자에 따라 수집대상 데이터베이스 이름이나 테이블 이름이 달라지는 경우 사용합니다. - 날짜 매크로 시작 날짜
- 날짜 매크로를 사용하는 경우 시작 날짜를 지정
- 수집 반복 횟수 제한
- 수집 주기마다 실행할 수 있는 최대 SQL 쿼리 수
- 트랜스포머 설정
- 수집된 로그에 적용할 트랜스포머를 목록에서 선택. 미지정 시 트랜스포머를 적용하지 않고 원본 그대로 수집합니다.
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
- 접속하고자 하는 마이크로소프트 SQL 서버의 IP 주소를 입력합니다.
- 데이터베이스 접속 포트
- 데이터베이스 접속 포트(기본값: 1433)
- 데이터베이스 계정
- 접속 가능한 데이터베이스 계정
- 데이터베이스 암호
- 데이터베이스 계정의 암호
- 에이전트 UID
- 네트워크 에이전트의 UID
- 파일 목록 추가
- 첨부파일 목록 수집 여부를 나타내는 불리언 값(기본값:
false) - 수집 기준 일자
- 수집 기준 일자. 미지정시 로거 시작 시점부터 데이터를 수집합니다. (예) yyyy-MM-dd HH:00:00)
- 수집 반복 횟수 제한
- 수집 주기마다 실행할 수 있는 최대 SQL 쿼리 개수(기본값: 0, 제한 없음)
- 트랜스포머 설정
- 수집된 로그에 적용할 트랜스포머를 목록에서 선택. 미지정 시 트랜스포머를 적용하지 않고 원본 그대로 수집합니다.


