이 질문을 한 지 5 개월이 지났으며, 무언가를 알아 냈 으면 좋겠습니다. 다른 시나리오에서 사용할 수 있기를 바랍니다.
유스 케이스의 경우 스파이크 감지 알고리즘을 볼 필요가 없다고 생각합니다.
타임 라인에서 발생하는 오류에 대한 그림부터 시작하겠습니다.
원하는 것은 숫자 표시기, 오류가 얼마나 빨리 발생하는지에 대한 "측정"입니다. 이 측정은 임계 값을 적용 할 수 있어야합니다. 시스템 관리자는 민감도 오류가 경고로 바뀌는 것을 제어 하는 제한을 설정할 수 있어야합니다 .
측정 1
스파이크를 얻는 가장 쉬운 방법은 "스파이크"를 언급 한 20 분 간격 으로 히스토그램 을 그리는 것입니다 .
시스템 관리자는 막대의 높이, 즉 20 분 간격으로 허용되는 가장 큰 오류를 기준으로 감도를 설정합니다.
(이 시점에서 20 분의 창 길이를 조정할 수 없는지 궁금 할 수 있습니다. 창 길이는 함께 나타나는 문구 오류 에서 단어를 함께 정의하는 것으로 생각할 수 있습니다 .)
특정 시나리오에서이 방법의 문제점은 무엇입니까? 변수는 3보다 작은 정수일 것입니다. 임계 값을 1로 설정하면 알고리즘이 필요하지 않은 "모든 오류는 경고입니다"라는 의미이기 때문에 임계 값을 1로 설정하지 않습니다. 따라서 임계 값에 대한 선택은 2와 3이 될 것입니다. 이것은 시스템 관리자에게 세밀한 제어를 많이 제공하지는 않습니다.
측정 2
시간 창에서 오류를 계산하는 대신 현재 오류와 마지막 오류 사이의 시간 (분)을 추적하십시오. 이 값이 너무 작아지면 오류가 너무 자주 발생하여 경고를 발생시켜야합니다.
시스템 관리자는 아마도 한계를 10 (즉, 오류가 10 분 미만으로 발생하는 경우 문제) 또는 20 분으로 설정합니다. 덜 중요한 시스템의 경우 30 분 정도 소요될 수 있습니다.
이 측정은 더 많은 유연성을 제공합니다. 작업 할 수있는 작은 값 집합이있는 측정 값 1과 달리 이제 20-30 개의 값을 제공하는 측정 값이 있습니다. 따라서 시스템 관리자는 미세 조정 범위가 더 넓어집니다.
친절한 조언
이 문제에 접근하는 또 다른 방법이 있습니다. 오류 빈도를 보지 않고 오류가 발생하기 전에 예측할 수 있습니다.
이 문제는 성능 문제가있는 것으로 알려진 단일 서버에서 발생한다고 언급했습니다. 해당 시스템의 특정 핵심 성능 표시기 를 모니터링 하고 오류가 발생할시기를 알려줄 수 있습니다. 특히 디스크 I / O와 관련된 CPU 사용량, 메모리 사용량 및 KPI를 살펴 봅니다. CPU 사용량이 80 %를 넘으면 시스템 속도가 느려집니다.
(여러분이 소프트웨어를 설치하고 싶지 않다고 말했지만 PerfMon을 사용하여이 작업을 수행 할 수 있다는 것은 사실입니다. 그러나 Nagios 및 Zenoss 와 같은 무료 도구가 있습니다 .)
시계열에서 스파이크 감지에 대한 정보를 찾기 위해 여기에 온 사람들에게 :
시계열에서의 스파이크 감지
x1,x2,...
Mk=(1−α)Mk−1+αxk
αxk
예를 들어, 새 값이 이동 평균에서 너무 멀리 떨어진 경우
xk−MkMk>20%
그런 다음 경고를 발생시킵니다.
실시간 데이터로 작업 할 때 이동 평균이 좋습니다. 그러나 이미 테이블에 많은 데이터가 있고 스파이크를 찾기 위해 SQL 쿼리를 실행하려고한다고 가정하십시오.
내가 제안 할게:
- 시계열 의 평균값 계산
- 표준 편차 계산σ
- 2σ
시계열에 대한 더 재미있는 것들
많은 실제 시계열은 주기적으로 동작합니다. 시계열 에서 이러한주기를 추출하는 데 도움이되는 ARIMA 라는 모델 이 있습니다.
주기적 행동을 고려한 이동 평균 : Holt and Winters