Anomaly detection
출처: 문서
본문
이상 탐지
OpenSearch에서 _이상_은 시계열 데이터의 비정상적인 동작 변화를 의미합니다. 이상은 데이터에 대한 귀중한 통찰력을 제공할 수 있습니다. 예를 들어, IT 인프라 데이터의 경우 메모리 사용량 메트릭의 이상은 시스템 장애의 초기 징후를 식별하는 데 도움이 될 수 있습니다.
시각화 및 대시보드와 같은 기존 기술로는 이상을 발견하기 어려울 수 있습니다. 정적 임계값을 기반으로 알림을 구성하는 것은 가능하지만, 이 접근 방식은 사전 도메인 지식이 필요하며 유기적 성장이나 계절적 추세가 있는 데이터에는 적응하지 못할 수 있습니다.
이상 탐지는 Random Cut Forest(RCF) 알고리즘을 사용하여 OpenSearch 데이터의 이상을 거의 실시간으로 자동으로 감지합니다. RCF는 비지도 머신러닝 알고리즘으로, 들어오는 데이터 스트림의 스케치를 모델링하여 각 데이터 포인트에 대한 _이상 등급_과 신뢰도 점수 값을 계산합니다. 이 값들은 이상을 정상적인 변동과 구분하는 데 사용됩니다. RCF 작동 방식에 대한 자세한 내용은 Robust Random Cut Forest Based Anomaly Detection on Streams를 참조하세요.
이상 탐지 플러그인을 Alerting 플러그인과 함께 사용하면 이상이 감지되는 즉시 알림을 받을 수 있습니다. {: .note}
OpenSearch Dashboards에서 이상 탐지 시작하기
시작하려면 OpenSearch Dashboards > OpenSearch Plugins > Anomaly Detection으로 이동하세요.
1단계: 탐지기 정의
_탐지기_는 개별 이상 탐지 작업입니다. 여러 탐지기를 정의할 수 있으며, 모든 탐지기가 동시에 실행되어 각각 다른 소스의 데이터를 분석할 수 있습니다. 다음 단계에 따라 탐지기를 정의할 수 있습니다.
-
Anomaly detection 페이지에서 Create detector 버튼을 선택합니다.
-
Define detector 페이지에서 탐지기 세부 정보를 추가합니다. 이름과 간단한 설명을 입력합니다. 이름은 고유해야 하며 탐지기의 목적을 식별하는 데 도움이 될 만큼 설명적이어야 합니다.
-
Select data 창에서 Index 드롭다운 메뉴에서 하나 이상의 소스를 선택하여 데이터 소스를 지정합니다. 인덱스, 인덱스 패턴 또는 별칭을 선택할 수 있습니다.
-
탐지기는
cluster-name:index-name패턴을 사용하여 액세스할 수 있는 원격 인덱스를 사용할 수 있습니다. 자세한 내용은 Cross-cluster search를 참조하세요. 클러스터와 인덱스를 직접 선택할 수도 있습니다. Security 플러그인이 활성화된 경우 Anomaly detection security 문서의 Selecting remote indexes with fine-grained access control을 참조하세요. -
OpenSearch Dashboards에서 교차 클러스터 탐지기를 생성하려면 다음 권한이 있어야 합니다:
indices:data/read/field_caps,indices:admin/resolve/index,cluster:monitor/remote/info.
-
-
(선택 사항) Add data filter를 선택한 다음 Field, Operator, Value 조건을 지정하여 데이터 소스를 필터링합니다. 또는 Use query DSL을 선택하고 JSON 형식의 Boolean query로 필터를 입력합니다. 쿼리 DSL(Query Domain-Specific Language)에는 Boolean 쿼리만 지원됩니다.
예: 쿼리 DSL을 사용한 데이터 필터링
다음 예제 쿼리는 urlPath.keyword 필드가 지정된 값 중 하나와 일치하는 문서를 검색합니다:
{
"bool": {
"should": [
{
"term": {
"urlPath.keyword": "/domain/{id}/short"
}
},
{
"term": {
"urlPath.keyword": "/sub_dir/{id}/short"
}
},
{
"term": {
"urlPath.keyword": "/abcd/123/{id}/xyz"
}
}
]
}
}
{% include copy-curl.html %}
-
Timestamp 창에서 Timestamp field 드롭다운 목록에서 필드를 선택합니다.
-
(선택 사항) 이상 탐지 결과를 사용자 지정 인덱스에 저장하려면 Enable custom results index를 선택하고 인덱스 이름(예:
abc)을 제공합니다. 플러그인은opensearch-ad-plugin-result-접두사 뒤에 선택한 이름이 붙은 별칭(예:opensearch-ad-plugin-result-abc)을 생성합니다. 이 별칭은 결과가 저장되는 날짜와 시퀀스 번호가 포함된 이름(예:opensearch-ad-plugin-result-abc-history-2024.06.12-000002)의 실제 인덱스를 가리킵니다.
네임스페이스를 구분하기 위해 -를 사용하여 사용자 지정 결과 인덱스 권한을 관리할 수 있습니다. 예를 들어, opensearch-ad-plugin-result-financial-us-group1을 결과 인덱스로 사용하는 경우 opensearch-ad-plugin-result-financial-us-* 패턴을 기반으로 권한 역할을 생성하여 us 그룹의 financial 부서를 세부 수준으로 나타낼 수 있습니다.
{: .note }
권한
Security 플러그인(세분화된 액세스 제어)이 활성화되면 기본 결과 인덱스는 시스템 인덱스가 되어 표준 Index 또는 Search API를 통해 더 이상 액세스할 수 없습니다. 해당 콘텐츠에 액세스하려면 Anomaly Detection RESTful API 또는 대시보드를 사용해야 합니다. 결과적으로 Security 플러그인이 활성화된 경우 기본 결과 인덱스를 사용하여 사용자 지정 대시보드를 구축할 수 없습니다. 그러나 사용자 지정 대시보드를 구축하기 위해 사용자 지정 결과 인덱스를 생성할 수 있습니다.
지정한 사용자 지정 인덱스가 존재하지 않는 경우, 탐지기를 생성하고 실시간 또는 기록 분석을 시작할 때 Anomaly Detection 플러그인이 이를 생성합니다.
사용자 지정 인덱스가 이미 존재하는 경우, 플러그인은 인덱스 매핑이 이상 결과에 필요한 구조와 일치하는지 확인합니다. 이 경우 사용자 지정 인덱스가 anomaly-results.json 파일에 정의된 유효한 매핑을 가지고 있는지 확인하세요.
사용자 지정 결과 인덱스 옵션을 사용하려면 다음 권한이 있어야 합니다:
indices:admin/create-- 사용자 지정 인덱스를 생성하고 롤오버하려면create권한이 필요합니다.indices:admin/aliases-- 사용자 지정 인덱스에 대한 별칭을 생성하고 관리하려면aliases권한이 필요합니다.indices:data/write/index-- 단일 엔터티 탐지기에 대한 결과를 사용자 지정 인덱스에 쓰려면write권한이 필요합니다.indices:data/read/search-- Anomaly Detection 인터페이스에 결과를 표시하기 위해 사용자 지정 결과 인덱스를 검색하려면search권한이 필요합니다.indices:data/write/delete-- 탐지기는 많은 이상 결과를 생성할 수 있습니다. 오래된 데이터를 삭제하고 디스크 공간을 절약하려면delete권한이 필요합니다.indices:data/write/bulk*-- 플러그인이 Bulk API를 사용하여 결과를 사용자 지정 인덱스에 쓰기 때문에bulk*권한이 필요합니다.
중첩 필드 평탄화
중첩 필드가 있는 사용자 지정 결과 인덱스 매핑은 집계 및 시각화에 어려움을 줍니다. Enable flattened custom result index 옵션은 사용자 지정 결과 인덱스의 중첩 필드를 평탄화합니다. 이 옵션을 선택하면 플러그인이 사용자 지정 결과 인덱스 이름과 탐지기 이름을 접두사로 하는 별도의 인덱스를 생성합니다. 예를 들어, 탐지기 Test가 사용자 지정 결과 인덱스 abc를 사용하는 경우, opensearch-ad-plugin-result-abc-flattened-test라는 별칭을 가진 별도의 인덱스가 중첩 필드가 평탄화된 이상 탐지 결과를 저장합니다.
별도의 인덱스를 생성하는 것 외에도, 플러그인은 스크립트 프로세서가 있는 수집 파이프라인을 설정합니다. 이 파이프라인은 별도의 인덱스에 바인딩되며 Painless 스크립트를 사용하여 사용자 지정 결과 인덱스의 모든 중첩 필드를 평탄화합니다. 자세한 내용은 Painless scripting language를 참조하세요.
실행 중인 탐지기에서 이 옵션을 비활성화하면 평탄화 수집 파이프라인이 제거되며, 결과 인덱스의 기본값도 더 이상 아니게 됩니다. 평탄화된 사용자 지정 결과 옵션을 사용할 때는 다음을 고려하세요:
- Anomaly Detection 플러그인은 사용자 지정 결과 인덱스와 탐지기 이름을 기반으로 인덱스 이름을 구성하며, 탐지기 이름을 편집할 수 있으므로 충돌이 발생할 수 있습니다. 충돌이 발생하면 플러그인이 인덱스 이름을 재사용합니다.
- 사용자 지정 결과 인덱스를 관리할 때는 다음을 고려하세요:
- Anomaly Detection 대시보드는 모든 사용자 지정 결과 인덱스에서 모든 탐지기 결과를 쿼리합니다. 사용자 지정 결과 인덱스가 너무 많으면 플러그인 성능에 영향을 줄 수 있습니다.
- Index State Management를 사용하여 오래된 결과 인덱스를 롤오버할 수 있습니다. 오래된 결과 인덱스를 수동으로 삭제하거나 보관할 수도 있습니다. 여러 탐지기에 대해 사용자 지정 결과 인덱스를 재사용하는 것이 좋습니다.
플러그인은 사용자 지정 결과 인덱스가 다음 표의 조건 중 하나를 충족할 때 별칭을 새 인덱스로 롤오버합니다.
| 매개변수 | 설명 | 유형 | 단위 | 예시 | 필수 여부 |
|---|---|---|---|---|---|
result_index_min_size |
인덱스 롤오버에 필요한 최소 총 기본 샤드 크기(복제본 제외). 20GiB씩 5개의 기본 샤드와 5개의 복제본 샤드가 있는 인덱스에서 100GiB로 설정하면 롤오버가 실행됩니다. | integer |
MB |
51200 |
아니요 |
result_index_min_age |
롤오버에 필요한 최소 인덱스 기간(생성 시간부터 현재 시간까지 계산). | integer |
day |
7 |
아니요 |
result_index_ttl |
롤오버된 인덱스를 삭제하는 데 필요한 최소 기간. | integer |
day |
60 |
아니요 |
탐지기 설정을 정의한 후 Next를 선택하여 모델을 구성합니다.
Step 2: 모델 구성
탐지기에 특징을 추가하세요. 특징(feature) 은 필드 또는 Painless 스크립트의 집계입니다. 탐지기는 하나 이상의 특징에서 이상치를 발견할 수 있습니다.
각 특징에 대해 집계 방법을 선택해야 합니다: average(), count(), sum(), min(), 또는 max(). 집계 방법은 무엇을 이상으로 간주할지 결정합니다. 예를 들어 min()을 선택하면 탐지기는 특징의 최솟값을 기준으로 이상을 찾는 데 집중합니다. average()를 선택하면 특징의 평균값을 기준으로 이상을 찾습니다.
집계 방법으로 사용자 정의 JSON 집계 쿼리를 사용할 수도 있습니다. JSON 집계 쿼리 생성에 대한 자세한 내용은 Query DSL을 참조하세요.
각 구성된 특징에 대해 이상 기준을 선택할 수도 있습니다. 기본적으로 모델은 실제 값이 예상 값보다 비정상적으로 높거나 낮을 때 이상을 감지합니다. 하지만 특징 설정을 사용자 정의하여 실제 값이 예상 값보다 높을 때(데이터 급증) 또는 낮을 때(데이터 하락)만 이상으로 등록되도록 할 수 있습니다. 예를 들어 cpu_utilization 필드에 대한 탐지기를 생성할 때 알림 피로를 줄이기 위해 값이 급증할 때만 이상을 등록하도록 선택할 수 있습니다.
임계값 기반 규칙으로 이상 억제
특징 선택 창에서 예상 값과 실제 값 사이의 허용 가능한 차이를 절대값 또는 상대 백분율로 정의하는 규칙을 설정하여 이상을 억제할 수 있습니다. 이는 미세한 변동으로 인한 가짜 이상을 줄여 중요한 편차에 집중할 수 있게 해줍니다.
예상 값에서 30% 미만으로 벗어난 이상을 억제하려면 특징 선택 창에서 다음 규칙을 설정할 수 있습니다.
- 실제 값이 예상 값보다 30% 이상 높지 않은 경우 이상을 무시합니다.
- 실제 값이 예상 값보다 30% 이상 낮지 않은 경우 이상을 무시합니다.
다음 이미지는 상대 편차 백분율 설정을 지정할 수 있는 LogVolume이라는 특징의 창을 보여줍니다.
{: width="800" height="800" }
로그 볼륨이 이상으로 간주되기 전에 예상 값과 최소 10,000 이상 차이가 나야 한다고 예상된다면 다음 절대 임계값을 설정할 수 있습니다.
- 실제 값이 예상 값보다 10,000 이상 높지 않은 경우 이상을 무시합니다.
- 실제 값이 예상 값보다 10,000 이상 낮지 않은 경우 이상을 무시합니다.
다음 이미지는 절대 임계값 설정을 지정할 수 있는 LogVolume이라는 특징의 창을 보여줍니다.
{: width="800" height="800" }
사용자 정의 억제 규칙이 설정되지 않은 경우 시스템은 기본적으로 활성화된 각 특징에 대해 예상 값에서 20% 미만으로 벗어난 이상을 무시하는 필터를 사용합니다.
다중 특징 모델은 모든 특징에서 이상을 상호 연관시킵니다. 차원의 저주로 인해 다중 특징 모델은 단일 특징 모델에 비해 작은 이상을 식별할 가능성이 낮아집니다. 특징을 더 추가하면 모델의 정밀도와 재현율에 부정적인 영향을 줄 수 있습니다. 데이터의 노이즈 비율이 높을수록 이러한 부정적인 영향이 더 커질 수 있습니다. 이상에 대한 최적의 특징 세트 한계를 선택하려면 다양한 한계를 테스트하는 반복적인 과정을 권장합니다. 기본적으로 탐지기의 최대 특징 수는 5입니다. 이 한계를 조정하려면 plugins.anomaly_detection.max_anomaly_features 설정을 사용하세요.
{: .note}
집계 방법 기반 모델 구성
집계 방법을 기반으로 이상 탐지 모델을 구성하려면 다음 단계를 따르세요.
- 탐지기 페이지에서 목록에서 원하는 탐지기를 선택하세요.
- 탐지기 세부 정보 페이지에서 작업(Actions) 버튼을 선택하여 드롭다운 메뉴를 활성화한 다음 모델 구성 편집(Edit model configuration) 을 선택하세요.
- 모델 구성 편집 페이지에서 다른 특징 추가(Add another feature) 버튼을 선택하세요.
- 특징 이름(Feature name) 필드에 이름을 입력하고 특징 활성화(Enable feature) 확인란을 선택하세요.
- 다음을 기준으로 이상 찾기(Find anomalies based on) 아래 드롭다운 메뉴에서 필드 값(Field value) 을 선택하세요.
- 집계 방법(Aggregation method) 아래 드롭다운 메뉴에서 원하는 집계를 선택하세요.
- 필드(Field) 아래 드롭다운 메뉴에 나열된 옵션에서 원하는 필드를 선택하세요.
- 변경 사항 저장(Save changes) 버튼을 선택하세요.
JSON 집계 쿼리 기반 모델 구성
JSON 집계 쿼리를 기반으로 이상 탐지 모델을 구성하려면 다음 단계를 따르세요.
- 모델 구성 편집 페이지에서 다른 특징 추가 버튼을 선택하세요.
- 특징 이름 필드에 이름을 입력하고 특징 활성화 확인란을 선택하세요.
- 다음을 기준으로 이상 찾기 아래 드롭다운 메뉴에서 사용자 정의 표현식(Custom expression) 을 선택하세요. JSON 편집기 창이 열립니다.
- 편집기에 JSON 집계 쿼리를 입력하세요.
- 변경 사항 저장 버튼을 선택하세요.
허용되는 JSON 쿼리 구문은 OpenSearch Query DSL을 참조하세요. {: .note}
높은 카디널리티를 위한 범주형 필드 설정
키워드 또는 IP 필드 유형을 기반으로 이상을 범주화할 수 있습니다. 범주형 필드(Categorical fields) 옵션을 활성화하여 IP 주소, 제품 ID 또는 국가 코드와 같은 차원을 사용하여 소스 시계열을 범주화하거나 "분할"할 수 있습니다. 이를 통해 범주 필드의 각 엔터티 내에서 이상을 세부적으로 확인하여 문제를 격리하고 디버깅하는 데 도움이 됩니다.
범주 필드를 설정하려면 범주형 필드 활성화(Enable categorical fields) 를 선택하고 필드를 선택하세요. 탐지기를 생성한 후에는 범주 필드를 변경할 수 없습니다.
범주 필드에서는 특정 수의 고유 엔터티만 지원됩니다. 다음 방정식을 사용하여 클러스터에서 지원되는 권장 총 엔터티 수를 계산하세요.
(data nodes * heap size * anomaly detection maximum memory percentage) / (entity model size of a detector)
탐지기의 엔터티 모델 크기를 얻으려면 Profile Detector API를 사용하세요. plugins.anomaly_detection.model_max_size_percent 설정을 사용하여 최대 메모리 백분율을 조정할 수 있습니다.
각각 8GB JVM 힙 크기와 기본 10% 메모리 할당을 가진 3개의 데이터 노드가 있는 클러스터를 고려해 보세요. 엔터티 모델 크기가 1MB인 경우 다음 공식은 예상 고유 엔터티 수를 계산합니다.
(8096 MB * 0.1 / 1 MB ) * 3 = 2429
실제 총 고유 엔터티 수가 계산한 숫자(이 경우 2,429)보다 높으면 이상 탐지기는 추가 엔터티를 모델링하려고 시도합니다. 탐지기는 더 자주 발생하고 더 최근인 엔터티를 우선시합니다.
이 공식은 시작점 역할을 합니다. 대표적인 워크로드로 테스트해야 합니다. 자세한 내용은 OpenSearch 블로그 게시물 Improving Anomaly Detection: One million entities in one minute을 참조하세요. {: .note }
운영 설정
OpenSearch Dashboards의 매개변수 제안(Suggest parameters) 버튼은 최근 기록을 검토하여 합리적인 기본값을 권장합니다. 다음 매개변수를 조정하여 이러한 기본값을 재정의할 수 있습니다.
탐지기 간격(Detector interval)
집계 버킷 크기(예: 10분)를 지정합니다. 실제 데이터 특성에 따라 탐지기 간격을 설정해야 합니다.
- 긴 간격: 노이즈를 완화하고 계산 비용을 줄이지만 탐지가 지연됩니다.
- 짧은 간격: 변경 사항을 더 빨리 감지하지만 리소스 사용량이 증가하고 노이즈가 발생할 수 있습니다.
간격은 데이터를 거의 놓치지 않을 만큼 충분히 커야 합니다. 모델은 싱글링(연속적이고 인접한 버킷)을 사용하며, 누락된 버킷은 데이터 품질과 싱글 형성을 저하시킵니다.
빈도(Frequency, 선택 사항)
작업이 쿼리, 점수 계산 및 결과를 쓰는 빈도를 지정합니다. 값이 짧을수록 더 실시간 업데이트를 제공하지만 비용이 높아지고, 값이 길수록 부하는 줄어들지만 업데이트 속도가 느려집니다. 빈도는 간격의 배수여야 하며 기본값은 간격 값입니다.
확실하지 않은 경우 이 필드를 비워 두세요. 작업은 기본적으로 간격 값을 사용합니다.
간격보다 큰 빈도를 사용하는 일반적인 시나리오는 다음과 같습니다.
-
효율성을 위한 짧은 버킷 일괄 처리: 초고속 알림이 필요하지 않은 고빈도 또는 대용량 로그 스트림에서 유용합니다. 무거운 조인이나 높은 카디널리티 특징이 있는 워크로드, 또는 검토나 감사를 위해 변경 불가능한 일일 이상 원장이 필요한 규정 준수 기반 야간 롤업의 경우 1~2분마다 탐지기를 실행하는 것은 낭비일 수 있습니다. 대신 탐지기를 덜 자주 실행하여 한 번에 많은 짧은 간격을 일괄 처리하도록 예약하세요(예: 6시간, 한 번에 약 360개의 1분 버킷 처리). 알림 지연 시간 및 비용 목표에 맞는 빈도를 선택하세요(예: 30분, 1시간, 3시간, 6시간 또는 12시간).
- 장점: 특히 많은 작업을 실행하거나 사용량이 많은 클러스터에서 작업할 때 예약 오버헤드가 줄어들고 리소스 활용도가 향상됩니다.
- 단점: 탐지 지연 증가—1분 버킷의 이상은 일괄 실행이 실행될 때만 보고될 수 있습니다.
- 적합한 경우: 비용 및 부하 제어, 규정 준수 및 감사.
-
드문 또는 일괄 로그 수집에 맞추기: 로그가 불규칙적으로 또는 일괄로 도착하는 경우(예: S3에서 하루에 한 번, 또는 버스트로 업로드하는 IoT 장치). 매분 탐지기를 실행하면 대부분 빈 결과와 낭비되는 주기가 발생합니다. 데이터 도착 속도에 가깝게 빈도를 구성하세요(예: 1일). 그러면 각 검색이 새 데이터를 찾을 가능성이 높아집니다. 타임스탬프가 불규칙하고 볼륨이 낮은 경우(드문 로그에서 흔함), 중간 결과는 정확도에 해로울 수 있습니다. RCF 모델은 상태 저장이며 타임스탬프의 엄격한 오름차순을 가정하기 때문입니다. 덜 빈번한 일정을 사용하면 빈 인덱스를 반복적으로 확인하는 대신 작업이 완전한 데이터를 기다리도록 할 수 있습니다.
- 장점: 불필요한 쿼리 및 CPU 오버헤드 감소; 효율성 향상 및 더 정확한 결과—로그 배치가 도착하면 이상이 평가되며, 잘못된 중간 이상 위험이 최소화됩니다.
- 단점: 이상 평가 빈도 감소.
- 적합한 경우: 일괄 작업 및 드문 로그 수집 패턴.
윈도우 지연(Window delay, 선택 사항)
데이터 수집을 위한 추가 처리 시간을 추가하려면 윈도우 지연 값을 지정하세요. 이는 데이터가 실시간이 아닌 특정 지연을 가지고 OpenSearch에 수집됨을 탐지기에 알립니다.
작동 방식:
수집 지연을 고려하여 탐지기 간격을 이동하도록 윈도우 지연을 설정하세요. 예를 들어:
- 탐지기 간격: 10분
- 데이터 수집 지연: 1분
- 탐지기 실행 시간: 오후 2:00
윈도우 지연이 없으면 탐지기는 오후 1:502:00의 데이터를 가져오려고 시도하지만 9분의 데이터만 가져오고 오후 1:592:00의 데이터는 누락됩니다. 윈도우 지연을 1분으로 설정하면 간격 윈도우가 오후 1:49~1:59로 이동하여 탐지기가 10분 전체 데이터를 캡처할 수 있습니다.
모범 사례:
- 윈도우 지연을 예상 수집 지연의 상한선으로 설정하여 데이터 누락을 방지하세요.
- 데이터 정확성과 적시 탐지 사이의 균형을 유지하세요. 너무 긴 지연은 실시간 이상 탐지를 방해합니다.
기록(History, 선택 사항)
초기(콜드 스타트) 모델을 훈련하는 데 사용되는 과거 데이터 포인트 수를 설정합니다. 최대 10,000개의 데이터 포인트입니다. 더 많은 기록은 해당 한도까지 초기 모델 정확도를 향상시킵니다.
빈도와 윈도우 지연 중 선택
빈도와 윈도우 지연 모두 수집 지연을 해결하지만 데이터 패턴에 따라 더 잘 작동합니다.
- 윈도우 지연: 스트리밍 데이터(지속적인 물방울)에 가장 적합
- 빈도: 일괄 데이터(주기적 드롭)에 가장 적합
예제 시나리오:
-
예제 A -- 데이터가 매분 도착하지만 항상 1일 늦음 → 윈도우 지연 사용:
- 패턴:
Day-1 00:01, 00:02, ..., 23:59에 대한 데이터가 꾸준히 도착하지만Day-2의 같은 분 표시에만 도착합니다. - 구성:
interval = 1 min,window_delay = 1 day,frequency = 1 min. - 효과:
Day-2 00:01실행이Day-1 00:01데이터를 처리합니다.Day-2 00:02실행이Day-1 00:02데이터를 처리합니다.- ...
Day-2 23:59실행이Day-1 23:59데이터를 처리합니다.
- 적합한 이유: 각 분의 데이터가 예측 가능한 24시간 지연으로 도착합니다. 1일 윈도우 지연을 설정하면 각 레코드가 의도된 타임스탬프에서 처리되면서 작업 부하를 증분 방식으로 유지할 수 있습니다.
- 패턴:
-
예제 B --
Day-1의 모든 데이터가Day-2 00:00에 도착해요 → 일일 빈도 사용:- 패턴:
Day-1동안에는 데이터가 나타나지 않아요. 대신Day-2 00:00에 1,440분의 데이터를 모두 포함한 단일 배치가 도착해요. - 구성:
interval = 1 min,frequency = 1 day(하루 전체를 한 번에 처리). (팁: 인덱싱 또는 새로고침 지연을 고려하여 작은window_delay(예: 1~5분)를 추가하세요.) - 효과:
- 최상의 경우: 탐지기가
00:00경에 시작되면Day-2 00:00실행이Day-1의 모든 데이터가 도착한 직후에 처리해요. - 최악의 경우: 탐지기가
23:59경에 시작되면 일일 실행이Day-2 23:59까지 발생하지 않아 드롭 후 약24시간이 지연돼요. - 일반 규칙: 자정 데이터 드롭의 경우 추가 대기 시간은 탐지기의 일일 시작 시간과 같아요.
- 최상의 경우: 탐지기가
- 작동 원리: 하루 전체 데이터가 한 번에 제공되므로 단일 일일 실행이 분 단위로 데이터를 처리하는 것보다 훨씬 효율적이에요.
- 패턴:
다음 다이어그램은 윈도우 지연과 빈도를 사용하여 1일 수집 지연을 처리할 때의 타이밍 차이를 보여줘요. 타임라인은 Day-1 수집(상단), window_delay = 1 day를 사용한 Day-2 처리(중간, 연속 대역), frequency = 1 day일 때의 단일 일일 실행(하단, 세로 막대)을 나타내요. 탐지기를 시작하는 시점에 따라 일일 빈도는 Day-1이 끝난 직후(최상의 경우, 최소 추가 지연) 또는 훨씬 나중(최악의 경우, 최대 ~+1일)에 실행될 수 있어요. 작업은 처음 시작한 시간에 매일 실행돼요.
{: width="1200" height="350" }
샤인글 크기 설정
고급 설정 창에서 탐지 윈도우에 포함할 데이터 스트림 집계 간격 수를 설정할 수 있어요. 실제 데이터를 기반으로 이 값을 선택하여 사용 사례에 최적의 설정을 찾으세요. 샤인글 크기를 설정하려면 고급 설정 창에서 표시를 선택하세요. 원하는 크기를 간격 필드에 입력하세요.
이상 탐지기는 샤인글 크기가 1에서 128 사이여야 해요. 기본값은 8이에요. 최소 두 개의 특징이 있는 경우에만 1을 사용하세요. 8보다 작은 값은 재현율을 높일 수 있지만 오탐도 증가할 수 있어요. 8보다 큰 값은 신호의 노이즈를 무시하는 데 유용할 수 있어요.
대체 옵션 설정
고급 설정 창에서 대체 옵션을 설정할 수 있어요. 이를 통해 스트림에서 누락된 데이터를 관리할 수 있어요. 옵션은 다음과 같아요:
- 누락 데이터 무시(기본값): 시스템이 누락된 데이터 포인트를 고려하지 않고 계속 진행하여 기존 데이터 흐름을 유지해요.
- 사용자 지정 값으로 채우기: 각 특징에 대해 사용자 지정 값을 지정하여 누락된 데이터 포인트를 대체하며, 데이터에 맞게 대상 대체를 할 수 있어요.
- 0으로 채우기: 누락된 값을 0으로 대체해요. 이는 데이터 부재가 이벤트 수가 0으로 떨어지는 것과 같은 중요한 이벤트를 나타낼 때 이상적이에요.
- 이전 값 사용: 마지막으로 관찰된 값으로 간격을 채워 시계열 데이터의 연속성을 유지해요. 이 방법은 누락된 데이터를 비이상적인 것으로 처리하여 이전 추세를 이어가요. {: note}
이러한 옵션을 사용하면 이상 탐지에서 재현율을 향상시킬 수 있어요. 예를 들어 부분적 및 완전한 감소를 포함하여 이벤트 수의 감소를 모니터링하는 경우 누락된 값을 0으로 채우면 중요한 데이터 부재를 감지하는 데 도움이 되어 탐지 재현율이 향상돼요.
누락된 데이터를 광범위하게 대체할 때는 주의해야 해요. 과도한 간격은 모델 정확도를 손상시킬 수 있기 때문이에요. 입력 품질이 중요해요. 데이터 품질이 좋지 않으면 모델 성능이 저하돼요. 대체가 발생하면 신뢰도 점수도 감소해요. 특징 값이 대체되었는지 여부는 이상 결과 인덱스의 feature_imputed 필드를 사용하여 확인할 수 있어요. 자세한 내용은 이상 결과 매핑을 참조하세요.
샘플 이상 징후 미리보기
샘플 특징 입력을 기반으로 이상 징후를 미리 보고 필요에 따라 특징 설정을 조정할 수 있어요. Anomaly Detection 플러그인은 소수의 데이터 샘플(예: 30분마다 1개의 데이터 포인트)을 선택하고 보간법을 사용하여 나머지 데이터 포인트를 추정하여 실제 특징 데이터에 근사해요. 샘플 데이터 세트가 탐지기에 로드된 다음 샘플 데이터 세트를 사용하여 이상 징후 미리보기를 생성해요.
- 샘플 이상 징후 미리보기를 선택하세요.
- 샘플 이상 징후 결과가 표시되지 않으면 탐지기 간격을 확인하여 미리보기 날짜 범위 동안 엔터티에 400개 이상의 데이터 포인트가 설정되어 있는지 확인하세요.
- 다음 버튼을 선택하세요.
3단계: 탐지기 작업 설정하기
데이터에서 실시간에 가깝게 이상 징후를 찾기 위해 탐지기를 시작하려면 **실시간 탐지기를 자동으로 시작(권장)**을 선택하세요.
또는 장기간(몇 주 또는 몇 개월)의 과거 데이터에서 패턴을 찾고 과거 분석을 수행하려면 과거 분석 탐지 실행 상자를 선택하고 최소 128개 탐지 간격의 날짜 범위를 선택하세요.
과거 데이터를 분석하면 Anomaly Detection 플러그인에 익숙해지는 데 도움이 돼요. 예를 들어, 탐지기를 미세 조정하기 위해 과거 데이터를 기준으로 탐지기의 성능을 평가할 수 있어요.
실시간 탐지기를 사용하기 전에 다양한 feature 세트를 사용하고 정밀도를 확인하여 과거 분석을 실험해 볼 수 있어요.
4단계: 탐지기 설정 검토
탐지기 설정과 모델 구성이 유효한지 확인한 후 탐지기 생성을 선택하세요.
유효성 검사 오류가 발생하면 설정을 수정하여 오류를 바로잡고 탐지기 페이지로 돌아오세요. {: .note }
5단계: 결과 관찰
실시간 결과 또는 과거 분석 탭을 선택하세요. 실시간 결과의 경우 이상 결과를 표시하는 데 시간이 걸려요. 예를 들어, 탐지기 간격이 10분이면 탐지기가 충분한 데이터를 기다려 이상 징후를 생성할 수 있을 때까지 시작하는 데 1시간이 걸릴 수 있어요.
간격이 짧을수록 모델이 shingle 프로세스를 더 빨리 통과하고 이상 결과를 더 빨리 생성해요. profile detector 작업을 사용하여 충분한 데이터 포인트가 있는지 확인할 수 있어요.
탐지기가 '초기화' 상태로 1일 이상 대기 중인 경우 기존 데이터를 집계하고 탐지기 간격을 사용하여 누락된 데이터 포인트가 있는지 확인하세요. 누락된 데이터 포인트가 많으면 탐지기 간격을 늘리는 것을 고려하세요.
이상 선 차트를 클릭하고 드래그하여 확대하고 이상에 대한 자세한 보기를 확인하세요. {: .note }
다음 시각화를 사용하여 이상을 분석할 수 있어요:
- 실시간 이상(실시간 결과의 경우)은 마지막 60개 간격의 실시간 이상 결과를 표시해요. 예를 들어, 간격이
10이면 마지막 600분의 결과를 보여줘요. 차트는 30초마다 새로고침돼요. - Anomaly overview(실시간 결과의 경우) 또는 Anomaly history(과거 분석 탭의 과거 분석)는 이상 등급을 해당 신뢰도와 함께 표시해요. 창에는 다음이 포함돼요:
- 주어진 데이터-시간 범위를 기반으로 한 이상 발생 횟수.
- 평균 이상 등급: 0과 1 사이의 숫자로 데이터 포인트가 얼마나 이상한지를 나타내요.
0의 이상 등급은 '이상이 아님'을 나타내고, 0이 아닌 값은 이상의 상대적 심각도를 나타내요. - 신뢰도: 보고된 이상 등급이 예상 이상 등급과 일치할 확률의 추정치예요. 모델이 더 많은 데이터를 관찰하고 데이터 동작과 추세를 학습함에 따라 신뢰도가 증가해요. 신뢰도는 모델 정확도와는 달라요.
- 마지막 이상 발생: 마지막 이상이 발생한 시간이에요.
다음 섹션은 Anomaly overview 및 Anomaly history 아래에서 찾을 수 있어요:
- Feature breakdown은 집계 방법을 기반으로 feature를 표시해요. 탐지기의 날짜-시간 범위를 변경할 수 있어요. feature 선 차트에서 한 점을 선택하면 Feature output(인덱스에서 필드가 나타나는 횟수)과 Expected value(feature 출력에 대한 예측 값)가 표시돼요. 이상이 없는 경우 출력 값과 예상 값은 동일해요.
- Anomaly occurrences는 감지된 각 이상에 대해
Start time,End time,Data confidence,Anomaly grade를 표시해요. Discover에서 발생과 관련된 로그를 보려면 Actions 열의 View in Discover 아이콘을 선택하세요. 로그에는 시작 및 종료 시간 전후 10분 버퍼가 포함돼요.
이상 선 차트에서 한 점을 선택하면 Feature Contribution(이상에 기여하는 feature의 백분율)이 표시돼요.
카테고리 필드를 설정하면 추가 Heat map 차트가 표시돼요. 히트 맵은 이상 엔터티에 대한 결과를 상호 연관시켜요. 이 차트는 이상 엔터티를 선택할 때까지 비어 있어요. 또한 이상 기간(anomaly_grade > 0)에 대한 이상 및 feature 선 차트를 볼 수 있어요.
여러 카테고리 필드를 설정한 경우 필드의 하위 집합을 선택하여 필터링하고 정렬할 수 있어요. 필드 하위 집합을 선택하면 다른 필드와 공통 값을 공유하는 한 필드의 상위 값을 볼 수 있어요.
예를 들어, 카테고리 필드가 ip와 endpoint인 탐지기가 있는 경우 View by 드롭다운 메뉴에서 endpoint를 선택할 수 있어요. 그런 다음 특정 셀을 선택하여 차트에 ip의 상위 20개 값을 오버레이해요. Anomaly Detection 플러그인은 기본적으로 상위 ip를 선택해요. 동시에 최대 5개의 개별 시계열 값을 볼 수 있어요.
6단계: 알림 설정
실시간 결과에서 알림 설정을 선택하고 이상이 감지될 때 알림을 받도록 모니터를 구성하세요. 모니터를 생성하고 이상 탐지기를 기반으로 알림을 설정하는 방법에 대한 지침은 Configuring anomaly alerting을 참조하세요.
탐지기를 중지하거나 삭제하는 경우 연결된 모니터를 삭제해야 해요.
탐지기 구성 보기 및 업데이트
탐지기의 모든 구성 설정을 보려면 탐지기 구성 탭을 선택하세요.
- 탐지기 구성을 변경하거나 시간 간격을 미세 조정하여 오탐을 최소화하려면 탐지기 구성 섹션으로 이동하여 편집을 선택하세요. 탐지기 구성을 변경하려면 실시간 및 과거 분석을 중지해야 해요. 탐지기를 중지하고 계속할 것인지 확인하세요. {: .important}
- feature를 활성화 또는 비활성화하려면 Features 섹션에서 편집을 선택하고 필요에 따라 feature 설정을 조정하세요. 변경을 완료한 후 저장하고 탐지기 시작을 선택하세요.
탐지기 관리
탐지기를 시작, 중지 또는 삭제하려면 탐지기 페이지로 이동하세요.
- 탐지기 이름을 선택하세요.
- 작업을 선택한 다음 실시간 탐지기 시작, 실시간 탐지기 중지 또는 탐지기 삭제를 선택하세요.