youmuu-syslog
제가 확인한 youmuu-syslog는 tracepoint 이벤트를 CEF 형식으로 syslog에 내보내고, 컨테이너 식별과 LSM 쪽 저장 경로를 함께 다루는 C++ 기반 수집·전달 레포입니다.
레포지토리 정보
이 레포는 tracepoint 쪽에서 시스템 콜과 네트워크 관련 이벤트를 포착해 syslog로 흘리고, LSM 쪽에서는 Postgres 기반 큐로 적재하는 두 갈래를 함께 보여 줍니다. docker_example/docker-compose.yml에는 rsyslog와 Postgres가 함께 정의되어 있어 전체 흐름을 재현하기 쉽게 구성되어 있습니다.
구조와 흐름
src/tracepoint/EventLogger.cpp는 버퍼를 모아openlog/closelog로 syslog에 CEF 메시지를 전송합니다.src/tracepoint/tracepoint.cpp는 정책 파일을 읽고 Docker PID를 찾은 뒤 pid namespace를 키로 하는 컨테이너 매핑을 갱신합니다.src/tracepoint/container_pid_id.cpp는 pid namespace와 container id를 연결하는 전역 맵을 둡니다.src/tracepoint/handler.cpp는 이벤트를 가공할 때 namespace 맵을 조회해 container name을 붙입니다.src/tracepoint/README.md에는 syslog 적용 시handler.cpp를handler_syslog.cpp로 바꿔야 한다는 안내가 있습니다.src/lsm/enforcement.cpp는pqxx를 통해pgmq.send('lsm', ...)형태로 이벤트를 Postgres 큐에 넣습니다.
주요 파일
src/tracepoint/EventLogger.cpp- CEF 포맷 생성과 syslog 전송src/tracepoint/tracepoint.cpp- pid namespace 기반 컨테이너 매핑 갱신src/tracepoint/container_pid_id.cpp- namespace-to-container id 맵 정의src/tracepoint/handler.cpp- 이벤트에 container name과 네트워크 정보를 부여src/tracepoint/README.md- syslog handler 전환 메모src/lsm/enforcement.cpp- pqxx 기반 LSM 이벤트 큐잉docker_example/docker-compose.yml- rsyslog, Postgres, ebpf tracepoint 실행 구성
포트폴리오 메모
제가 보기에는 이 레포는 “컨테이너 귀속 정보가 붙은 syscall 로그를 syslog와 큐에 각각 흘릴 수 있다”는 점이 핵심입니다. 다만 tracepoint, syslog, LSM, Docker 연동이 한 레포에 같이 들어 있어 배포 경계를 한 문장으로 정리해 두는 편이 좋습니다.