실험실

다운로드 633
업데이트 2026. 10. 9.

티켓 동기화

개요

다른 로그프레소 소나 인스턴스의 티켓을 이 인스턴스로 복제하는 기능입니다. 지사·고객사·망분리 구간에 흩어진 소나의 티켓을 본사 인스턴스 한 곳에서 모아 보는 용도로 사용합니다.

복제 대상은 티켓만이 아닙니다. 티켓이 근거로 삼은 탐지 이벤트와 원본 로그까지 함께 가져오므로, 복제된 티켓을 열어 "무엇을 보고 이 티켓이 생겼는지"를 그대로 확인할 수 있습니다.

항목내용
메뉴실험실 > 티켓 동기화
방식폴링(기본 5초 주기). 수집 측이 원격에 접속해 변경분을 가져옵니다
인증접속 프로파일에 저장된 계정/암호
복제 단위원격 티켓 분류 1개 → 로컬 티켓 분류 1개

시작하기 전에

양쪽 인스턴스에 실험실 앱을 설치하는 것을 권장합니다. 수집하는 쪽에만 설치해도 동작하지만, 원격에도 설치되어 있으면 변경된 티켓만 골라내는 전용 조회 명령어를 쓸 수 있어 원격 부하가 크게 줄어듭니다. 원격에 앱이 없으면 자동으로 호환 모드로 내려가며, 그때는 메모가 제한적으로만 복제됩니다(아래 "조회 방식" 참고).

원격 인스턴스에 연동 전용 계정을 하나 만들고 다음을 확인하세요.

  • 다단계 인증(MFA)이 비활성이어야 합니다. 로그인 과정에 추가 단계가 있으면 접속하지 못합니다.
  • 클러스터 관리자여야 합니다. 전용 조회 명령어가 클러스터 관리자 권한을 요구합니다. 일반 관리자 권한으로는 부족하며, 권한이 모자라면 진단 화면에 REMOTE_PERMISSION으로 표시됩니다.
  • 탐지 규칙 조회 권한(실시간 규칙 조회 / 배치 규칙 조회)이 있으면 좋습니다. 근거 이벤트를 제대로 표시하는 데 사용됩니다(아래 "복제 전용 탐지 규칙" 참고).
Note
원격이 이중화되어 있다면 접속 프로파일의 주소를 VIP가 아니라 노드 하나를 특정해주세요.
티켓은 두 노드가 공유하는 데이터베이스에서 오지만 근거 이벤트는 각 노드의 로그 저장소에서
오기 때문에, VIP로 접속하면 회차마다 응답하는 노드가 달라질 수 있어서 근거 동기화가 불안정할 수 있습니다.

1단계 — 접속 프로파일 만들기

설정 > 접속 프로파일에서 유형이 로그프레소 소나인 프로파일을 만듭니다.

옵션필수설명
엔드포인트 URL예원격 소나 주소. 예: https://sonar.example.com:8443. 포트를 생략하면 443
계정예연동 계정 로그인 ID
암호예계정 암호. 저장 후에는 화면에 표시되지 않습니다
인증서 검사 생략아니오사설 인증서를 쓰는 원격이면 true. 기본 false
접속 타임아웃아니오초 단위. 기본 10
읽기 타임아웃아니오초 단위. 기본 30

저장 전에 연결 테스트로 접속과 로그인이 되는지 확인하세요.

2단계 — 매핑 만들기

