단북 2021. 9. 11. 20:06

최근에 강력하고 간단한 Uptime KumaSynthetic Monitoring을 알게 돼서 간단히 설치와 사용법을 공유해보려고 한다.

Install (Docker)

$ docker volume create uptime-kuma
uptime-kuma
$ docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
Unable to find image 'louislam/uptime-kuma:1' locally
...
Status: Downloaded newer image for louislam/uptime-kuma:1
$ docker ps -a
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                            PORTS                    NAMES
936f15ba50ad        louislam/uptime-kuma:1   "docker-entrypoint.s…"   7 seconds ago       Up 6 seconds (health: starting)   0.0.0.0:3001->3001/tcp   uptime-kuma

Usage

- 설치 후 기본 주소인 http://localhost:3001 번 주소로 접속하면 기본적인 admin 계정 생성을 한다.
(참고로 한국어도 최근에 추가 됐다.)

Uptune Kuma 초기화면

- Add New Monitor 버튼을 눌러 모니터링 정보를 입력하고 저장을 한다.

Monitring add

- 간단하고 강력하게 Synthetic Monitoring이 완료된다.

Monitoring 화면

- Prometheus와 통합도 가능하도록 설계되었다.
방법은 초기에 설정한 admin 계정 정보를 HTTP Basic Auth로 넣어서 http://$uptime_kuma_address/metrics를 호출해주면 된다.

$ curl -u alinos:test http://localhost:3001/metrics # HELP monitor_cert_days_remaining The number of days remaining until the certificate expires # TYPE monitor_cert_days_remaining gauge monitor_cert_days_remaining{monitor_name="alinos blog",monitor_type="http",monitor_url="https://www.alinos.kr",monitor_hostname="null",monitor_port="null"} 61 # HELP monitor_cert_is_valid Is the certificate still valid? (1 = Yes, 0= No) # TYPE monitor_cert_is_valid gauge monitor_cert_is_valid{monitor_name="alinos blog",monitor_type="http",monitor_url="https://www.alinos.kr",monitor_hostname="null",monitor_port="null"} 1 # HELP monitor_response_time Monitor Response Time (ms) # TYPE monitor_response_time gauge monitor_response_time{monitor_name="alinos blog",monitor_type="http",monitor_url="https://www.alinos.kr",monitor_hostname="null",monitor_port="null"} 389 monitor_response_time{monitor_name="1.1.1.1",monitor_type="ping",monitor_url="https://",monitor_hostname="CloudFlare Resolver",monitor_port="null"} -1 monitor_response_time{monitor_name="alinos blog dns",monitor_type="dns",monitor_url="https://",monitor_hostname="www.alinos.kr",monitor_port="null"} 10 monitor_response_time{monitor_name="alinos blog ping",monitor_type="ping",monitor_url="https://",monitor_hostname="www.alinos.kr",monitor_port="null"} 6 # HELP monitor_status Monitor Status (1 = UP, 0= DOWN) # TYPE monitor_status gauge monitor_status{monitor_name="alinos blog",monitor_type="http",monitor_url="https://www.alinos.kr",monitor_hostname="null",monitor_port="null"} 1 monitor_status{monitor_name="1.1.1.1",monitor_type="ping",monitor_url="https://",monitor_hostname="CloudFlare Resolver",monitor_port="null"} 0 monitor_status{monitor_name="alinos blog dns",monitor_type="dns",monitor_url="https://",monitor_hostname="www.alinos.kr",monitor_port="null"} 1 monitor_status{monitor_name="alinos blog ping",monitor_type="ping",monitor_url="https://",monitor_hostname="www.alinos.kr",monitor_port="null"} 1

- Simple한 Quick stats 화면

uptime kuma quick stats

- Notification (Telegram) 설정도 아주 간단하다.

Notification Setup
Telegram Alert Message

Conclusion

Uptime Kuma 자체로도 훌륭한 Synthetic Monitoring 툴인 것 같고, Prometheus Intergraion 이 된다는 게 아주 맘에 들었다.
blackbox exporter는 사실 모니터링을 추가할 때 UI나 API가 없다 보니 config file을 어렵게 수정해야 하는 번거로움이 뒤따랐는데 Uptime Kuma는 충분히 blackbox exporter를 대체할 수 있을 것 같다.
주로 Synthetic monitoringGCP uptime이나 blackbox exporter를 주로 활용했었는데, 이번에 Uptime Kuma를 써보고 너무 간단하게 모니터링을 할 수 있는 부분에 아이디어를 얻고 비슷한 프로젝트를 나도 하고 싶단 생각이 좀 들었다.

https://github.com/louislam/uptime-kuma

GitHub - louislam/uptime-kuma: A fancy self-hosted monitoring tool

A fancy self-hosted monitoring tool. Contribute to louislam/uptime-kuma development by creating an account on GitHub.

github.com