Skip to Content
Infra & DevOps수집기의 CEP 규칙 조회·등록 API
☁️ Infra & DevOps2017년 4월 24일

수집기의 CEP 규칙 조회·등록 API

#cep#rest-api#collector#monitoring#flamingo

모니터링 수집기에서 사용할 CEP 규칙을 REST API로 관리하며 남긴 기록입니다. 규칙에는 식별자와 Siddhi 쿼리를 저장했고, 목록 조회·개별 조회·등록·삭제 API를 구분했습니다.

WSO2 CEP와 Siddhi의 이벤트 처리 구조에서 엔진의 역할을 소개했다면, 이 글에서는 규칙을 전달하는 API와 실제 쿼리 형태를 살펴보겠습니다.

규칙 관리 API

작업메서드경로
목록 조회GET/api/cep_rule
개별 조회GET/api/cep_rule/{id}
규칙 등록POST/api/cep_rule/
규칙 삭제DELETE/api/cep_rule/{id}

등록 요청에는 metaId와 cepSql을 전달했습니다. 응답에는 생성한 데이터와 생성 시각, 개별 리소스 링크가 들어 있었습니다.

목록 응답도 단순한 이름 배열은 아니었습니다. _embedded.cepRuleEntities에 규칙 객체가 들어가고, _links와 페이지 정보가 함께 있는 구조였습니다. 클라이언트에서는 규칙의 식별자뿐 아니라 저장된 쿼리도 읽을 수 있었습니다.

등록 API의 응답과 엔진 적용 완료는 구분해서 봐야 합니다. 저장된 데이터를 돌려받았다는 사실만으로 모든 수집기에 반영됐는지, 기존 규칙의 실행 상태까지 정리됐는지 알 수는 없습니다. 삭제 역시 리소스 삭제와 실행 중인 처리의 종료가 같은 의미는 아닙니다.

시간 윈도우와 조건 필터

당시 쿼리는 입력·출력 스트림을 정의한 뒤, 지표 종류와 이름으로 이벤트를 골라 시간 윈도우에서 집계하는 형태였습니다. 다음은 메모에 남긴 쿼리에서 필터와 집계 부분을 발췌한 것입니다.

sql
from input[ meta_APP_ID == 'collector.yarn.resourceManager.ClusterMetrics' AND meta_METRIC_NAME == 'NumActiveNMs' ]#window.time(1 min) select max(meta_COLLECT_TIME) as meta_COLLECT_TIME, meta_HOSTNAME, meta_APP_ID, meta_METRIC_NAME, avg(correlation_METRICS) as correlation_METRIC group by meta_HOSTNAME, meta_APP_ID, meta_METRIC_NAME having correlation_METRIC > 3 insert into output;

호스트·수집 항목·지표 이름별로 최근 1분의 값을 모으고, 평균이 3보다 큰 결과를 출력하는 쿼리입니다. 당시의 스트림 정의와 구형 WSO2 CEP 환경을 전제로 한 문법입니다.

여기서 “1분 평균이 기준보다 높다”는 조건과 “모든 값이 1분 내내 기준을 넘었다”는 조건은 다릅니다. 규칙 이름이나 화면 설명도 쿼리가 실제로 계산하는 값에 맞춰야 합니다.

집계식의 의미

다른 규칙에는 다음 계산식도 있었습니다.

sql
(max(correlation_METRICS) - min(correlation_METRICS)) / count(*) as correlation_METRIC

이는 윈도우 안의 최댓값과 최솟값 차이를 이벤트 수로 나눈 값입니다. 시간으로 나눈 증가율이나, 시간순으로 이웃한 값의 평균 변화량과 같지 않습니다. 특히 누적 카운터가 초기화되거나 수집 간격이 달라지면 해석이 달라질 수 있습니다.

같은 입력 스트림에 여러 종류의 지표가 들어올 때는 필터와 group by에 지표 이름이 포함되는지도 확인해야 합니다. 서로 다른 단위의 값을 한 그룹에 섞으면 집계 결과를 해석하기 어렵습니다.

API 응답과 알림 결과 확인

규칙을 등록한 뒤에는 저장된 쿼리를 다시 조회하고, 조건에 맞는 입력과 맞지 않는 입력에서 출력이 어떻게 달라지는지 확인해야 합니다. API 호출이 성공했는지와 기대한 알림이 만들어지는지는 별도의 확인 항목입니다.

이 기록에서 다시 볼 부분도 규칙 관리 경로와 집계식의 의미입니다. 화면에서 규칙을 입력하는 것만큼, 그 규칙이 어떤 데이터를 묶고 어떤 결과를 내는지 설명하는 일이 필요했습니다.

Last updated on