Scouter Host Agent의 Go 구현체입니다. 호스트 시스템의 CPU, 메모리, 디스크, 네트워크 메트릭을 수집하여 Scouter Collector 서버로 전송하는 경량 모니터링 에이전트입니다.
Java 버전의 scouter.agent.host를 Go로 포팅한 프로젝트입니다.
- CPU 사용률 (전체/시스템/사용자)
- 메모리 사용률 및 용량
- Swap 사용률
- 네트워크 I/O (인터페이스별 RX/TX bytes/sec)
- 디스크 I/O (디바이스별 Read/Write bytes/sec)
- TCP 연결 상태 (ESTABLISHED, TIME_WAIT, FIN_WAIT 등)
- 프로세스별 CPU 모니터링 (
.scouter레지스트리 연동) - CPU/메모리/디스크 임계값 알림
- 설정 파일 Hot-Reload (3초 간격)
- TCP를 통한 서버 RPC 처리 (HOST_TOP, HOST_DISK_USAGE, 설정 조회/변경 등)
# 빌드 make build # 빌드 후 실행 make run # 크로스 컴파일 (linux/darwin/windows, amd64/arm64) make build-all # 테스트 make test
conf/scouter.conf 파일에서 설정합니다.
### Network net_collector_ip=127.0.0.1 #net_collector_udp_port=6100 #net_collector_tcp_port=6100 #net_collector_tcp_session_count=1 ### Object #obj_type= #obj_name= ### Counter #counter_enabled=true #counter_object_registry_path=/tmp/scouter ### Logging #log_dir=./logs #log_rotation_enabled=true #log_keep_days=365 ### Alert - CPU #cpu_alert_enabled=true #cpu_warning_pct=70 #cpu_fatal_pct=90 ### Alert - Memory #mem_alert_enabled=false #mem_warning_pct=80 #mem_fatal_pct=90 ### Alert - Disk #disk_alert_enabled=true #disk_warning_pct=70 #disk_fatal_pct=90
./dist/scouter-agent-host
종료 방법:
SIGINT(Ctrl+C) 또는SIGTERM시그널- PID 파일 (
{pid}.scouter) 삭제 시 자동 종료
scouter-agent-host-go/
├── cmd/scouter-agent-host/ # 엔트리 포인트
├── internal/
│ ├── config/ # 설정 관리 (hot-reload)
│ ├── logger/ # 파일 로깅 (날짜 로테이션)
│ ├── protocol/ # Scouter 바이너리 프로토콜
│ │ ├── pack/ # Pack 타입 (ObjectPack, PerfCounterPack 등)
│ │ └── value/ # Value 타입 (MapValue, DecimalValue 등)
│ ├── counter/ # 카운터 수집 시스템
│ │ ├── meter/ # 슬라이딩 윈도우 메트릭 집계
│ │ └── task/ # 수집 태스크 (HostPerf, NetDisk, Heartbeat, ProcPerf)
│ └── netio/ # 네트워크 I/O
│ ├── data/ # UDP 전송 (카운터, 하트비트, 알림)
│ ├── tcp/ # TCP 세션 관리 (서버 RPC)
│ └── request/handler/ # RPC 핸들러 (HOST_TOP, DISK_USAGE, 설정 등)
├── conf/scouter.conf # 설정 파일
├── Makefile
└── go.mod
| 카운터 | 설명 |
|---|---|
| Cpu, SysCpu, UserCpu | CPU 사용률 |
| Mem, MemT, MemU, MemA | 메모리 (%, 전체, 사용, 가용 MB) |
| Swap, SwapT, SwapU | Swap (%, 전체, 사용 MB) |
| NetInBound, NetOutBound | 네트워크 수신/송신 bytes |
| NetRxBytes, NetTxBytes | 인터페이스별 네트워크 bytes/sec |
| DiskReadBytes, DiskWriteBytes | 디스크 Read/Write bytes/sec |
| TcpStatEST, TcpStatTIM, TcpStatFIN, TcpStatCLS | TCP 연결 상태 |
| ProcCpu | 프로세스별 CPU 사용률 |
- Go 1.26+
- Scouter Collector 서버 (scouter-server-go 또는 Java 서버)
Apache License 2.0