프로메테우스 이상 감지(anomaly detection)

Red Hat OpenShift에 배포되는 애플리케이션 수가 증가함에 따라 애플리케이션 모니터링이 절실히 필요합니다. 이러한 애플리케이션 중 다수는 Prometheus 메트릭을 통해 모니터링되므로 TSDB (시계열 데이터베이스)에 저장된 많은 시계열 메트릭이 누적됩니다. 이러한 메트릭 중 일부는 비정상적인 값을 가질 수 있으며 이는 애플리케이션의 문제를 나타낼 수 있지만 수동으로 식별하기는 어렵습니다. 이 문제를 해결하기 위해 이상을 탐지하기 위한 이러한 메트릭에 대한 머신 러닝 모델을 교육하는 AI 기반 접근 방식을 고안했습니다.

Fourier 및 Prophet 기계 학습 모델은 현재 시계열 예측을 수행하고 메트릭의 비정상적인 동작을 예측하는 데 사용되고 있습니다. 우리는 또한 ARIMA 모델과 같은 다른 고전적인 시계열 예측 모델을 연구하고 있습니다.

AI Ops 접근 및 구현

Prometheus 메트릭스의 양이 증가함에 따라 노이즈 내의 신호를 보기가 점점 어려워지고 있습니다. 현재의 최신 기술은 대시 보드에서 메트릭을 그래프로 표시하고 임계 값에 대해 경고하는 것입니다. 이 threshold은 현재 도메인 지식, 즉 시스템을 알고 있는 사람이 이러한 임계 값을 구성하는 사람에 의해 수행됩니다.

AI 기반 접근 방식을 통해 과거 메트릭 데이터에 대한 머신 러닝 모델을 교육하여 시계열 예측을 수행 할 수 있습니다. 그런 다음 실제 메트릭 값을 모델 예측과 비교할 수 있습니다. 예측 된 값이 실제 메트릭 값과 많이 다른 경우 이를 비정상적인 동작(anomalous behavior)으로 보고 할 수 있습니다.

Prometheus 이상 탐지 프레임 워크의 주요 요구 사항은 다음과 같습니다.

  1. Prometheus Metrics – 모니터링해야 할 관심 지표
  2. OpenShift – Prometheus, ML 모델 및 Grafana를 배포하기 위한 네임 스페이스
  3. Grafana – Prometheus 시계열 데이터의 그래프 작성에 호환되는 시각화 도구

우리의 이상 탐지 프레임 워크의 현재 구현은 다음과 같습니다.

  • Data – 지정된 호스트 / 대상에서 스크랩된 Prometheus 시계열 메트릭
  • Models being trained –
    • Fourier – 시간 도메인에서 주파수 도메인으로 신호를 매핑하는 데 사용됩니다. 이것은 Sinusoidal 컴포넌트(sine 및 cosine)의 합으로 주기적인 시계열 데이터를 나타냅니다.
    • Prophet – Prophet model은 Facebook에서 개발한, 비선형 트렌드가 매년, 주별 및 일일 계절 성과 플러스 휴가 효과에 적합한 가산 모델을 기반으로 시계열 데이터를 예측이 가능한 모델입니다.  seasonal effect가 강하고 여러 season의 과거 데이터가 있는 시계열에 가장 적합합니다. 다음은 모델별로 계산 된 예측 값입니다.
      • yhat – 예측된 시계열 값
      • yhat_lower – 불확실성 구간의 하한
      • yhat_upper – 불확실성 구간의 상한
  • Visualization – Grafana에서 그래프를 작성하여 시계열 메트릭 동작을 시각화 할 수 있습니다. 예를 들어 아래 대시 보드를 통해 실제 및 예측 메트릭 값을 플로팅하고 비교할 수 있습니다.
Graph plotting current metric value, predicted metric value, upper and lower bounds for the predicted value and the anomaly detected.

이 대시 보드는 현재 메트릭 값, 예측된 메트릭 값, 예측 된 값 및 이상 감지에 대한 상한 및 하한을 표시합니다.

  • Alerting – 탐지된 이상은 Prometheus를 사용하여 경고로 전송됩니다. 알림은 Google 채팅 및 이메일을 통해 챗봇을 통해 자동 메시지를 보내도록 구성되어 각 팀에 알립니다. Google 채팅 알림 아키텍처는 다음 두 부분으로 관리됩니다.
    • 예측된 지표는 Datahub Prometheus에 의해 scrape됩니다.
    • Datahub은 Thoth Bot-Sesheta를 사용하여 팀에 웹 후크 트리거를 전송합니다. Thoth Bot-Sesheta는 Google 채팅에서 경고 알림을 트리거하도록 구성되어 있습니다.

