개인용으로나 상업용으로나 서비스의 상태를 지속적으로 확인하는 솔루션들은 대체로 유료가 많습니다. 별로 어렵지 않은 기능이지만, 많은 엔드포인트를 관리하는 것은 결코 쉽지 않기 때문에 https://healthchecks.io 와 같은 서비스도 등장할 수 있었습니다. 하지만, 비용이 부담된다면 결국 오픈소스를 찾게 되는데요. Uptime-Kuma는 이러한 사용자를 겨냥하여 등장한 오픈소스 모니터링 툴입니다.
기본적으로 http(s), tcp, ping, dns와 같이 다양한 엔드포인트에 대해서 Health Check를 할 수 있으며, 기본 웹훅과 더불어 수십가지의 소프트웨어에 알림 기능을 연동할 수 있습니다.
글을 작성하는 현재, 18k의 Star를 얻은 상태로 다양한 기능 요청과 이슈, 개발이 빠르게 진행되고 있습니다. 사용 방법도 매우 간단해서 아래의 도커 명령을 통해 손쉽게 사용해볼 수 있습니다.
docker run -d --restart=always -p 3001:3001 --name uptime-kuma louislam/uptime-kuma:latest
Code language: Bash (bash)
현재는 외부 데이터베이스 연동 없이 SQLite를 사용하기 때문에 데이터베이스 파일을 유지하기 위해서 볼륨 바인드를 추가하는 것이 좋습니다. 그래서 아래와 같은 docker-compose.yml
파일을 사용하는 것도 좋습니다.
services:
kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
ports:
- 3001:3001
volumes:
- ./data:/app/data
restart: always
Code language: YAML (yaml)
docker compose up -d
Code language: Bash (bash)
서비스를 최초로 실행하고 http://localhost:3001로 접속하시면, 관리자 계정을 설정하도록 하고 있습니다. 이후에는 앞서 업로드한 이미지처럼 바로 모니터링 대시보드를 확인할 수 있습니다. 참 쉽네요. 😀
모니터링을 등록하고 나서 텔레그램 알림도 연동을 해봤는데, 다운된 서버가 복구되면서 위와 같이 알림도 잘 전달하고 있습니다. 다양한 알림 설정이 준비되어 있기 때문에 왠만하면 원하는 소프트웨어로 알림을 전달받으실 수 있을 것으로 기대됩니다.
기여하기
알림 타입을 살펴보다 보니까 회사에서 제공하는 솔루션이 들어가면 좋겠다는 생각이 문득 들었습니다. 그래서 간단하게 코드 추가를 하고 PR을 날려봅니다.
로컬 테스트시에 정상 동작하는 것을 확인하였고, PR 사전 리뷰 요청사항들도 모두 완수했으니까 곧 머지될 것으로 기대합니다! 그 밖에도 정말 많은 이슈들이 올라오던데, 이번 기회에 오픈소스 기여를 좀 해봐야겠네요.