소개
수십억 개의 시계열에 걸친 예측과 이상 감지는 컴퓨터를 집약적으로 사용하게 됩니다. 대부분의 기존 시스템은 예측 및 이상 감지를 일괄 작업(예: 위험 파이프라인, 트래픽 예측, 수요 계획 등)으로 실행합니다. 이렇게 하면 이벤트 측정기준 집합 전반에 걸친 갑작스러운 증가 또는 감소를 근거로 알림을 발송할지 여부를 결정하는 등의 온라인으로 수행 가능한 분석의 유형이 크게 제한됩니다.
Timeseries Insights API의 주요 목적은 다음과 같습니다.
- 쿼리 매개변수를 기반으로 원시 이벤트와 그 속성으로부터 동적으로 구성된 수십억 개의 시계열로 확장합니다.
- 실시간 예측 결과와 이상 감지 결과를 제공합니다. 즉, 몇 초 내에 모든 시계열 전체의 트렌드와 계절성을 감지하고 슬라이스가 예기치 않게 급증하거나 감소하는지 판단합니다.
API 기능
- 데이터 세트 관리
- Cloud Storage에 저장된 여러 데이터 소스로 구성된 데이터 세트의 색인을 생성하고 로드합니다. 스트리밍 방식으로 새 이벤트를 추가할 수 있습니다.
- 더 이상 필요하지 않은 데이터 세트를 로드 취소합니다.
- 데이터 세트의 처리 상태를 요청합니다.
- 데이터세트 쿼리
- 지정된 속성 값과 일치하는 시계열을 검색합니다. 시계열은 지정된 시간 범위를 한도로 예측됩니다. 또한 시계열에 이상치가 있는지도 평가됩니다.
- 속성 값 조합의 이상치를 자동으로 감지합니다.
- 데이터 세트 업데이트
- 최근에 발생한 새 이벤트를 수집하여 거의 실시간으로 색인에 통합합니다(몇 초 내지 몇 분 지연).
재해 복구
Timeseries Insights API는 Cloud Storage의 백업 역할을 하거나 원시 스트리밍 업데이트를 반환하지 않습니다. 클라이언트에서 별도로 데이터를 저장 및 백업해야 합니다.
리전이 중단되면 서비스가 최선의 복구를 수행합니다. 서비스 중단 시점으로부터 24시간 이내에 업데이트된 메타데이터(데이터 세트 및 운영 상태에 대한 정보)와 스트림 사용자 데이터는 복구되지 않을 수 있습니다.
복구 중에는 데이터 세트에 대한 쿼리 및 스트리밍 업데이트를 이용하지 못할 수 있습니다.
입력 데이터
시간이 지남에 따라 수치 및 범주 데이터가 수집되는 것이 일반적입니다. 예를 들어 다음 그림은 일정 기간 동안 1분 간격으로 데이터 센터에서 실행되는 단일 작업의 CPU 사용량, 메모리 사용량 및 상태를 보여줍니다. CPU 사용량 및 메모리 사용량은 숫자 값이고 상태는 범주 값입니다.
이벤트
Timeseries Insights API는 이벤트를 기본 데이터 항목으로 사용합니다. 각 이벤트에는 타임스탬프와 측정기준 모음이 있습니다. 즉 키-값 쌍으로 여기서 키는 측정기준 이름입니다. 이러한 간단한 표시를 통해 수조 규모의 데이터를 처리할 수 있습니다. 예를 들어 하나의 이벤트를 완전히 표현하기 위해 데이터 센터, 사용자, 작업 이름, 태스크 번호가 포함됩니다. 위의 그림은 측정기준의 하위 집합을 나타내는 단일 작업에 대해 기록된 일련의 이벤트를 보여줍니다.
{"name":"user","stringVal":"user_64194"},
{"name":"job","stringVal":"job_45835"},
{"name":"data_center","stringVal":"data_center_30389"},
{"name":"task_num","longVal":19},
{"name":"cpu","doubleVal":3840787.5207877564},
{"name":"ram","doubleVal":1067.01},
{"name":"state","stringVal":"idle"}
데이터 세트
데이터 세트는 이벤트의 모음입니다. 쿼리는 동일한 데이터 세트 내에서 수행됩니다. 각 프로젝트에는 여러 개의 데이터 세트가 포함될 수 있습니다.
데이터 세트는 배치 및 스트리밍 데이터로 구성됩니다. 배치 데이터 빌드는 여러 Cloud Storage URI에서 가져온 데이터 소스를 읽어옵니다. 배치 빌드가 완료된 후에는 스트리밍 데이터로 데이터 세트를 업데이트할 수 있습니다. 시스템은 과거 데이터의 배치 빌드를 사용하여 콜드 스타트 문제를 방지할 수 있습니다.
쿼리 또는 업데이트하기 앞서 데이터 세트를 빌드하거나 색인을 생성해야 합니다. 색인 생성은 데이터 세트가 생성될 때 시작되며 보통 데이터 양에 따라 완료하는 데 몇 분에서 몇 시간이 걸립니다. 좀 더 구체적으로, 데이터 소스는 초기 색인 생성 중에 한 번 검사됩니다. Cloud Storage URI의 콘텐츠가 초기 색인 생성이 완료된 후에 변경되어도 다시 검사하지 않습니다. 추가 데이터로 스트리밍 업데이트를 사용합니다. 스트리밍 업데이트는 거의 실시간으로 연속적으로 색인이 생성됩니다.
시계열 및 이상 감지
Timeseries Insights API에서 슬라이스는 특정 측정기준 값 조합이 포함된 이벤트 모음입니다. 시간이 지남에 따라 이러한 슬라이스에 속하는 이벤트 측정에 관심이 있습니다.
지정된 슬라이스에 대해 이상치를 감지하기 위한 시계열인 사용자 지정 시간 간격당 숫자 값으로 이벤트가 집계됩니다. 앞의 그림은 '사용자', '작업', 'data_center' 측정기준의 다양한 조합에서 얻어진 다양한 슬라이스를 보여줍니다.
원하는 시간 간격의 숫자 값이 과거 값과 유의하게 다른 경우 특정 슬라이스에서 이상치가 발생합니다. 위의 그림은 10년 동안 전 세계에서 측정된 온도를 기반으로 하는 시계열을 보여줍니다. 2015년의 마지막 달이 이상치인지 여부에 관심이 있다고 가정해 보겠습니다. 시스템에 대한 쿼리는 detectionTime
을(를) '2015/12/01'로, granularity
을(를) '1개월'로 관심 시간을 지정합니다. detectionTime
이전의 검색된 시계열은 이전 학습 기간에 이은 홀드아웃 기간으로 구분됩니다. 시스템은 학습 기간의 데이터를 사용하여 모델을 학습시키고, 홀드아웃 기간을 사용하여 모델이 다음 값을 안정적으로 예측할 수 있는지 검증합니다. 이 예시에서 홀드아웃 기간은 1년입니다. 이 그림은 실제 데이터와 상한값과 하한값이 있는 모델의 예측 값을 보여줍니다. 실제 값이 예측된 범위를 벗어나므로 2015년 12월의 온도는 이상치로 표시됩니다.