실험실 > 티켓 동기화에서 추가를 누르면 오른쪽에 설정 패널이 열립니다. 위에서부터 차례로 고르면 되고, 앞 단계를 정해야 다음 단계가 채워집니다.

  1. 로그프레소 소나 접속 프로파일 — 1단계에서 만든 프로파일을 고릅니다.
  2. 원격 티켓 분류 — 원격 인스턴스의 티켓 분류 목록이 표시됩니다. 고르면 그 분류의 최근 티켓 20건이 미리보기로 나옵니다. 저장하기 전에 의도한 분류가 맞는지 여기서 확인하세요.
  3. 로컬 티켓 분류 — 복제된 티켓이 쌓일 이 인스턴스의 분류입니다.
  4. 수집 주기 — 기본 5초입니다.
  5. 수집 대기 — 기본 0초. 아래 참고.
  6. 동기화 항목 — 항목별로 무엇을 어디까지 따라갈지 정합니다. 아래 참고.
  7. 동기화 활성화 — 켠 상태로 저장하면 바로 수집이 시작됩니다.
Note
저장한 시점부터 수집합니다. 원격의 과거 티켓은 자동으로 가져오지 않습니다. 과거까지 필요하면
저장한 뒤 "수집 시점 초기화"로 시작 시점을 뒤로 돌리세요(아래 참고).

기존 매핑을 수정할 때 접속 프로파일과 원격 티켓 분류는 바꿀 수 없습니다. 이미 수집 중인 동기화를 말없이 다른 대상으로 돌리지 않기 위해서입니다. 대상을 바꾸려면 매핑을 지우고 새로 만드세요.

수집 대기

마지막 변경 후 이만큼 지난 티켓만 가져옵니다. 기본값은 0초이고, 설정 화면은 60초를 권장값으로 안내합니다.

사람이 티켓 하나를 정리하는 동안 보통 여러 번 저장이 일어납니다. 대기가 없으면 폴링이 그 중간에 내려앉아 미완성 상태를 복제했다가 다음 회차에 다시 고칩니다. 원격이 근거 이벤트를 저장소에 올리기 전에 티켓만 먼저 가져가는 것도 막아 줍니다.

반영까지 걸리는 시간은 수집 주기 + 수집 대기가 됩니다. 호환 모드(msgbus)에서는 적용되지 않습니다.

동기화 항목

원격을 그대로 따라가는 것이 늘 옳지는 않습니다. 복제된 티켓을 여기서 분석가가 재분류하거나 종료했다면, 다음 회차에 원격 값이 되돌아오면 곤란합니다. 그래서 항목마다 세 가지 중에서 고릅니다.

모드동작
가져오지 않음복제하지 않습니다
최초 1회만처음 복제할 때만 가져오고 이후에는 로컬 값을 지킵니다
계속 동기화계속 원격에 맞춥니다
항목기본값포함되는 내용
제목과 본문계속 동기화제목, 내용, 형식
중요도최초 1회만
정오탐 분류최초 1회만공격 여부, 사고 여부
종료 여부최초 1회만종료·재오픈, 종료 시각
건수와 이벤트 시각계속 동기화축약 건수, 발생·이벤트 시각
출처 정보계속 동기화계정, 사용자, 부서, 사이트
근거 이벤트계속 동기화
원본 이벤트계속 동기화복제 용량이 가장 큰 항목
메모계속 동기화연동 계정 명의로 작성됩니다

제목과 본문·중요도·종료 여부·건수와 이벤트 시각은 최초 복제에서 뺄 수 없습니다. 티켓을 만드는 데 반드시 필요한 값이라 가져오지 않음이 제시되지 않습니다.

Note
"건수와 이벤트 시각"을 최초 1회만으로 두면 근거 이벤트도 함께 멈춥니다. 이벤트가 늘었는지를
건수 변화로 판단하기 때문에, 건수를 따라가지 않으면 "근거 이벤트: 계속 동기화"로 두어도 최초
복제 이후 근거가 들어오지 않습니다. 근거가 필요하면 이 항목은 계속 동기화로 두세요.

"원본 이벤트"는 "근거 이벤트"에 의존합니다. 근거 이벤트를 끄면 원본도 복제되지 않습니다. 원본만 켜는 조합은 의미가 없습니다. 저장소 부담을 줄이려면 원본 이벤트만 끄세요.

