cookk / docs

3 stars 0 forks source link

Anomaly Detection Monitoring #32

Open cookk opened 5 years ago

cookk commented 5 years ago

anomaly-detection-monitoring.pdf

cookk commented 5 years ago

1. Introduction

Traditional ways of monitoring all of these metrics can no longer do the job adequately. There is simply too much data to monitor.

모든 metric을 모니터링하는 전통적인 방법은, 더이상 써먹을 수 없다. 모니터링 할 데이터가 너무 많다.

The problem is, there is no correct value. A static threshold is just that: static.

static 임계값을 이용한 방법의 문제는, 정확한(명확한) 수치가 없다는 것이다. static 임계값은 static일 뿐이다.

2. A Crash Course in Anomaly Detection

Anomaly detection is a way to help find signal in noisy metrics. The usual definition of “anomaly” is an unusual or unexpected event or value.

Anomaly Dectection은 잡음이 많은 metric에서 signal을 찾는데 도움이 되는 방법이다. "anomaly"은 일반적으로 비정상적 또는 예기치 않은 이벤트나 값을 의미한다.

It is also good to note that most anomaly detection methods substi‐ tute “unusual” and “unexpected” with “statistically improbable.”

대부분의 이상 탐지 방법은 "비정상적" 혹은 "예기치 않은"을 "통계적으로 불가능"으로 대체한다는 점에 유의해야 한다.

Anomalies are outliers, at least in most cases, but not all outliers are anomalies.

모든 anomaly는 outlier이지만, 모든 outlier가 anomaly는 아니다.

Anomaly detection cannot do a lot of things people sometimes think it can. For example: • It cannot provide a root cause analysis or diagnosis, although it can certainly assist in that. • It cannot provide hard yes or no answers about whether there is an anomaly, because at best it is limited to the probability of whether there might be an anomaly or not. (Even humans are often unable to determine conclusively that a value is anoma‐ lous.) • It cannot prove that there is an anomaly in the system, only that there is something unusual about the metric that you are observing. Remember, the metric isn’t the system itself. • It cannot detect actual system faults (failures), because a fault is different from an anomaly. (See the previous point again.) • It cannot replace human judgment and experience. • It cannot understand the meaning of metrics. • And in general, it cannot work generically across all systems, all metrics, all time ranges, and all frequency scales.

사람들이 이상 탐지를 통해 할 수 있다고 생각하는 것들 중 많은 것들 중, 그렇지 않은 것이 많다 • 근본 원인이나 진단을 하는데 보조는 할 수 있지만, 직접 이런 정보를 제공할 수는 없다. • 이상이 있는지 예 또는 아니오로 대답할 수 없다. 이상이 있을지에 대한 여부는 기껏해야 anomaly일 확률일 뿐이다.(심지어 인간조차도 특정 값을 비정상으로 결정할 수 없는 경우가 종종 있다) • 시스템에 이상이 있는지는 증명할 수 없다. 단지 관찰중인 지표에 이상한 점이 있음을 알려줄 뿐이다. metric은 시스템 그 자체는 아니다. • 실질적인 시스템 오류를 감지할 수는 없다. fault와 anomaly는 다르다. • 인간의 판단과 경험을 대체할 수 없다. • metric의 의미를 이해할 수 없다. • 모든 시스템, 모든 metric, 모든 시간 및 값 범위에 일정하게 적용할 수 없다.

To apply anomaly detection in practice, you generally have two options, at least within the scope of things considered in this book. Option one is to generate alerts, and option two is to record events for later analysis but don’t alert on them.

Anomaly Detection을 실제로 적용하려면, 이 책에서 고려하는 범위 내에서는 두가지 옵션이 있다. 하나는, 경고를 생성하는 옵션이고 두번째는, 경고는 하지 않고 사후 분석을 위해 이벤트를 기록하는 것이다.

Our suggestion, which will frame the discussion in the rest of this book, is that, generally speaking, you probably should use anomaly detection “online” as your data arrives. Store the results, but don’t alert on them in most cases. And keep in mind that the map is not the territory: the metric isn’t the system, an anomaly isn’t a crisis, three sigmas isn’t unlikely, and so on.

우리의 제안은, 데이터가 도착하면 "online" 이상 탐지를 사용해야 한다는 것이다. 결과를 저장하지만 대부분의 경우 alert를 보내지는 말라. 지도는 실제 땅이 아니다:metric은 시스템이 아니다, 그리고 anomaly는 위기가 아니다. 3시그마(99.73)도 마찬가지다.

3. Modeling and Predicting

Why is modeling so important? With anomaly detection, you’re interested in finding what is unusual, but first you have to know what to expect.

모델링은 왜 중요한가? 이상 탐지를 통해 비정상적인 것을 찾는데 관심이 있다면, 먼저 무엇이 정상인지 알아야 한다.

