uptime kuma
간단한 시스템 모니터링 소프트웨어. 보통 모니터링으로 유명한 건 prometheus + grafana 조합으로 어느정도 표준화되어 있지만, 간단하게 시스템 상황만 모니터링하고 알림을 받기에는 uptime kuma도 꽤 괜찮은 솔루션이다.
https://github.com/louislam/uptime-kuma
- 쉬운 설치 및 사용: 복잡한 설정 없이 빠르게 구축하고 직관적인 대시보드에서 모니터링할 수 있습니다.
- 다양한 모니터링 방식: HTTP/HTTPS, TCP, Ping, DNS, Keyword 등 여러 프로토콜로 서비스 상태를 점검합니다.
- 알림 연동: 서비스 장애 시 슬랙(Slack), 디스코드(Discord), 텔레그램(Telegram), 이메일 등으로 즉시 알림을 받을 수 있습니다.
- SSL 인증서 관리: SSL 인증서 만료일을 미리 알려주어 보안 관리를 돕습니다.
- 자체 호스팅 (Self-Hosted): 직접 서버에 설치하여 운영하므로 데이터 프라이버시를 지키며 무료로 사용할 수 있습니다.
- 간편한 대시보드: 깔끔하고 사용자 친화적인 UI로 서비스 상태를 한눈에 파악할 수 있습니다.
- 모바일 앱 지원: Uptime Kuma Manager 앱 등을 통해 스마트폰에서도 쉽게 모니터링할 수 있습니다.
간단하게 docker compose를 다음과 같이 작성하면 된다. (주석 부분은 traefik을 사용했을때 쓰는 부분)
services:
uptime-kuma:
container_name: uptime-kuma
image: louislam/uptime-kuma:2
restart: unless-stopped
volumes:
- ./data:/app/data
ports:
- "3001:3001"
environment:
- PUID=1000
- PGID=1000
#labels:
# - "traefik.enable=true"
# - "traefik.http.routers.uptimekuma.rule=Host(`monitor.neue.nz`)"
# - "traefik.http.routers.uptimekuma.entrypoints=websecure"
# - "traefik.http.routers.uptimekuma.tls=true"
# - "traefik.http.routers.uptimekuma.tls.certresolver=letsencrypt"
# - "traefik.http.services.uptimekuma.loadbalancer.server.port=3001"
#networks:
# - proxy
#networks:
# proxy:
# external: true
대부분의 사이트 추가, 알림 설정은 앱을 구동하고 적용하면 된다.
기본적으로 admin 은 로그인 후 대시보드에서 사이트 추가, 설정 작업을 할 수 있고,
매번 로그인하는 것도 귀찮기 때문에 (보통은 로그인을 아예 비활성화하고 traefik에서 OIDC middleware를 사용하여 공통으로 로그인하게 구현) 로그인하지 않은 상태에서 status 페이지를 볼 수 있게 설정할 수도 있다.
간단한 모니터링 소프트웨어라고 했지만, 굉장히 많은 설정으로 사이트의 상태 체크가 가능하다. login 하지 않으면 볼 수 없는 사이트 등도 인증 설정을 해서 로그인 후의 사이트 모니터링도 가능
공통 알림도 설정할 수 있다. 여기서는 현재 사용하는 gotify만 설정했지만 꽤 다양한 옵션이 있다.
- 대시보드 디자인이 개인 취향에 맞는다.
- 터미널에서 일일히 docker compose, config 파일 등을 편집하는 것은 싫고 웹에서 설정하는 게 취향이다.
- 각 서버마다 prometheus exporter 등을 설치해서 관리하는 것, 복잡한 grafana 대시보드 등의 설정이 크게 필요하지 않다.
이정도라면 uptime kuma는 기본적인 홈랩 모니터링 소프트웨어로 충분하다.