현재 근거 이벤트·원본 이벤트·메모에서는 최초 1회만과 계속 동기화가 같게 동작합니다. 구분이 필요하면 가져오지 않음만 의미가 있습니다.

목록 화면 읽기

열의미
상태동작 상태 인디케이터
접속 프로파일사용 중인 프로파일 이름
원격 티켓 분류원격 분류 이름
로컬 티켓 분류복제 대상 분류의 현재 이름. 분류가 삭제되었으면 (삭제됨)
주기수집 주기
마지막 동기화마지막으로 성공한 수집 시각
마지막 티켓 시각마지막으로 가져온 티켓의 변경 시각

마지막 두 열은 서로 다른 질문에 답합니다. 앞은 "언제 돌았나", 뒤는 "어디까지 가져왔나"입니다. 원격이 조용하면 앞은 계속 갱신되지만 뒤는 멈춰 있습니다. 둘 다 과거에 멈춰 있으면 수집 자체가 동작하지 않는 것이니 상태 인디케이터를 확인하세요.

분류 이름에 마우스를 올리면 GUID가 툴팁으로 보이고, 옆의 복사 버튼으로 클립보드에 담을 수 있습니다.

상태 인디케이터

수집기 목록과 같은 규칙입니다.

색상태할 일
빨강중지됨(비활성)매핑을 열어 "동기화 활성화"를 켜세요
노랑오류클릭하면 진단 대화상자가 열립니다
초록동작 중—

오류일 때만 클릭할 수 있습니다. 진단 대화상자에는 오류 분류·상세 메시지·발생 시각·마지막 성공 시각·동기화 기준점·조회 방식이 표시되고, 분류별 권장 조치가 함께 나옵니다. 여기서 지금 동기화로 즉시 재시도하거나 초기화로 수집 시점을 바꿀 수 있습니다.

수집 시점 초기화

과거 티켓을 가져오는 유일한 방법이고, 수집이 멈춰 있을 때 되살리는 방법이기도 합니다. 목록의 초기화 버튼 또는 진단 대화상자에서 엽니다.

달력에서 시작할 시점을 고르면 다음 회차부터 그 시점을 기준으로 수집하고, 오류와 마지막 동기화 기록, 조회 방식을 지웁니다. 미래 시각은 지정할 수 없습니다.

  • 진행 중이던 회차는 중단됩니다. 그대로 두면 옛 기준으로 끝나면서 방금 지정한 시점을 덮어쓰기 때문입니다.

  • 시점을 멀리 잡을수록 그 다음 회차가 길어집니다. 몇 달 전으로 되돌리면 첫 회차에 시간이 걸리고, 그동안 해당 매핑의 다음 회차는 시작되지 않습니다.

Note
초기화는 "다시 읽게" 할 뿐 "다시 가져오게" 하지 않습니다. 이미 복제되어 있고 원격에서도 그 뒤로
바뀌지 않은 티켓은 요약 정보만으로 "변한 것 없음"으로 걸러지므로, 그 티켓의 비어 있는 근거는
초기화만으로 채워지지 않습니다. 아직 복제된 적 없는 티켓에는 초기화가 그대로 효과가 있습니다.

무엇이 복제되는가

복제되는 것

  • 티켓 본문 — 제목, 내용, 형식, 중요도, 상태, 공격 여부, 사고 여부, 건수, 발생·이벤트 시각, 출처 정보, 생성·변경 시각
  • 상태 전이 — 원격에서 종료하면 로컬도 종료되고, 재오픈하면 로컬도 재오픈됩니다
  • 근거 이벤트와 원본 로그 — 건수 제한이 없습니다
  • 메모 — 아래 "메모 복제" 참고
  • GUID — 원격과 같은 GUID로 복제됩니다. 두 인스턴스가 같은 티켓을 같은 식별자로 가리킵니다

복제되지 않는 것

