Netdata - 실시간 성능 모니터링 치트시트
Netdata는 거의 영점 구성으로 초당 수천 개의 메트릭을 수집하고 라이브 웹 대시보드(기본 포트 19999)에서 시각화하는 오픈 소스 모니터링 에이전트입니다. 800개 이상의 수집기를 통해 서비스(데이터베이스, 웹 서버, 컨테이너, Kubernetes)를 자동 감지하고 이상 감지 및 내장 경고 엔진을 제공합니다.
설치
| 방법 | 명령어 |
|---|
| 범용 kickstart | wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh |
| curl 변형 | curl https://get.netdata.cloud/kickstart.sh > /tmp/k.sh && sh /tmp/k.sh |
| Debian/Ubuntu pkg | sudo apt install netdata |
| Fedora/RHEL pkg | sudo dnf install netdata |
| Docker | docker run -d --name=netdata -p 19999:19999 --cap-add SYS_PTRACE netdata/netdata |
| Helm (Kubernetes) | helm install netdata netdata/netdata |
설치 후 http://localhost:19999 (또는 서버의 IP)를 엽니다.
서비스 관리
| 명령어 | 설명 |
|---|
sudo systemctl start netdata | 에이전트 시작 |
sudo systemctl enable netdata | 부팅 시 시작 |
sudo systemctl restart netdata | 재시작 (설정 변경 적용) |
sudo systemctl status netdata | 상태 확인 |
sudo journalctl -u netdata -f | 에이전트 로그 추적 |
netdatacli reload-health | 전체 재시작 없이 알람 다시 로드 |
netdatacli reload-labels | 호스트 라벨 다시 로드 |
netdatacli shutdown-agent | 에이전트 정상 중지 |
설정
항상 edit-config 래퍼로 설정을 편집합니다. 이는 /usr/lib/netdata/conf.d에서 /etc/netdata로 파일을 복사하므로 업그레이드가 덮어쓰지 않습니다.
cd /etc/netdata
sudo ./edit-config netdata.conf # main agent config
sudo ./edit-config health_alarm_notify.conf # notifications
sudo ./edit-config go.d.conf # enable/disable Go collectors
설정 (netdata.conf) | 용도 |
|---|
[global] update every = 1 | 초 단위 수집 간격 |
[global] history / dbengine | 보존 / 온디스크 데이터베이스 계층 크기 |
[web] bind to = * | 대시보드가 수신하는 네트워크 인터페이스 |
[web] default port = 19999 | 대시보드 포트 |
[plugins] | 전체 플러그인 그룹 토글 켜기/끄기 |
수집기 (플러그인)
| 작업 | 방법 |
|---|
| 수집기별 설정 파일 나열 | cd /etc/netdata && sudo ./edit-config go.d/CONFIG.conf |
| 모듈 활성화 (예: nginx) | sudo ./edit-config go.d/nginx.conf 후 상태 URL 가리킴 |
| Go 수집기 디버그 | sudo /usr/libexec/netdata/plugins.d/go.d.plugin -d -m nginx |
| 일반적인 자동 감지 모듈 | nginx, apache, mysql, postgres, redis, docker, systemd units, disks, network, sensors |
상태 및 알람
알람 정의는 /etc/netdata/health.d/*.conf에 있습니다.
cd /etc/netdata
sudo ./edit-config health.d/cpu.conf # tweak a built-in alarm
netdatacli reload-health # apply
| 명령어 | 설명 |
|---|
curl http://localhost:19999/api/v1/alarms?all | 모든 알람 및 현재 상태 나열 (JSON) |
curl http://localhost:19999/api/v1/info | 에이전트 정보, 버전, 수집기 |
health_alarm_notify.conf 편집 | 이메일, Slack, PagerDuty, Discord 등 연결 |
유용한 API 끝점
| 끝점 | 반환값 |
|---|
/api/v1/charts | 노드의 모든 사용 가능한 차트 |
/api/v1/data?chart=system.cpu | 차트의 시계열 데이터 |
/api/v1/allmetrics?format=prometheus | Prometheus용 스크래이프 대상 |
/api/v1/badge.svg?chart=system.cpu&value_color=green | 포함 가능한 상태 배지 |
Netdata Cloud (선택 사항)
# 노드를 Netdata Cloud에 연결(요청)하여 다중 노드 대시보드
sudo netdata-claim.sh -token=YOUR_TOKEN -rooms=ROOM_ID -url=https://app.netdata.cloud
이를 요청하지 않으면 에이전트는 독립 실행형으로 계속 완전히 작동합니다. Cloud는 교차 노드 뷰 및 중앙 집중식 경고만 추가합니다.
일반적인 워크플로우
# 셸에서 빠른 상태 확인
curl -s http://localhost:19999/api/v1/alarms | jq '.alarms | keys'
# 기존 Prometheus 스택에 메트릭 노출
curl -s 'http://localhost:19999/api/v1/allmetrics?format=prometheus' | head
# 작은 VM에서 CPU/디스크 사용량 감소 (netdata.conf)
# [global] update every = 2
# [db] mode = ram # keep metrics in memory only
# 보존 감소하되 초당 세분성 유지, 후 다시 로드
sudo systemctl restart netdata
Netdata vs Prometheus + Grafana
| 측면 | Netdata | Prometheus + Grafana |
|---|
| 설정 | 분 단위, 자동 감지 | 수동 내보내기 + 대시보드 |
| 세분성 | 기본값으로 초당 | 일반적으로 15초 스크래이프 |
| 저장소 | 로컬 계층화 db (dbengine) | 중앙 TSDB |
| 최적 용도 | 단일 노드 깊이, 빠른 분류 | 큰 플릿, 장기 쿼리 |
| 상호운용성 | Prometheus 형식 내보내기 | Netdata 스크래이프 가능 |
자료