설치 매뉴얼
개요
ADT캡스 앱은 캡스 출입통제시스템의 출입 이벤트 뷰 테이블을 JDBC 폴링 방식으로 정기 수집하여 출입보안 로그를 로그프레소 소나에 정규화·저장합니다.
Note
본 매뉴얼의 수집 SQL 및 컬럼명은 특정 구축 환경을 기준으로 작성되었습니다. 실제 환경에 따라 뷰 테이블명·컬럼명이 다를 수 있으므로, 적용 전 DB 관리자와 스키마를 확인하세요.
적용 범위
Note
소나 4.0 이상, Microsoft SQL Server 2016 이상에서 동작합니다. 본 매뉴얼의 수집 SQL 및 설정은 Microsoft SQL Server(MSSQL) 기준으로 작성되었습니다.
요구 사항
| 항목 | 요구사항 | 비고 |
|---|---|---|
| 선행 앱 | Microsoft SQL Server 앱 설치 필요 | MSSQL JDBC 접속 프로파일 사용을 위해 필요 |
| DB 계정/권한 | 출입 이벤트 뷰 테이블에 대한 SELECT 권한을 가진 읽기 전용 계정 (DB 관리자에게 요청) | 권한 부족 시 수집 실패 |
| 네트워크 허용 | TCP/{MSSQL 포트} (소나 수집 노드 → ADT캡스 DB 서버, Outbound) | 기본 포트 1433, 방화벽 정책 반영 필요 |
| 소나 계정 권한 | 접속 프로파일·수집기 등록을 위한 관리자 권한 | - |
ADT캡스 DB 설정
단계 1: DB 계정·권한 준비
출입 이벤트 뷰 테이블에 SELECT 권한을 가진 읽기 전용 계정을 준비합니다.
Caution
시간 컬럼에 인덱스가 없으면 폴링 쿼리가 풀스캔으로 동작해 DB에 성능 저하를 일으킬 수 있습니다. 운영 DB에 적용하기 전 인덱스 유무를 반드시 확인하세요.
단계 2: 수집 대상 확인
수집 대상 뷰 테이블과 증분 폴링 기준 컬럼을 확인합니다.
| 항목 | 값 | 비고 |
|---|---|---|
| 대상 뷰 | 출입 이벤트 뷰 테이블 | 캡스 출입통제시스템 이벤트 뷰 |
| 시간 컬럼 | e_datetime | varchar 형식 (yyyy-MM-dd HH:mm:ss) |
| 증분 기준 컬럼 | event_datetime | e_datetime의 정규화 필드 |
로그프레소 수집 설정
단계 1: DB 접속 프로파일 추가
Note
접속 프로파일에서 "SQL Server" 접속 문자열을 사용하려면 Microsoft SQL Server 앱이 먼저 설치되어 있어야 합니다.
시스템 > 접속 프로파일 > 추가:
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 접속 프로파일을 식별할 고유한 이름 |
| 필수 | 식별자 | 로그프레소 쿼리 등에서 사용할 고유 식별자 (예: adtcaps_mssql) |
| 필수 | 유형 | 데이터베이스 선택 |
| 필수 | 데이터베이스 유형 | 사용자 정의 선택 |
| 필수 | 접속 문자열 | JDBC 문자열 템플릿내의 SQL Server 문자열 클릭 후, 접속할 DB정보에 맞게 수정 |
| 필수 | 계정 | 사전 준비한 읽기 전용 계정 (예: sonar_read) |
| 필수 | 암호 | 계정 암호 |
| 선택 | 읽기 전용 | 체크 권장 |
항목을 모두 입력한 뒤, 접속 테스트 버튼을 통해 정상적으로 접속되는지 확인합니다.
단계 2: 수집기 추가
수집 > 수집기 > 추가에서 아래 값을 입력합니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 수집기를 식별할 고유한 이름 (예: adtcaps) |
| 필수 | 주기 | 60 초 (권장) |
| 필수 | 적재 위치/수집 위치 | 로그프레소 플랫폼 구성에 따라 적합한 노드 선택 |
| 필수 | 수집 모델 | ADT캡스 출입보안 |
| 필수 | 테이블 | ADTCAPS로 시작하는 테이블명 |
수집기의 상세 설정에서 아래 값을 입력합니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | JDBC 프로파일 | 단계 1에서 등록한 접속 프로파일의 식별자 입력 |
| 필수 | SQL | 수집 시 실행할 쿼리. 예: 아래 SQL 참조 |
| 필수 | 조건절 | SQL 에 적용할 조건절 쿼리. 예: e_datetime > ? |
| 필수 | 첫번째 기준 열 | 증분 수집 기준이 되는 컬럼의 정규화 필드명. 예: event_datetime |
| 필수 | 첫번째 기준 열 초기 값 타입 | 첫번째 기준 열의 필드타입. 예: date |
SQL:
Caution
아래 SQL은 참고용 예시입니다. 뷰 테이블명·컬럼명은 사이트별 DB 구성에 따라 다를 수 있으므로, 적용 전 반드시 실제 환경의 스키마를 확인하세요.
SELECT
CONVERT(DATETIME, e_datetime, 120) AS event_datetime,
e_mode_name AS category,
CASE e_result WHEN 1 THEN '성공' WHEN 0 THEN '실패' END AS result,
e_doorname AS door_name,
e_idno AS emp_key,
e_name AS emp_name,
e_Card AS card_id,
e_doorid AS door_id,
e_mode AS category_code
FROM {출입 이벤트 뷰 테이블}
$where
ORDER BY event_datetime
Note
`$where`는 증분 폴링 조건이 자동으로 삽입되는 자리 표시자입니다. 조건절에 입력한 `WHERE e_datetime > ?`에서 `?`에는 직전 수집 시점이 자동으로 바인딩됩니다.
Tip
최근 실시간이 아닌 일정 시간 이전 데이터만 수집하려면 상한 조건을 조건절에 입력합니다.
- 1시간 지연: WHERE e_datetime > ? AND e_datetime <= CONVERT(VARCHAR(19), DATEADD(HOUR, -1, GETDATE()), 120)
- 24시간 지연: WHERE e_datetime> ? AND e_datetime <= CONVERT(VARCHAR(19), DATEADD(HOUR, -24, GETDATE()), 120)
- 1시간 지연: WHERE e_datetime > ? AND e_datetime <= CONVERT(VARCHAR(19), DATEADD(HOUR, -1, GETDATE()), 120)
- 24시간 지연: WHERE e_datetime> ? AND e_datetime <= CONVERT(VARCHAR(19), DATEADD(HOUR, -24, GETDATE()), 120)
수집 검증
수집기를 활성화하면 첫 번째 폴링은 조건절을 무시하고 설정한 SQL로 조회된 전체 데이터를 수집합니다. 이후 폴링부터는 직전 수집 시점 이후에 추가된 행만 가져오므로 중복 없이 신규 이벤트를 수집합니다.
Note
첫 번째 폴링에서 특정 시점 이후 데이터만 수집하려면, 수집기의 `첫번째 기준 열 초기 값` 옵션에 시작 시점을 입력하세요. (예: `2026-04-01 00:00:00`)
수집기 활성화 후 수집 > 수집기에서 해당 수집기의 수집 건수를 확인하거나 테이블을 조회하여 수집을 확인합니다.
- 정상: 수집 건수가 1 이상.
- 비정상: 수집 건수가 0이거나 오류 상태이면 DB 접속 프로파일 테스트, WHERE 조건·시간 컬럼 설정, 폴링 주기, JDBC 디버그 로그를 재확인합니다.