Little's Law
n = x * (z + r)
동시 사용자수 = throughput * (단위 처리 사이의 간격 + 처리 응답 시간)

2018-04-08 3 35 31

Moving windows have major disadvantages. ... Windows also have poor characteristics in the pres‐ ence of large spikes. When a spike enters a window, it causes an abrupt shift in the window until the spike eventually leaves, which causes another abrupt shift.

Moving window를 이용한 방법에는 큰 단점들이 있다. ... spike가 window에 들어가면 스파이크가 window 밖으로 사라질 때까지 값이 오염된다.

2018-04-08 3 42 03

An exponentially weighted moving average (EWMA) is an alterna‐ tive to moving windows for computing moving averages. Instead of using a fixed number of values to compute an average within a win‐ dow, an EWMA considers all previous points but places higher weights on more recent data.

지수 가중 이동 평균(EWMA)은 이동 평균을 계산하기 위한 moving window의 대체 방법이다. EWMA는 이전의 모든 점을 고려하지만, 최신 데이터에 더 높은 가중치를 두는 방식이다.

Prediction is one of the foundations of anomaly detection. Evaluating any metric’s value has to be done by comparing it to “what it should be,” which is a prediction.

예측은 이상 타지의 기초 중 하나이다. 어떤 metric의 값과 그것의 예상 값과 비교하는 것이 prediction이다.

As a result, there’s a good chance your anomaly detection techniques will sometimes give you more false positives than you think they will

결과적으로, 당신의 이상 탐지 기술로 인해 당신이 생각하는 것보다 많은 오탐 경보를 받게될 수 있다.

If you’ll be using SPC to determine which observations are anomalous, you generally need to ensure that the residuals are nor‐ mally distributed (Gaussian).

SPC를 이용하여 어떤 관측치가 anomaly인지 판단하려면 일반적으로 오차가 정규 분포(가우시안)인지 확인해야 한다.

4. Dealing with Trends and Seasonality

There can be many different kinds of trend, but linear is pretty common. This means a time series increases or decreases at a constant rate. To remove a linear trend, you can simply use a first difference. This means you consider the differences between consecutive values of a time series rather than the raw values of the time series itself. If you remember your calculus, this is related to a derivative, and in time series it’s pretty common to hear people talk about first differences as derivatives (or deltas).

다양한 추세가 있을 수 있지만, 선형은 매우 일반적이다. 이것은 시계열 데이터가 일정하게 증가하거나 감소함을 의미한다. 이런 선형 추세를 없애기 위해서는, 첫번째 차이를 이용하면 된다. 이것은 시계열 자체의 값 대신 연속 값 간의 차이를 고려해야 한다는 것을 의미한다 당신이 미적분학을 기억한다면, 이것은 미분과 관련이 있다.

An outage can throw off a model by making it predict an outage again in the next cycle, which results in a false alarm.

outage는 다음 주기에 다시 outage를 예측함으로써 model을 오염시킬 수 있으며, 이는 잘못된 경보를 유발한다.

Holidays often aren’t in-sync with seasonality.

휴일은 종종 계절성과 일치하지 않는다.

There might be unusual events like Michael Jackson’s death. This actually might be something you want to be alerted on, but it’s clearly not a system fault or failure.

마이클 잭슨의 죽음과 같은 특별한 사건이 있을 수 있다. 이것은 당신이 경보를 받기 원하는 것일 수 있지만, 시스템 fault나 failure는 아니다.

However, most machine data (unlike audio waves) is not really composed of strong frequencies.

그러나, 대부분의 기계 데이터(오디오 신호와는 달리)는 강한 주기를 갖지 않는다.

One example of the Fourier transform in action is Netflix’s Scryer,2 which is used to predict (or forecast) demand based on decomposed frequencies along with other methods. That said, we haven’t seen Fourier transforms used practically in anomaly detection per se. Scryer predicts, it doesn’t detect anomalies.

실제 사용중인 푸리에 변환의 한 예는, 분해 된 주기를 기반으로 수요를 predict(또는 forecast)하는데 사용되는 Netflix의 Scryer, 2이다. 즉 우리는 푸리에 변환이 실제로 이상 탐지 자체에서 사용되는 것을 보지 못했다. Scryer는 예측은 하지만, anomaly를 탐지하지는 않는다.

5. Practical Anomaly Detection for Monitoring

The problem is that you need to alert on predicted time to running out of space instead of alerting on fullness. This isn’t about anomalies.

문제는 디스크가 가득찼다는 것을 경보로 보내는 대신, 언제 용량이 부족하게 될 것인지를 경보하는 것이 필요하다. 이것은 anomaly가 아니다.

Another common source of monitoring noise is a non-actionable alert. If the alert signals a problem that might not even be a real issue, or has no solution or remedy, and doesn’t imply the need for someone to actually do something, the solution is to delete the alert.