항목이유
티켓 번호로컬에서 새로 부여됩니다. GUID가 동일하므로 식별에는 문제가 없습니다
담당자·결재자원격 인스턴스의 사용자이고, 이 인스턴스에는 그 계정이 없습니다
첨부파일원격 인스턴스의 파일입니다
태그태그는 티켓 분류에 매이지 않은 회사 전역 객체라, 복제하면 이 동기화와 무관한 화면의 태그 목록까지 원격 태그로 채워집니다
삭제원격에서 티켓이나 메모를 지워도 로컬 복제본은 남습니다
감사 이력원격에서 누가 언제 무엇을 했는지는 넘어오지 않습니다. 복제 티켓의 이력은 로컬에서 새로 생기고 수행자는 연동 계정입니다

메모 복제

메모는 티켓과 별개의 기준점으로 수집합니다. 메모를 달아도 티켓의 변경 시각은 움직이지 않기 때문에, 티켓 기준으로만 보면 영원히 잡히지 않습니다.

  • 작성자는 옮길 수 없습니다. 복제된 메모의 작성자는 연동 계정이고, 원본 작성자는 본문 앞에 [이름] 형태로 표기됩니다.
  • 원격에서 메모를 수정하면 복제본도 따라 수정됩니다. 삭제는 따라가지 않습니다.
  • 복제된 티켓의 메모만 들어옵니다. 아직 복제되지 않은 티켓에 달린 메모는 붙일 곳이 없어 건너뜁니다. 그 메모까지 필요하면 티켓이 복제될 만큼 수집 시점을 과거로 되돌리세요.
  • 호환 모드(msgbus)에서는 티켓이 다른 이유로 변경될 때 딸려오는 메모만 들어옵니다.

복제 전용 탐지 규칙

동기화를 시작하면 탐지 규칙 목록에 비활성 규칙이 자동으로 생성됩니다. 이름은 원본 규칙 이름 (접속 프로파일 이름) 형태입니다. 실시간 규칙과 배치 규칙 모두 만들어집니다.

이것은 복제된 근거 이벤트를 화면에 보이게 하기 위한 자리표시자입니다. 소나는 이벤트를 조회할 때 "그 이벤트를 만든 탐지 규칙을 볼 권한이 있는가"를 함께 검사하는데, 복제된 이벤트가 달고 온 원격 규칙 번호는 이 인스턴스에 존재하지 않아 그대로 두면 아무에게도 보이지 않습니다.

  • 항상 비활성입니다. 탐지를 수행하지 않고, 쿼리도 동작하지 않습니다.
  • 매핑의 로컬 티켓 분류에 묶입니다. 그 분류를 볼 수 있는 사람만 근거 이벤트를 볼 수 있다는 뜻이고, 티켓 권한과 근거 권한이 어긋나지 않습니다.
  • 원본 탐지 쿼리는 주석 형태로 보존됩니다. 복제된 티켓을 조사할 때 원격에서 어떤 로직이 탐지했는지 읽을 수 있습니다.
Note
이 규칙들은 지우지 마세요. 지우면 이미 복제된 근거 이벤트가 화면에서 보이지 않게 되고,
로그 저장소에 적재된 이벤트는 나중에 수정할 수 없습니다.

자동 생성되는 인덱스

앱을 설치하면 기동할 때 코어 테이블 두 곳에 인덱스를 만듭니다. 매핑이 하나도 없어도 생성됩니다.

인덱스 이름테이블컬럼쓰이는 곳
IX_sonar_tickets_repo_id_updatedsonar_tickets(repo_id, updated_at)변경된 티켓 증분 조회
IX_sonar_ticket_comments_repo_id_updatedsonar_ticket_comments(repo_id, updated_at)변경된 메모 증분 조회

코어 티켓 테이블에는 updated_at 인덱스가 없어, 이 인덱스가 없으면 증분 조회 비용이 변경 건수가 아니라 해당 분류의 전체 티켓 수에 비례합니다. 5초 주기로 치르기에는 큰 비용입니다.

