모니터링¶
대시보드¶
- Grafana:
https://logging.sjanglab.org(익명 Viewer 접근 가능, wg-admin 경유) - Gatus:
https://gatus.sjanglab.org(외부 상태 페이지)
스택 구성¶
flowchart LR
subgraph hosts["각 호스트"]
vec["Vector"]
end
subgraph rho["rho"]
prom["Prometheus"]
loki["Loki"]
graf["Grafana"]
end
subgraph eta["eta"]
gatus["Gatus"]
end
ntfy["ntfy (알림)"]
vec -- "메트릭" --> prom
vec -- "로그" --> loki
prom --> graf
loki --> graf
hosts -- "헬스체크 Push" --> gatus
gatus --> ntfy
graf --> ntfy
Vector (로그/메트릭 수집)¶
모든 호스트에서 실행됩니다:
| 수집 대상 | 전송처 | 주기 |
|---|---|---|
| sshd 로그 | Loki (rho:3100) | 실시간 |
| auditd 로그 | Loki (rho:3100) | 실시간 |
| 호스트 메트릭 | Prometheus (rho:9090) | 60초 |
Prometheus (rho)¶
- 리텐션: 30일
- Remote write receiver 활성화
- Alert rules: SSH 브루트포스, 디스크 부족, 메모리 부족, 높은 CPU, 노드 다운
Loki (rho)¶
- 리텐션: 7일
- 스토리지: 로컬 파일시스템 (
/var/lib/loki)
Gatus (eta)¶
- Pull 방식: 외부 접근 가능한 서비스 (Authentik, Headscale 등)
- Push 방식: 내부 서비스가 주기적으로 상태 보고
- 알림: ntfy (
ntfy.sjanglab.org, 토픽:gatus)