개요

소개

미리 보려면 가입하세요.

영업일 기준 1일 이내에 답변을 받지 못하는 경우 다시 가입해 주세요.

수십억 개의 시계열에 대한 예측 및 이상 감지는 계산 집약적입니다. 대부분의 기존 시스템은 예측 및 이상 감지를 일괄 작업으로 실행합니다(예: 위험 파이프라인, 트래픽 예측, 수요 계획, ...). 이렇게 하면 온라인에서 수행할 수 있는 분석 유형이 심각하게 제한됩니다. 예를 들어 이벤트 측정기준 집합에서 급격한 증가나 감소를 기반으로 알림을 보내야 합니다.

시계열 예측을 수행하고 Timeseries Insights API에서 이상 감지에 사용하는 주요 목표는 다음과 같습니다.

  • 수십억 개의 시계열로 확장(시계는 이벤트 속성에 대한 일련의 시계열로 정의됩니다(예: 이동통신사에서 수행한 트랜잭션 수).
  • 예측 및 이상 감지의 실시간 지연 시간을 제공합니다 (예: 몇 초 이내에 제공되는 모든 시계열의 추세와 계절성을 감지하고 슬라이스가 급증하거나 예기치 않게 감소하는지 판단합니다.).

API 기능

  • Google Cloud Storage에 저장된 여러 데이터 소스로 구성된 데이터세트 세트의 색인 생성 및 로드 스트리밍 방식으로 추가 이벤트를 추가할 수 있습니다.
  • 로드된 DataSet에 대해 시계열 쿼리를 실행하여 추세를 예측하고 이상을 감지합니다.
  • 더 이상 필요 없는 데이터 세트를 언로드합니다.
  • 데이터세트의 처리 상태를 묻습니다.

입력 데이터

시계열 데이터는 시간 경과에 따라 반복적으로 측정된 관찰 모음입니다. 예를 들어 특정 작업의 1분 평균 CPU 사용량은 간단한 시계열 데이터입니다. 입력 데이터의 최소 단위는 특정 시간에 대한 키 값 쌍으로 사용되는 데이터 포인트입니다. 여기서 키는 측정기준의 이름입니다. 이 예의 차원은 cpu, ram, state 등이 될 수 있습니다.

Timeseries

이벤트

Timeseries Insights API는 이벤트를 기본 데이터 항목으로 사용합니다. 100조의 규모로 데이터 포인트를 처리할 때는 여러 집계에 여러 측정기준을 사용할 수 있습니다. 예를 들어 데이터 센터, 사용자, 작업 이름, 태스크 번호가 단일 이벤트를 완전히 나타내기 위해 추가됩니다.

{"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"}

이벤트에는 다음이 포함됩니다.

  • 타임스탬프
  • 측정기준에는 다음과 같은 측정기준 하나 이상이 포함됩니다.
    • 이름 (데이터 세트 전체에서 고유)
    • 값 (문자열, 부울, int/long 또는 double) 이벤트의 크기는 이벤트와 관련된 속성입니다. 간단히 말해, 측정기준 이름 집합은 이벤트 유형에 해당합니다. 예를 들어 ["user", "job", "data_center", "task_num", "gcu"]는 작업 리소스 소비 이벤트에 사용되고 ["user", "gcu", "disk", "ram"]는 사용자 할당량 이벤트에 사용됩니다.
  • long 값화된 그룹 ID로, 관련 Event 레코드에 동일한 값으로 설정합니다. 일반적으로 각 Event 레코드에는 고유 ID가 부여됩니다. 그룹 ID 사용 사례에는 다음이 포함되지만 이에 국한되지는 않습니다.
    • 여러 이벤트의 이벤트 레코드 (이벤트가 동일한 경우)가 서로 다른 소스 및 시스템에 병합되지 않았습니다. 예를 들어 동일한 기기를 모니터링하는 여러 센서가 각각 별도의 이벤트 레코드를 생성할 수 있습니다.
    • 관련 이벤트 모음에 대한 세션 식별자 (일반적으로 짧은 기간에 타임스탬프 포함). 웹 탐색 세션의 활동이 예로 들 수 있습니다. 또 다른 예는 택시 탑승의 로그 항목입니다.
    • 사용자 계정 식별자: 사용자 그룹 ID가 동일하므로 모든 그룹 ID를 가진 모든 Event 레코드는 동일한 사용자에게 속합니다.

데이터세트

DataSet는 이벤트 모음입니다. 각 쿼리는 동일한 데이터세트 내에서 실행됩니다. 프로젝트마다 데이터 세트가 여러 개 있을 수 있습니다.

일괄 및 스트리밍 데이터에서 각 데이터세트를 만들 수 있습니다. 일괄 빌드는 여러 Cloud Storage URI에서 데이터 소스로 읽기를 읽습니다. 일괄 빌드가 완료되면 스트리밍 데이터로 데이터세트를 업데이트할 수 있습니다. 이전 데이터에 일괄 빌드를 사용하면 시스템에서 콜드스타트 문제를 방지할 수 있습니다.

DataSet을 쿼리하거나 업데이트하려면 먼저 데이터세트/색인을 빌드해야 합니다. 데이터 세트는 생성되었을 때 색인 생성이 시작되며 데이터 양에 따라 완료까지 일반적으로 몇 분이 소요됩니다. 즉, 데이터 소스는 초기 색인 생성 시 한 번 스캔됩니다. 초기 색인 생성이 완료된 후 Cloud Storage URI의 콘텐츠가 변경되면 다시 스캔되지 않습니다. 추가 데이터에 스트리밍 업데이트를 사용합니다. 스트리밍 업데이트는 거의 실시간으로 계속 색인 생성됩니다.

참고: Timeseries Insights API는 원시 스트리밍 업데이트를 반환할 수 없으므로 클라이언트에 이러한 데이터의 자체 스토리지가 있어야 합니다.

시계열 및 이상 감지

슬라이스

Timeseries Insights API에서 슬라이스는 측정기준 값의 특정 조합을 사용하는 이벤트 컬렉션입니다. 시간 경과에 따라 이러한 슬라이스에 속하는 이벤트 분포에 관심이 있습니다. 지정된 슬라이스의 경우 사용자가 지정한 시간 간격의 숫자 값으로 이벤트가 집계되며, 이는 불일치를 감지하는 시계열입니다. 위의 그림은 "user", "job", "data_center" 차원의 데이터세트에서 다양한 슬라이스를 보여줍니다.

시계열 및 이상

특정 시간 간격의 숫자 값이 과거 값과 다르다면 특정 슬라이스에 이상 이상이 발생합니다. 그림은 10년 동안의 전 세계 온도를 기반으로 하는 시계열을 보여줍니다. 2015년 마지막 달이 이상인지 알고 싶다고 가정해 보겠습니다. 시스템에 대한 쿼리는 '시간: 2015/12/31에 한 달 종료'가 될 시간 간격을 testInterval로 지정합니다. testInterval 전의 가져온 시계열은 이전 학습 기간으로, 그 다음 holdout 기간이 됩니다. 시스템은 학습 기간의 데이터를 사용하여 모델을 학습시키며, 홀드아웃 기간을 사용하여 모델이 다음 값을 안정적으로 예측할 수 있는지 확인합니다. 이 예시에서 보류 기간은 1년입니다. 일반적으로 보류 기간은 사용된 전체 기록의 5~10% 입니다. 그림은 상한선을 비롯한 모델의 실제 데이터와 예측 값을 보여줍니다. 2015/12의 온도는 실제 값이 예측 경계 밖에 있기 때문에 비정상으로 표시됩니다.