이 인덱스가 필요한 쪽은 티켓을 읽히는 인스턴스(원격)인데, 그쪽에는 매핑이 없습니다. 그래서 매핑 유무를 보지 않고 생성합니다.

동작은 이렇습니다.

  • 같은 역할의 인덱스가 이미 있으면 건너뜁니다. 이름이 아니라 repo_id가 첫 번째, updated_at이 두 번째인 인덱스가 있는지를 봅니다. 코어가 나중에 같은 인덱스를 다른 이름으로 추가해도 중복이 생기지 않습니다.
  • 전용 백그라운드 스레드에서 만듭니다. 티켓이 수백만 건이면 수 분이 걸릴 수 있지만 동기화가 그 뒤에 줄 서지 않고, InnoDB가 온라인으로 추가하므로 그동안에도 인스턴스는 정상 동작합니다.
  • 실패해도 동기화는 그대로 돕니다. 계정에 DDL 권한이 없으면 경고 한 줄만 남습니다. 속도만 잃고 정확성은 잃지 않습니다.

생성 여부는 로그에서 확인할 수 있습니다.

experimental: creating index IX_sonar_tickets_repo_id_updated on sonar_tickets, this may take a while on a large ticket table
experimental: created index IX_sonar_tickets_repo_id_updated in 1234 ms
experimental: cannot create index IX_sonar_tickets_repo_id_updated on sonar_tickets, incremental ticket queries will scan the repository: ...

직접 확인하려면:

SHOW INDEX FROM sonar_tickets        WHERE Key_name = 'IX_sonar_tickets_repo_id_updated';
SHOW INDEX FROM sonar_ticket_comments WHERE Key_name = 'IX_sonar_ticket_comments_repo_id_updated';
Note
운영 중인 대형 인스턴스에 처음 배포할 때는 한가한 시간대를 고르는 편이 안전합니다. 온라인으로
추가되므로 서비스가 멈추지는 않지만, 인덱스를 만드는 동안 디스크 입출력 부하가 생깁니다.

조회 방식

진단 대화상자의 "조회 방식" 항목에 둘 중 하나가 표시됩니다.

값의미
query원격에 실험실 앱이 있어 전용 조회 명령어를 사용합니다. 변경된 티켓만 걸러서 가져오므로 가볍습니다
msgbus원격에 앱이 없어 호환 모드로 동작합니다. 변경 감지 정확도는 같지만 원격 부하가 더 큽니다

호환 모드에서는 두 가지가 제한됩니다. 수집 대기가 적용되지 않고, 메모가 티켓 변경에 딸려올 때만 들어옵니다.

원격에 앱을 설치하면 다음 회차부터 자동으로 query로 올라갑니다. 즉시 바꾸려면 초기화하세요.

문제 해결

진단 대화상자의 오류 분류를 먼저 보세요.

오류 분류원인과 조치
LOGIN_FAILURE계정 또는 암호가 맞지 않습니다. 원격에서 암호가 변경되었을 가능성이 높습니다. 접속 프로파일을 수정하세요
CONNECT_FAILURE엔드포인트 주소나 네트워크 경로 문제입니다. 사설 인증서를 쓴다면 "인증서 검사 생략"이 필요합니다
REMOTE_PERMISSION연동 계정이 원격의 클러스터 관리자가 아닙니다. 회사 관리자로는 부족합니다
QUERY_FAILURE원격에서 조회를 실행하지 못했습니다. 연동 계정의 권한과 원격 티켓 분류를 확인하세요
SYNC_FAILURE읽어 온 내용을 반영하는 중에 실패했습니다. 상세 메시지에 어느 단계인지 나옵니다 — 근거 적재 실패가 대부분 여기에 속합니다
PROFILE_NOT_FOUND접속 프로파일이 삭제되었습니다. 매핑을 수정해 다른 프로파일을 지정하세요
LOCAL_REPO_DELETED로컬 티켓 분류가 삭제되어 동기화가 자동 중지되었습니다. 매핑을 수정해 다른 분류를 지정하세요
NO_CLUSTER_ADMIN이 인스턴스에 동기화를 수행할 클러스터 관리자 계정이 없습니다