Prometheus 인스턴스는 이상 탐지 지표에 대한 경고 규칙으로 구성되었습니다. 경고 규칙을 사용하면 Prometheus 언어 표현식을 기반으로 경고 조건을 정의하고 경고 발생에 대한 알림을 외부 서비스에 보낼 수 있습니다. 특정 시점에 경고 표현식으로 인해 하나 이상의 벡터 요소가 생성 될 때마다 해당 요소의 레이블 세트에 대해 경고가 “active”으로 계산됩니다.

Model Testing

주어진 메트릭의 기간 동안, Prometheus 이상 탐지기는 ‘테스트 모드’에서 실행될 수 있으며, 기계 학습 모델이 이러한 이상을 다시 보고했는지 여부를 확인할 수 있습니다. 그런 다음 모델의 정확성과 성능을 결과를 비교하기 위해 MLFlow에 메트릭으로 기록할 수 있습니다.

MLflow는 experimentation, reproducibility, deployment 등 ML 라이프사이클을 관리하는 오픈 소스 플랫폼입니다. 이것은 현재 세 가지 컴포넌트를 제공합니다.

  • MLflow Tracking
  • MLflow Projects
  • MLflow Models

테스트 모드는 데이터 과학자가 그들의 machine에서 로컬로 모델 실험을 추적하고 향후 재사용을 위해 프로젝트에서 코드를 구성하며 production을 위해 deploy 할 최상의 성능을 갖춘 모델을 출력하는 데 유용합니다.

Insights and Observations

내부 팀의 메트릭 중 하나인 Thoth Dgraph 측정 항목에 대한 이상 감지가 시도되었습니다. Thoth 팀은 그래프 데이터베이스의 읽기 / 쓰기 실패를 실시간으로 예측할 수 있기를 원했습니다. 이 요구 사항은 AI Ops 팀에 제공되어 Thoth Dgraph 인스턴스의 읽기 / 쓰기 실패에 대한 이상 예측을 제공합니다.

탐지는 이상이 예측될 때마다 Dgraph 데이터베이스가 실제로 실패한 것으로 관찰되었습니다. 경고 설정을 통해 이상 감지의 보증을 검사했습니다. 이메일 및 Google 채팅 알림을 통해 Thoth 팀에게 알림이 발송되었습니다.

발견 된 incident 중 하나는 Dgraph 인스턴스가 OpenShift PSI 클러스터에서 실행될 때, PSI 클러스터가 다운되어 Dgraph 읽기 / 쓰기 실패를 일으켰습니다. 이 클러스터 유지 관리 동안 Prometheus 이상 탐지는 Dgraph 읽기 / 쓰기 실패에 대한 경고를 트리거했습니다.

Chart from a Grafana dashboard showing an anomaly detection during PSI cluster maintenance 

Grafana 대시 보드 : PSI 클러스터 유지관리 동안 이상 감지

다음은 팀의 Google 채팅 룸으로 알림을 보내는 방법을 보여줍니다.

Screenshot of a chat bot with an alert about failure in the disk read metric based upon Fourier Prediction that reads: "Prometheus alert / Dgraph Read Failures Fourier Zero-1 (stage) in instance prometheus-anomaly-detector-fourier.cloud.paas.psi.redhat.com:80 / Job: Thoth Dgraph Anomaly Detector Fourier (stage) / Severity: MEDIUM / Status: firing / OPEN THE ALERT

Fourier 예측을 기반으로 한 디스크 읽기 메트릭 오류

Screenshot of a chat bot with an alert about failure in the disk write metric based upon Prophet Prediction that reads: "Prometheus alert / Dgraph Write Failures Prophet Alpha-2 (stage) in instance prometheus-anomaly-detector-prophet-2.cloud.paas.psi.redhat.com:80 / Job: Thoth Dgraph Anomaly Detector Prophet2 (stage) / Severity: MEDIUM / Status: firing / OPEN THE ALERT

Prophet 예측을 기반으로 한 디스크 쓰기 메트릭 오류

Conclusion

Thoth Dgraph 메트릭을 통해서 기존 머신 러닝 모델을 개선하는 데 도움이 되었습니다. 또한 특정 메트릭 유형에 대한 사용을 제한하지 않고 광범위한 데이터 세트에 대해 이 프레임 워크를 테스트 할 수 있는 다양한 가능성을 고려하게 되었습니다.

AI를 사용하여 Prometheus 모니터링을 개선하고 있습니까? AI CoE의 AI Ops 팀에 연락하십시오. 기꺼이 도와 드리겠습니다! 우리는 또한 프레임 워크 개선에 기여할 수 있습니다.

Project Repository: https://github.com/AICoE/prometheus-anomaly-detector

감사의 말(Acknowledgements)

가능한 모든 도움을 주신 모든 분들께 감사드립니다.

AI Ops: Marcel Hild, Anand Sanmukhani, Michael Clifford, Hema Veeradhi

Thoth: Christoph Goern, Francesco Murdaca, Frido Pokorny, Harshad Nalla

Datahub: Alex Corvin and Maulik Shah

[Source] https://next.redhat.com/2019/11/18/prometheus-anomaly-detection/#more-1224

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중