Skip to content

component dummy sensor

aegis-pi edited this page Jun 14, 2026 · 3 revisions

컴포넌트 - Dummy Sensor

Factory B/C 테스트베드에서 canonical JSON을 생성하는 worker VM 로컬 systemd 컴포넌트다. 이 데이터는 실제 현장 센서 데이터가 아니라 multi-factory, risk, pipeline freshness 검증용 synthetic data다.


책임

worker VM systemd
  factory_b_dummy_generator.py 또는 factory_c_dummy_generator.py
  -> factory_state / infra_state JSON 생성
  -> /var/lib/aegis/outbox/{message_id}.json

K3s edge-iot-publisher Pod
  -> 같은 worker node hostPath outbox scan
  -> MQTT publish

dummy generator는 publish하지 않는다. factory_b_iot_publisher.py, factory_c_iot_publisher.py는 legacy/manual smoke 용도이며, 표준 운영 경로는 K3s edge-iot-publisher다.


실행 위치

Factory 실행 위치 service
factory-b Mac UTM worker VM aegis-factory-b-dummy-generator.service
factory-c Windows VirtualBox factory-c-worker VM aegis-factory-c-dummy-generator.service

master VM에서 generator를 실행하면 master-local /var/lib/aegis/outbox에만 JSON이 생성된다. 표준 publisher Pod는 worker node hostPath를 읽으므로, master에서 생성한 파일은 S3 raw/DynamoDB로 전달되지 않는다.


Source Type

source_type 기본 주기 내용
factory_state 3초 sensor baseline/jitter, sensor event, AI score
infra_state 20초 node/workload/device/heartbeat, freshness gap

Factory B/C dummy generator는 현재 image_snapshot을 생성하지 않는다.


Profile 차이

항목 Factory B stable-lab Factory C noisy-vm
factory_id factory-b factory-c
environment_type vm-mac vm-windows
input_module_type dummy dummy
worker node worker1 factory-c-worker
temperature baseline/jitter 24.5 +/- 3.0 27.0 +/- 4.0
humidity baseline/jitter 45.0 +/- 8.0 52.0 +/- 10.0
pressure baseline/jitter 1013.5 +/- 1.5 1012.0 +/- 2.0
AI event ai_warning ai_warning, ai_critical
abnormal_sound brief lab impact intermittent vibration

Sensor event:

Factory Event 값 범위
factory-b temperature_high 39.0-45.0 C
factory-b humidity_high 88.0-96.0 %
factory-b pressure_high 1055.0-1075.0 hPa
factory-b pressure_low 940.0-960.0 hPa
factory-c temperature_critical 45.0-52.0 C
factory-c humidity_critical 95.0-99.0 %
factory-c pressure_high_critical 1070.0-1090.0 hPa
factory-c pressure_low_critical 930.0-950.0 hPa

기본 profile은 단순 확률 anomaly가 아니라 랜덤 간격 + round-robin event + 랜덤 값 구조다. Sensor spike는 기본 30초 동안 유지된다.


infra_state 기준

기본 AEGIS_CLUSTER_STATE_MODEsynthetic이다.

항목 기준
node 상태 기본 fixed-ready
node down AEGIS_DUMMY_SCENARIO=node_down 또는 explicit infra event에서만 발생
workload 상태 synthetic 기본 또는 kubernetes 모드에서 workload만 조회
pipeline gap payload 필드를 넣지 않고 infra_state 생성을 건너뛰어 만듦

Pipeline freshness event:

Factory Event gap
factory-b pipeline_warning_gap 75-105초
factory-c pipeline_critical_gap 135-180초
factory-c pipeline_outage_gap 301-330초

Outbox 계약

/var/lib/aegis/outbox/tmp/{message_id}.*.tmp
  -> /var/lib/aegis/outbox/{message_id}.json

파일은 UTF-8 JSON 한 건이며, message_id를 파일명으로 사용한다. 같은 message_id 파일이 이미 있으면 덮어쓰지 않는다.


실행 예시

Preview:

python3 apps/dummy-sensor/factory_b_dummy_generator.py --once all --no-write --pretty
python3 apps/dummy-sensor/factory_c_dummy_generator.py --once all --no-write --pretty

Outbox 1회 생성:

AEGIS_OUTBOX_DIR=/var/lib/aegis/outbox \
  python3 apps/dummy-sensor/factory_b_dummy_generator.py --once all

Loop:

python3 /opt/aegis/dummy-sensor/factory_b_dummy_generator.py --loop
python3 /opt/aegis/dummy-sensor/factory_c_dummy_generator.py --loop

운영 스크립트:

scripts/ops/manage-dummy-generators.sh start factory-b
scripts/ops/manage-dummy-generators.sh start factory-c
scripts/ops/manage-dummy-generators.sh status factory-b
scripts/ops/manage-dummy-generators.sh status factory-c

Helm/GitOps 연동

Factory B/C values 기준:

factoryALogAdapter:
  enabled: false

outbox:
  type: hostPath
  path: /var/lib/aegis/outbox
  hostPath:
    path: /var/lib/aegis/outbox
    type: DirectoryOrCreate

placement:
  nodeSelector:
    aegis.workload-node: "true"

edgeIotPublisher:
  enabled: true

publisher Pod는 dummy generator가 파일을 쓰는 worker node에 떠야 한다.


관련 문서

Aegis-Pi Wiki

· 대표 문서 목록은 홈의 문서 탐색 표 참조

시작하기

요구사항

핵심 개념

아키텍처

컴포넌트 (Edge → Cloud → Dashboard)

Dashboard & 운영

시나리오 · 사례 · 참조

Clone this wiki locally