알람규칙 목록
개요
이 화면은 무엇인가요?
센서 태그의 값이 설정된 조건을 만족하면 자동으로 알람을 발생시키는 규칙을 생성·관리하는 화면입니다. 임계값(threshold), 변화율(rate_of_change), 편차(deviation), 패턴(pattern) 등 다양한 조건 유형을 지원하며, 에스컬레이션 정책과 알림 채널도 함께 설정합니다.
누가 사용하나요?
- IoT 엔지니어: 알람 규칙 생성, 임계값 설정, 조건 튜닝
언제 사용하나요?
- 태그에 새로운 알람 조건을 추가하거나 기존 임계값을 변경할 때
- 알람 오발생(chattering)을 줄이기 위해 히스테리시스나 중복제거간격을 조정할 때
- 에스컬레이션 정책을 설정하거나 알림 채널을 변경할 때
주요 기능
- 4가지 조건 유형: threshold, rate_of_change, deviation, pattern
- 히스테리시스 설정: 알람 반복 발생(chattering) 방지
- 자동 해제: 정상 복귀 시 알람 자동 해제 (지연 시간 설정 가능)
- 에스컬레이션: 미확인 시 설정 시간 후 상위자에게 자동 전달
- 다채널 알림: 이메일, SMS, 메신저, 인앱 알림 동시 설정
- CSV 가져오기/내보내기: 규칙 일괄 등록·백업
입력 항목 가이드
기본정보
| 항목 | 설명 | 필수 | 입력 예시 |
|---|---|---|---|
| 규칙코드 | 알람 규칙 식별 코드 | ✅ | ALM-TEMP-HIGH-01 |
| 규칙명 | 알람 규칙 이름 | ✅ | 로봇1호기 모터온도 상한 |
| 태그 | 감시 대상 센서 태그 | ✅ | 데이터태그 목록에서 선택 |
| 설비자산 | 관련 설비 (선택) | 설비자산 트리에서 선택 | |
| 심각도 | 알람의 심각 수준 | ✅ | info / warning / critical / emergency |
| 조건유형 | 알람 트리거 조건 | ✅ | threshold / rate_of_change / deviation / pattern |
| 알람분류 | 알람의 업무 분류 | process / safety / quality / maintenance / environment | |
| 사용여부 | 규칙 활성화 상태 | 기본값: 활성 |
임계값/조건
| 항목 | 설명 | 필수 | 입력 예시 |
|---|---|---|---|
| 상한임계값 | 이 값을 초과하면 알람 발생 | 80.0 | |
| 하한임계값 | 이 값 미만이면 알람 발생 | 10.0 | |
| 히스테리시스 | 알람 해제를 위한 값 차이 | 2.0 | |
| 중복제거간격(초) | 동일 알람 재발생 방지 시간 | 300 (5분) | |
| 자동해제 | 정상 복귀 시 알람 자동 해제 | 활성화 권장 | |
| 자동해제지연(초) | 자동 해제까지 대기 시간 | 60 (1분) |
에스컬레이션/담당
| 항목 | 설명 | 필수 | 입력 예시 |
|---|---|---|---|
| 에스컬레이션타임아웃(분) | 미확인 시 상위자 전달까지의 시간 | 30 (30분) | |
| 알림채널 | 알람 발생 시 알림 전송 채널 | ["email", "sms", "messenger"] | |
| 담당자 | 알람 1차 담당자 | 사용자 선택 |
자주 묻는 질문 (FAQ)
알람이 너무 자주 발생합니다(chattering). 어떻게 줄이나요?
다음 설정을 조정하세요:
- 히스테리시스 증가: 임계값 근처 미세 변동에 의한 반복 발생 방지
- 중복제거간격 증가: 같은 규칙의 알람이 짧은 시간 내 재발생하는 것 방지
- 데드밴드 조정: 태그 설정에서 데드밴드를 높여 미세 변동 자체를 무시
rate_of_change 조건은 어떻게 설정하나요?
조건설정(condition_config) JSON에 다음을 입력합니다:
timeWindowSec: 변화율을 측정할 시간 창 (초)maxRateOfChange: 허용 최대 변화량
예: 10초 내 온도 5°C 이상 급상승 감지 → { "timeWindowSec": 10, "maxRateOfChange": 5 }
실무 시나리오
안전 알람 규칙 설정 (Emergency)
상황: 가열로의 온도가 200°C를 초과하면 Emergency 알람을 발생시키고, 즉시 모든 채널로 알림을 보내야 합니다.
처리 순서:
- 규칙코드
ALM-HEATER-EMERG으로 규칙을 생성합니다 - 심각도
emergency, 조건유형threshold, 상한임계값200 - 히스테리시스
5, 자동해제 비활성화 (수동 확인 필수) - 에스컬레이션타임아웃
5분 (5분 내 미확인 시 공장장에게 전달) - 알림채널
["email", "sms", "messenger", "in_app"]— 전 채널 동시 발송 - 알람분류
safety로 설정합니다
참고: 데이터 구조
알람규칙 테이블 (alarm_rules)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|---|---|---|
rule_code | 규칙코드 | VARCHAR *필수 *고유 | - |
rule_name | 규칙명 | VARCHAR *필수 | - |
tag_id | 태그ID | UUID (FK) *필수 | data_tags 참조 |
severity | 심각도 | ENUM *필수 | info/warning/critical/emergency |
condition_type | 조건유형 | ENUM *필수 | threshold/rate_of_change/deviation/pattern |
condition_config | 조건설정 | JSONB *필수 | 조건 상세 JSON |
threshold_high | 상한임계값 | DECIMAL | - |
threshold_low | 하한임계값 | DECIMAL | - |
hysteresis | 히스테리시스 | DECIMAL | chattering 방지 |
dedup_interval_sec | 중복제거간격(초) | INT | - |
auto_clear | 자동해제 | BOOLEAN | - |
escalation_timeout_min | 에스컬레이션타임아웃(분) | INT | - |
notify_channels | 알림채널 | JSONB | ["email","sms","messenger"] |
assignee_id | 담당자ID | UUID (시스템참조) | - |