티켓은 들어오는데 근거자료가 비어 있을 때

가장 흔한 원인은 복제 전용 탐지 규칙이 만들어지지 않은 것입니다. 이 경우 이벤트는 저장소에 정상적으로 적재되어 있는데 조회에서만 걸러지므로, 오류도 로그도 남지 않습니다.

순서대로 확인하세요.

  1. 진단 대화상자에 오류가 있는지 먼저 봅니다. 근거 적재 자체가 실패하면 그 회차 전체가 실패로 기록됩니다.
  2. 탐지 규칙 목록에 원본 이름 (프로파일 이름) 형태의 비활성 규칙이 있는지 확인합니다. 하나도 없으면 그 매핑의 근거는 전부 보이지 않는 상태입니다.
  3. 연동 계정에 탐지 규칙 조회 권한이 있는지 확인합니다. 권한이 없으면 자리표시자를 제대로 만들지 못합니다.
  4. 동기화 항목에서 "건수와 이벤트 시각"이 최초 1회만으로 되어 있지 않은지 확인합니다 (위 경고 참고).
  5. 원격에서 해당 이벤트가 아직 보존 기간 안에 있는지 확인합니다. 이미 삭제된 이벤트는 가져올 수 없습니다.
Note
자리표시자 규칙이 없는 상태로 이미 적재된 이벤트는 나중에 고칠 수 없습니다. 로그 저장소의
레코드는 수정이 불가능합니다. 원인을 해소한 뒤 다시 수집하면 올바른 이벤트가 새로 들어오고
화면에 보이기 시작하지만, 보이지 않는 옛 레코드는 저장소에 남습니다.

근거자료가 회차마다 일부만 들어올 때

원격이 이중화되어 있고 접속 프로파일이 VIP를 가리키는 경우입니다. 티켓은 두 노드가 공유하는 데이터베이스에서 오지만 근거 이벤트는 각 노드의 로그 저장소에서 오기 때문에, 회차마다 응답하는 노드가 달라지면 그 노드가 가진 만큼만 복제됩니다.

프로파일 주소를 노드 하나로 고정하세요. 양쪽 노드의 근거가 모두 필요하면 노드마다 매핑을 따로 두고 같은 로컬 분류로 모으면 됩니다.

특정 티켓이 들어오지 않을 때

수집 기준은 티켓의 변경 시각입니다. 생성 시각이 아닙니다. 원격에서 오래전에 만들어졌지만 최근에 갱신된 티켓은 들어오고, 반대로 "마지막 티켓 시각"보다 변경 시각이 이른 티켓은 들어오지 않습니다. 필요하면 초기화로 기준점을 그 티켓의 변경 시각 이전으로 되돌리세요.

제약사항

  • 연동 계정은 다단계 인증을 사용할 수 없고, 원격의 클러스터 관리자여야 합니다.
  • HTTP 프록시를 경유한 접속은 지원하지 않습니다. 수집 측에서 원격 인스턴스로 직접 연결할 수 있어야 합니다.
  • 티켓 삭제와 메모 삭제는 동기화되지 않습니다.
  • 담당자·결재자·첨부파일·태그·규칙 참조는 복제되지 않습니다.
  • 매핑을 삭제해도 이미 복제된 티켓과 이벤트는 남습니다.
  • 같은 원격 분류를 두 개의 매핑에 연결할 수 없습니다. 두 수집기가 같은 티켓을 쓰게 되기 때문입니다.
  • 앱을 설치하면 티켓 테이블과 메모 테이블에 조회용 인덱스가 자동으로 생성됩니다 (위 "자동 생성되는 인덱스").