(2) 모비젠의 AD(Anomaly Detection) 엔진 ============================================================== 모비젠의 Anomaly Detection 엔진 --------------------------------------------------------- .. image:: ./images/ADE_22.png :scale: 60% :alt: ADE_22 용어 ............................... | ``feature`` : 데이터에서 이상 탐지 대상이 되는 요인 필드를 의미합니다. 예를 들어 서버 상태의 이상 탐지를 위해서 CPU부하, 네트웍트래픽, 메모리사용량,, 이러한 필드가 feature 가 됩니다. | ``참조 데이터 ( reference data )`` : 장애가 발생한 적 없는 과거 기간의 정상값 데이터. | ``참조 데이터의 key`` : 참조 기간의 데이터에서 평균, 표준편차 등의 통계량을 계산하는 그룹 단위 데이터를 구하는 key. SQL 에서 "select * from .. group by 참조데이터의 key" 와 유사합니다. | ``참조 통계량`` : 참조 데이터에서 정상값의 범위를 구하고, 임계치를 설정하기 위해 계산하는 통계량. 분포 기반 평균, 표준편차, 최소값, 최대값, 중간값, IQR 등 특징 '''''''''''''''''''''' | 장애가 발생한 적 없는 과거 데이터인 참조데이터( 정상값 )를 기반으로 하여 정상 데이터를 정하는 기준이 되는 임계치를 만듭니다. | 그리고 설정된 임계치를 벗어난 데이터를 이상값으로 판정합니다. | 모비젠의 이상 탐지 엔진은 * 대량의 system 및 system 이 가진 수많은 개별 feature 들의 ``임계치를 자동 설정`` 합니다. * 주기가 있는 시계열 데이터의 ``실시간 이상 탐지`` 기능 * 이벤트 로그 데이터(예: 장비의 알람 로그) , 센서 측정 데이터, 큰 oscillation 데이터 등 ``다양한 데이터 특성과 분포`` 에 맞는 이상 탐지 기법 적용 * smoothing 변환, moving Average, EWMA * 정규 분포, poisson 분포, IQR 기반 * System Heath Monitoring 을 위해 ``이상 score`` 라는 통계량을 계산합니다. * system 의 개별 feature 의 이상 탐지와 system 의 이상 score, system cluster, 운용 team 등으로 정량적 수치를 확장해서 감시에 활용할 수 있습니다. * Change-point Detection * 주요 system 의 상태 변화 시점 자동 탐지 기능 * 이상 탐지 결과를 이용하여 RCA(Route Cause Analysis) 에 적용 * LTE Core 망 장비 대상으로 이상 탐지 적용 & RCA 적용 사례가 있습니다.( SKT ) 임계치 자동 설정 '''''''''''''''''''''' | 빅데이터 시스템은 상태에 영향을 주는 feature 가 너무 많고, 상호간에 복잡한 연관성이 존재합니다. | 예전처럼 도메인의 전문가가 일일이 임계치를 설정하기에는 너무 많으며, 장비 EMS 에서 일괄적으로 설정된 임계치로 인한 잦은 알람 발생은 그 자체로 또 다른 문제를 일으키고 있습니다. | 실시간으로 감시해야 할 데이터는 대부분 시간에 따른 주기성을 갖고 있거나 영향을 받기 때문에 1개의 feature 라도 시간대, 이벤트 발생 유무에 따른 여러 개의 임계치가 필요합니다. | 임계치는 시간대별, 데이터 발생 분포별, 데이터 타입에 따라 여러 개의 임계치를 가지게 됩니다. | | 이상 탐지 엔진은 참조 기간 데이터에서 자동으로 feature 개별로 여러 임계치를 자동으로 생성 합니다. * 장애가 발생하지 않은 과거 데이터( 참조 데이터 ) 를 기반으로 하여 자동으로 임계치 설정 * 요일별 / 휴일별 / 시간대별 key 가 결합된 참조데이터 key 를 만들어서 시계열 데이터의 임계치 설정 * 주기적으로 최신 데이터를 포함하여 임계치 갱신 * 데이터 타입 및 특성에 따른 통계량을 적용하여 임계치를 설정하고, 이에 따라 여러 종류의 탐지 알람을 생성하는 데 활용 * 정규 분포 기반으로 ``평균 +/- 3 * 표준편차`` 로 하는 상한, 하한 임계치 * IQR 기반의 상한, 하한 임계치 * Poisson 분포 기반의 상한, 하한 임계치 * Correlation 기반의 상한, 하한 임계치 * 운용자 설정 기반의 임계치 : 절대적인 기준이 필요하거나 정해진 MAX, MIN 값이 있을 때 .. image:: ./images/ADE_32.png :scale: 60% :alt: ADE_32 다양한 이상값 판정 룰 '''''''''''''''''''''''''''''''''''''''''' | 참조 기간 데이터로부터 평균과 표준편차 외에 다양한 통계량을 계산하여 참조 데이터로 저장해 두고, 탐지 대상 데이터에 여러 개의 이상값 판정룰을 적용합니다. * 다양한 이상값 판정 룰을 적용하기 위한 통계량 계산 * 정규 분포 기반으로 한 참조 데이터의 평균, 표준편차 * 분포와 무관한 사분위수, IQR * Poisson 분포 기반의 평균, 표준편차 * Correlation 기반의 임계치 * 참조 데이터 기간동안 한번도 발생하지 않은 값의 판정 * Moving Average 등 Smoothing 변환 데이터로 통계량을 계산하고, 입력 데이터 역시 변환하여 이상값을 판정 * SPC rule 적용하여 추세 및 징후에 대한 탐지 기능 추가 * EWMA 처럼 최신 값에 가중치를 준 데이터 변환으로 이상값 탐지 시계열 데이터의 이상 탐지 '''''''''''''''''''''''''''''''''''''''''' | 이상 탐지의 어려움 중에 하나는 많은 데이터가 시간이라는 요인이 크게 작용한다는 점입니다. | 예를 들어 2006년부터 2020년 8월까지 월별 최대 전력 사용량 그래프를 보면, 같은 해의 데이터라도 월별로 차이가 크고, 주기성이 보이며, 해마다 전반적으로 전력사용량이 증가하는 추세임을 알 수 있습니다. | 이러한 시간 변수가 있는 시계열 데이터는 정상값의 기준이 되는 참조 데이터에서 ``시간 요인을 추가`` 하여 임계치를 만들어야 합니다. .. image:: ./images/ADE_21.png :scale: 60% :alt: ADE_21 | 이동통신 네트웍 트래픽의 이상 탐지를 예로 들면 탐지 대상 데이터의 시간과 동일한 시간 key를 가진 참조데이터와 비교를 해야 합니다. | (월요일 & 15시 데이터의 이상 탐지 대상 데이터는 과거 4주의 월요일 & 15시 데이터의 임계치를 기준으로 판정합니다.) | 또, 시계열 데이터 중에는 서버의 CPU 사용량처럼 oscillation 이 큰 데이터가 있습니다. | 여기에서 순간적으로 튀어오르는 값을 전부 이상값으로 탐지하면 너무 잦은 알람 발생으로 운용 피로도 문제와 알람의 신뢰성의 문제가 발생합니다. | 이런 상황에서 실제 운용자가 이상 징후로 판단하는 시점을 정확하게 알고 이상 탐지 프로세스에 적용하는 것이 중요합니다. | | 아래 그림을 보면, 특정 장비의 가용 메모리 측정값(파란색)을 시계열 챠트로 그린 것입니다. | 운용상 "이상 징후" 로 판단하여 조치가 필요한 시점은 튀어오르는 값이 자주, 연속적인 추세를 가지고 발생할 때입니다. | 그래서 이런 특성의 데이터가 있을 때는 데이터를 그대로 탐지에 적용하기 보다는 시계열 분석에서 많이 사용하는 ``smoothing 변환한 데이터`` 를 탐지 대상의 데이터로 수행하는 방법이 효과적입니다. | 아래 그림의 빨간 선이 Moving Average 변환 데이터이며, oscillation 이 적어 변화의 추세나 급격한 변화량 탐지에 저 적합합니다. .. image:: ./images/ADE_23.png :scale: 60% :alt: ADE_23 이상 score 계산 '''''''''''''''''''''''''''''''''''''''''' | 이상 탐지 엔진을 활용하면 다양한 이상 탐지 판정 기준과 함께 정성적 수치가 같이 나옵니다. | 이상 탐지 결과로 나오는 정성적 수치인 "이상 score" 를 이용하여 개별 feature 상의 이상 탐지 뿐만 아니라 상위 system 의 health, system cluster 의 health, system 운용 team 의 health 로 확장하여 이상 징후를 탐지할 수 있습니다. | 이상 score 는 이상 징후를 판단하고자 하는 포인트에 맞춰서 사이트의 전문 지식을 점수 계산에 추가하고, 가중치를 적용하여 사이트의 상황에 맞는 이상 징후 감시가 가능합니다. * 이상 탐지 후 "이상 score" 에 포함되는 case 사례 * 판정 기준에 따라 다양한 이상 탐지 알람을 생성한 후 도메인 상황에 맞게 가중치를 적용하여 score 계산에 포함합니다. * 평균 + 3*표준편차 (=상한 임계치) 를 벗어난 경우 * 평균 - 3*표준편차 (=하한 임계치) 를 벗어난 경우 * 참조 기간 데이터에서 한번도 발생하지 않았던 key * 참조 기간 내내 같은 값을 가졌던(=편차값이 0) 데이터였는데 다른 값을 보인 경우 * poisson 기반 평균 + K * 표준편차 를 벗어난 경우 * 그 외 IQR 기반, 사용자 설정 값 기반, SPC rule 기반으로 이상 탐지 알람 생성 * 주요 장비, 주요 알람에 부여한 가중치 적용 * 발생 시간대에 부여한 가중치 적용 * 개별 feature 단위로 발생한 이상 탐지 알람에 가중치를 부여한 "이상 score" 를 계산한 후, 이 점수로 "system 의 이상 score" 를 다시 계산합나다. * system 의 "이상 score" 를 mimor, major, critical 로 나누어서 모니터링 화면에 표시합니다. * critical - 빨간색, major - 주황색, minor - 노란색, warning - 회색 * system 의 이상 score 를 시계열 heatmap 으로 표시하면, 이상 score 가 증가하는 system 군과 이상 징후 발생 시점을 확인할 수 있습니다. .. image:: ./images/ADE_25.png :scale: 100% :alt: ADE_25 .. image:: ./images/ADE_27.png :scale: 60% :alt: ADE_27 Change-point Detection '''''''''''''''''''''''''''''''''''''''''' | 이상 탐지 결과는 system 전반의 health 및 감시 대상 cluster 의 health 관리에 적용할 수 있습니다. | 특히 이상 탐지 결과로 나온 "이상 score" 자체를 데이터로 분석하면 system 의 상태 변화를 모니터링이 가능합니다. | 특정 시점 이후로 이상 score 가 증가하는 system 을 추출하거나 | 여러 system 에서 이상 score 의 증가하는 변곡점이 되는 시점을 추출합니다. .. image:: ./images/ADE_29.png :scale: 60% :alt: ADE_29 | system 의 change-point 시점 후보를 자동으로 추출합니다. .. image:: ./images/ADE_30.png :scale: 60% :alt: ADE_30