모니터링 소음의 또 다른 원인은 대응할 필요가 없는(대응할 수 없는) 경보이다. 실제 문제가 아니거나 해결책이 없는 문제를 경보하고, 누군가가 실제로 조치를 취할 필요가 없다는 것을 알리지 않는 경우에는 경보를 삭제하는 것이 방법이다.

You need a clear and unambiguous definition of the problem you’re trying to detect. It is also best if there are direct ways to measure it happening.

탐지하려는 문제에 대해 명확하고 모호하지 않은 정의가 필요하다. 또한 그것을 측정할 수 있는 직접적인 방법이 있다면 좋다.

To detect a more complicated problem, you might need to relate the system behavior to a known model, such as physical laws or queueing theory or the like. If you have no model that describes how the system should behave, how do you know that your def‐ inition of a problem is correct?

보다 복잡한 문제를 탐지하려면 시스템 법칙을 물리 법칙 또는 대기열 이론 등과 같은 알려진 모델과 관련시켜야 할 수 있다. 시스템의 작동방식을 설명하는 모델이 없는 경우 문제의 정의가 정확한지 어떻게 알 수 있는가?

Differencing causes spikes to turn into zigzags, which might be more complicated to analyze. You can also try finer or coarser time resolution, such as five minute intervals instead of second by second or minute by minute. This is a low-pass filter that removes noise, at the cost of discarding potentially useful information too.

앞뒤 값의 차이를 이용하는 방식은 스파이크가 지그재그로 바뀌어 분석하기가 더 복잡할 수 있다. 초당, 또는 분당 계산하는 것 대신 5분 간격과 같은 뭉퉁그려진 시간 해상도를 시도할 수 있다. 이것은 잠재적인 유용한 정보를 버리는 대신 노이즈를 제거하는 low-pass filter이다.

2018-04-08 5 42 04

To summarize our thought process, we’ve created the following flowchart that you can use as a decision tree

생각 과정을 요약하기 위해, 우리는 의사 결정 트리로 사용할 수 있는 다음의 순서도를 만들었다.

Is the giant spike near the right an anomaly? Probably. Is it “bad?” Well... it’s doing the work it’s been asked to do, isn’t it? So is it an anomaly or not? You can’t just ask “where are the anomalies?” on this data set. That’s not a well-posed question, not even for a human.

우측 부근의 큰 스파이크는 anomaly인가? 아마도 그렇다. 이것은 "나쁜가?" 음... 그렇냐는 질문을 받았는데(?), 그래서 이건 anomaly인가? 아닌가? 당신은 이 데이터 셋에서 "anomaly가 어디야?"라고 물어볼 수는 없다. 그것은 사람에게도 좋은 질문은 아니다.

2018-04-08 5 49 12

데이터 추세의 영향을 없애기 위해, 변화량을 이용했다.

- 이동 평균법(MA)
- 지수 평활법(EWMA)
  - 단순 지수 평활법
  - 이중 지수 평활법
  - 삼중 지수 평활법(계절성)

6. The Broader Landscape

2018-04-08 6 06 33

mean shift가 있는 데이터에서 anomaly detection

2018-04-08 6 09 16

An EWMA control chart is great for detecting spikes, but not mean shifts. Let’s try out CUSUM. In this image we’ll show only the first portion of the data for clarity:

EWMA control chart는 스파이크를 감지하기에는 유용하지만, mean shift를 감지하기는 좋지 않다. CUSUM 을 사용해보자. 이 그림에서는 명확성을 위해 데이터의 첫번째 부분만 보여준다:

Not all anomaly detection is based on time series of metrics. Clustering, or cluster analysis is one way of grouping elements together to try to find the odd ones out.

모든 예외 탐지가 일련의 메트릭에 기반하지는 않는다. 클러스터링 또는 클러스터 분석은 요소를 그룹화해서 홀수 요소를 찾아내는 방법 중 하나이다.

The Grubbs’ Test is used to test whether or not a set of data contains an outlier.

Grubbs 테스트는 데이터 집합에 이상치가 포함되어 있는지 여부를 테스트하는 데 사용된다.

There’s never a one-size-fits-all solution to anomaly detection. Instead, some choose to combine multiple techniques into a group, or ensemble.

이상탐지에 대한 해결책은 절대로 없다. 하지만, 여러가지 기술을 하나의 그룹또는 앙상블로 합치는 것을 선택할 수 있다.

Instead of sending an alert when an anomaly is detected, send an alert when N anomalies are detected within an interval of time.

이상이 감지되면 경고를 보내는 대신, 일정 시간 내에 N 개의 이상이 감지되면 경고를 보낸다.

Although they don’t call it a “filter,” one of their settings disables anomaly detection for low traffic appli‐ cations and services to avoid unnecessary alerts.

필터를 "필터"라고 부르지는 않지만, 설정 중 하나는 불필요한 경고를 피하기 위해 트래픽이 낮은 응용 프로그램 및 서비스에 대한 예외 탐지를 비활성화 한다.