youmuu-listener
메인 인덱스 | bob-yamong
실행 골격
main.py는 비동기 모니터링 루프와 정책 수신 루프를 동시에 돌리는 에이전트입니다.
- 시작 시
MACHINE_ID와 SERVER_NAME이 없으면 즉시 종료합니다.
- 런타임 설정은
KAFKA_BROKERS, UPLOAD_DIR, UPLOAD_FILE, MONITOR_INTERVAL, LOG_DIR를 사용합니다.
메시지 흐름
HeartbeatProducer는 heartbeat 토픽으로 하트비트를 보냅니다.
PolicyConsumer는 policy 토픽을 구독하고, Kafka key의 접두사와 MACHINE_ID를 비교해 대상 정책만 받습니다.
PolicyManager는 수신한 정책 본문을 UPLOAD_DIR/policy.yaml에 저장하고, 현재 정책을 다시 읽을 수 있습니다.
- 하트비트 전송이나 정책 수신이 실패하면 로그를 남기고 종료 경로로 들어갑니다.
수집 흐름
system_info.py는 psutil로 CPU, 메모리, 디스크, 네트워크, uptime, load average를 모읍니다.
container_list.py는 aiohttp.UnixConnector로 /var/run/docker.sock에 붙고, 컨테이너 목록과 stats, inspect 결과를 합쳐 CPU, 메모리, 네트워크, IO, 프로세스 수, cgroup, namespace inode를 계산합니다.
monitor_continuously()는 timestamp, host, containers를 묶어 내보내는 공용 모니터링 제너레이터입니다.
로그
setup_logging()은 logs/monitor.log에 회전 로그를 남기고, 콘솔에도 같은 포맷으로 출력합니다.
의존성
requirements.txt에는 aiohttp, kafka-python-ng, psutil, docker가 들어갑니다.