알람

알람 설계

알람 기능은 만들기 쉽고 운영하기 어렵습니다. 첫 주에 알람이 수백 개 오면 현장 담당자는 알림을 끄고, 그 뒤로 진짜 알람도 안 봅니다.

좋은 알람은 적게, 정확하게, 대응 가능하게 옵니다.


1. 알람 유형

유형예시판정 주기
상한/하한kW > 500, 압력 < 6bar실시간
수요 예측15분 수요가 목표 초과 예상1분
사용량일 사용량이 평소 대비 130%일 마감
비가동 사용휴일/야간에 사용량 발생시간
통신 장애N분간 수신 없음1분
데이터 이상음수 차분, 고정값수집 시
전기 품질역률 미달, 전압 불평형5~15분
설비 보전소모품 교체 주기 도래일

비가동 시간 사용 알람은 만들기 쉽고 절감 효과가 바로 보여서 현장 반응이 좋습니다. "주말에 컴프레서가 왜 돌고 있죠?" 같은 발견이 여기서 나옵니다.

2. 데이터 구조

alarm_rule                  규칙 (무엇을, 어떤 유형으로)
 ├─ alarm_rule_threshold    임계값 (measure_key, lower, upper, severity)
 └─ alarm_rule_recipient    수신자 (개인, 부서, 역할)

alarm_event                 발생 이력 (occurred_at, current_value, 해제 여부)
 └─ alarm_event_member_status  개인별 확인 상태
  • 규칙 하나에 심각도별 임계값을 여러 개 둡니다 (경고 450kW, 위험 500kW)
  • 대상은 target_type_id + target_id로 계기, 설비, 공장 어디든 걸 수 있게 합니다
  • 수신자를 개인이 아닌 부서/역할로 지정하면 인사 이동 때 규칙을 고치지 않아도 됩니다

3. 상태 흐름

발생(OPEN) → 확인(ACKNOWLEDGED) → 해제(RESOLVED)
                                 ↘ 자동 해제(값이 정상 복귀)
  • 확인: 사람이 봤다. 누가 언제 봤는지 남김
  • 해제: 원인이 사라졌다. 자동 또는 수동
  • 확인 없이 자동 해제된 알람도 이력에 남겨야 합니다. 반복 패턴 분석에 필요합니다

4. 오알람 줄이기

히스테리시스

경계값 근처에서 값이 오르내리면 알람이 깜빡입니다. 발생과 해제 임계를 다르게 둡니다.

발생: kW > 500
해제: kW < 480

지속 시간 조건

순간 스파이크를 무시합니다.

kW > 500 이 3분 이상 지속될 때 발생

시간대별 임계

야간 경부하 시간과 주간 생산 시간의 정상 범위는 다릅니다. 같은 임계를 쓰면 주간에는 계속 울리고 야간에는 아무것도 못 잡습니다.

중복 억제

같은 규칙의 알람이 해제되기 전에는 새 이벤트를 만들지 않고, 최대값만 갱신합니다. 알림 재발송은 N시간 간격으로 제한합니다.

통신 장애 우선

수집기가 끊기면 그 아래 계기의 모든 값 알람이 동시에 터집니다. 통신 장애 알람이 있으면 하위 값 알람은 억제하세요.

5. 판정 엔진 위치

위치장점단점
수집기 (DAQ)가장 빠름규칙 변경 배포 부담
별도 알람 서비스규칙 관리 일원화구성 요소 추가
DB 배치구현 쉬움지연 큼

실시간 유형(상한/하한, 통신)은 수집 경로에서, 집계 유형(일 사용량, 비가동 사용)은 배치에서 판정하는 혼합 방식이 일반적입니다. 규칙은 DB에서 주기적으로 다시 읽어 캐시합니다.

6. 알림 채널

  • 웹 대시보드 배지, 알람 목록
  • 이메일
  • SMS, 카카오 알림톡 (위험 등급만)
  • 사내 메신저 웹훅 (Slack, Teams 등)

심각도별로 채널을 다르게 둡니다. 모든 알람을 문자로 보내면 비용도 들고 피로도도 올라갑니다.

7. 운영 지표

알람 자체도 관리 대상입니다.

  1. 규칙별 월 발생 건수 (너무 많으면 임계 재조정)
  2. 평균 확인 시간
  3. 확인 없이 자동 해제된 비율
  4. 한 번도 안 울린 규칙 (의미 없는 규칙일 수 있음)
  • 필자 생각: 오픈 후 한 달은 알림을 보내지 말고 이벤트만 쌓으세요. 그 데이터로 임계를 조정한 뒤 알림을 켜면 첫인상이 훨씬 좋습니다.
Previous
기준선과 절감(M&V)