Uptime Kuma로 웹사이트 및 애플리케이션 인프라 모니터링 [Self-Hosted Solution]

웹사이트 및 애플리케이션 가동 시간 모니터링의 중요성

온라인 서비스, 웹사이트 또는 애플리케이션의 안정적인 가동 시간은 매우 중요합니다. 업무상 필수적인 시스템이든 개인적인 용도의 애플리케이션이든, 다운타임은 사용자에게 다양한 방식으로 부정적인 영향을 미칠 수 있습니다. 따라서 웹사이트나 애플리케이션의 가동 시간을 지속적으로 확인하는 것이 필수적입니다.

많은 온라인 서비스가 가동 시간 모니터링 기능을 제공하지만, 자체 서버에서 직접 호스팅할 수 있는 옵션은 제한적입니다. 만약 자체 호스팅 계획 없이 편리한 방법으로 가동 시간을 모니터링하고 싶다면, 대부분의 상용 서비스가 충분한 도움을 줄 수 있습니다.

하지만, 자체 호스팅을 고려한다면 선택할 수 있는 대안은 많지 않습니다. 다행히 오픈 소스 자체 호스팅 모니터링 도구인 Uptime Kuma는 매력적인 대안이 될 수 있습니다.

본 글에서는 Uptime Kuma의 기능과 설치 방법, 그리고 사용법에 대한 자세한 안내를 제공합니다.

Uptime Kuma 개발팀은 GitHub 페이지에서 이 프로젝트가 “Uptime Robot”의 자체 호스팅 대안을 제공하는 것을 목표로 한다고 밝혔습니다.

Uptime Robot은 뛰어난 가동 시간 모니터링 서비스 중 하나이지만, 자체 호스팅이 불가능하며 무료 요금제에서는 모니터링 기능이 제한됩니다.

이러한 점에서 Uptime Kuma는 자체 호스팅 모니터링 도구로서 완벽한 대안이 될 수 있습니다. 그럼 이제 Uptime Kuma가 제공하는 기능을 살펴보겠습니다.

자체 호스팅 가동 시간 솔루션을 사용하면 다음과 같은 다양한 이점을 누릴 수 있습니다:

  • 데이터에 대한 완벽한 제어
  • 알림 방식의 사용자 정의
  • 더 적은 비용으로 더 많은 기능 활용
  • 자체 관리 기술 습득
  • 내부 서비스를 외부 네트워크 노출 없이 모니터링

자체 호스팅 플랫폼에는 어느 정도의 기술적인 지식이 필요하지만, 시간이 지남에 따라 관리가 더욱 쉬워지고 있습니다. 이 가이드의 지침을 따라하면 처음 사용자도 쉽게 설치하고 몇 분 안에 인스턴스를 배포할 수 있습니다.

Uptime Kuma 주요 기능

Uptime Kuma는 HTTP/S, TCP, DNS 등 다양한 프로토콜을 통해 서비스를 모니터링할 수 있습니다. 주요 기능은 다음과 같습니다:

  • 다크/라이트 모드 및 시스템 설정에 따른 자동 테마 변경
  • 정확한 가동 시간 모니터링을 위한 시간대 설정 기능
  • Linode Marketplace를 통한 간편한 배포
  • Telegram, Discord, Signal, Rocket.Chat, Slack, Microsoft Teams, Google Chat, Matrix 등 다양한 플랫폼 알림 지원
  • 모니터링 기록 보관 기간 설정
  • 기록 데이터베이스 최적화/축소 기능
  • 이중 인증을 통한 모니터링 계정 보호
  • 알림 및 모니터링 데이터 내보내기/가져오기 기능
  • 별도의 상태 페이지 제공
  • 핑 차트
  • 다국어 지원
  • 스팀 게임 서버 지원
  • 새로운 모니터 또는 모든 모니터에 간편하게 알림 적용

웹사이트 및 애플리케이션 인프라 모니터링을 위한 Uptime Kuma 구성 방법

이 글에서는 Linode를 Uptime Kuma 인스턴스 호스팅 플랫폼으로 사용하겠습니다.

Linode에서 클라우드 호스팅 솔루션을 시작하는 것은 매우 쉽습니다. Uptime Kuma는 마켓플레이스에서 바로 이용 가능합니다.

따라서 수동으로 설정할 필요 없이, 요구 사항에 따라 구성 값만 설정하면 Uptime Kuma 인스턴스가 즉시 실행됩니다.

이제, 그 방법을 자세히 살펴보겠습니다.

1단계. Linode 인스턴스 생성 시 Linode 마켓플레이스로 이동합니다.

2단계. 목록 하단으로 스크롤하면 등록된 애플리케이션 목록에서 “Uptime Kuma”를 찾을 수 있습니다. 발견했다면 클릭합니다.

3단계. 선택 후에는 작동을 위해 구성해야 하는 아래 옵션에 접근할 수 있습니다.

각 필드를 저장하거나 안전한 곳에 복사할 수 있는 값으로 채우는 것이 좋습니다. 특히 루트 사용자의 비밀번호는 더욱 그렇습니다.

암호 관리자를 사용하거나 다른 안전한 곳에 기록해 두는 것이 좋습니다.

이메일 주소의 경우, Uptime Kuma를 설정하려는 특정 도메인이 있다면, 해당 도메인 이름의 이메일 주소를 사용하는 것이 좋습니다.

다른 이메일을 선택할 수도 있지만, SSL 인증서 설치를 위해서는 도메인의 이메일 주소를 사용하는 것이 좋습니다. 만약 도메인의 이메일을 구성하지 않았다면, 사용 가능한 최고의 이메일 호스팅 서비스를 알아보는 것이 좋습니다.

4단계. Linode 내부에서 테스트하려는 경우에는 도메인 값을 무시해도 됩니다.

하지만 도메인에 Uptime Kuma 인스턴스를 설정하려면 Linode API 토큰을 생성해야 합니다. 이 토큰은 다른 클라우드 공급자를 사용하여 서버 생성/관리 등 다양한 작업에 유용하게 사용할 수 있습니다.

도메인을 추가하는 것은 필수입니다. SSH 루트 접근의 경우, 서버에 원격으로 쉽게 연결하고 싶다면 활성화된 상태로 유지할 수 있지만, 필요하지 않으면 비활성화해도 됩니다.

5단계. 다음으로 이미지(서버용)를 선택해야 합니다. 기본적으로 Ubuntu의 최신 LTS 버전이 선택되어야 하며, 안타깝게도 마켓플레이스를 통해 설정할 때는 변경할 수 없습니다. 만약 처음부터 서버를 설정하기로 결정했다면, 공식적으로 Uptime Kuma에서 지원하는 Debian 11을 선택할 수도 있습니다.

6단계. 위치를 선택할 때는 해당 위치에서 가장 빠른 응답 시간/접근 시간을 얻을 수 있는 위치를 선택합니다.

7단계. 마지막으로 Uptime Kuma와 원활하게 작동하도록 선호하는 Linode 플랜을 선택해야 합니다.

가장 저렴한 플랜을 선택할 수 있지만, 중요한 항목들을 모니터링해야 한다면 더 나은 리소스를 사용하는 것이 좋습니다.

8단계. 설정을 완료하려면 서버에 대한 관리자 액세스를 위한 루트 암호를 설정해야 합니다. SSH를 통해 액세스하도록 SSH 키를 설정할 수도 있습니다.

VLAN을 설정할 수도 있지만 특정 사용자 그룹에 맞춰 조정됩니다. 따라서 VLAN 사용이 필요한지 확인해 보는 것이 좋습니다.

9단계. 선택적으로 추가 비용을 지불하고 자동 백업을 선택할 수 있습니다. 물론 Uptime Kuma를 설치한 후 수동으로 데이터를 내보낼 수도 있지만 자동 백업을 사용하면 편리합니다. 모니터링 통찰력이 중요한 경우에는 백업이 필수적입니다.

이제 Uptime Kuma가 설치된 Linode 인스턴스를 생성할 수 있습니다.

설치 후 Uptime Kuma 접근 방법

도메인이 이미 구성되어 있다면 처음 접근하는 것이 매우 쉽습니다. 도메인 이름(HTTP//:domain.com)을 입력하면 Uptime Kuma 설정 화면이 나타나야 합니다.

다음과 같이 표시됩니다:

사용자를 생성하면 대시보드로 리디렉션되며, 여기에서 웹사이트나 애플리케이션 모니터 생성을 시작할 수 있습니다.

또한 시스템 기본 설정에 따라 완전히 검은색(다크 모드 테마 적용)으로 보일 수도 있습니다.

Linode 인스턴스와 연결된 도메인을 구성하지 않은 경우 다음 형식으로 Linode의 서버 IP를 사용하여 접근할 수 있습니다:

https://LINODESERVERIP.ip.linodeusercontent.com/

예를 들어, 테스트 서버의 경우 다음과 같이 접근할 수 있습니다:

https://170-187-200-29.ip.linodeusercontent.com/add

여기서 Linode 서버 IP는 170.187.200.29입니다.

위의 URL을 사용하여 접근할 수는 있지만 (테스트 후 인스턴스를 삭제했습니다) 인스턴스 주소를 통해 접근할 때는 보안 프로그램과 브라우저에서 의심스러운 것으로 간주하여 악성코드 경고가 나타날 수 있습니다. 해당 경고를 무시하고 Uptime Kuma 설정을 진행할 수 있습니다.

결과적으로 사용자 계정을 설정한 후 웹사이트나 앱 모니터 생성을 시작할 수 있습니다.

Uptime Kuma에 모니터 추가 방법

대시보드에서 모니터 추가를 시작하려면 “새 모니터 추가”를 클릭해야 합니다.

모니터 옵션은 아래와 같이 동일한 페이지에 나타납니다:

모니터링할 대상이 웹사이트, DNS, 게임 서버, TCP 포트인지 등, 모니터 유형을 선택해야 합니다.

필요한 경우 알림을 설정할 수 있습니다. 많은 옵션을 사용할 수 있지만, 텔레그램 채널 알림 설정의 예시는 다음과 같습니다:

테스트에서는 koreantech.org의 가동 시간을 확인하기 위해 필수적인 HTTP 모니터링을 진행했습니다. 그래서 제가 선택한 옵션은 다음과 같습니다:

  • 모니터링 유형: HTTP
  • 웹사이트 URL
  • 30초 간격 (사용자 정의)

기본적으로 간격은 60초로 설정되어 있지만, 모니터링 간격을 더 늘리거나 줄일 수 있습니다. 또한 GET, POST, HEAD 및 기타 방법을 사용하여 HTTP 인증 및 액세스 HTTP(S) 페이지에 대한 고급 옵션을 사용할 수 있습니다.

TLS/SSL 오류가 있는 경우 이를 무시하도록 모니터를 설정할 수도 있습니다.

최대 리디렉션은 10으로 설정됩니다. 하지만 특정 페이지 또는 URL을 모니터링하고 싶을 때, 리디렉션을 따라가지 않도록 0으로 유지하는 것이 좋습니다.

필요한 알림과 함께 모든 설정을 완료했다면, 구성을 저장하여 모니터를 추가합니다. 잠시 후 모니터링 결과는 다음과 같이 표시됩니다:

데이터에는 응답 시간(최신), 평균 응답 시간, 가동 시간 및 SSL 인증서 정보가 포함됩니다.

또한 메뉴에는 “상태” 페이지가 있어 모든 모니터에 대한 개요를 제공하고, 최근 사건에 대한 알림/메시지를 추가할 수 있습니다.

상태 페이지는 백엔드 인프라의 최신 정보를 확인하려는 모든 사용자/고객에게 유용합니다. 상태 페이지 링크를 공유하기만 하면 되며, 사용자 인증 없이 모든 공개 페이지에 접근할 수 있습니다.

일반적으로 HTTP://domain.com/status와 같이 접근할 수 있습니다.

Uptime Kuma: 안정적인 자체 호스팅 옵션

이 글에서 소개한 Linode 외에도 Docker 또는 비 Docker 설정을 사용하여 수동으로 설치할 수도 있습니다. 프로젝트의 추가 설치 지침(예: 역방향 프록시 사용)에 대한 모든 필요한 정보는 GitHub 페이지에서 확인할 수 있습니다.

따라서 모니터링 도구의 모든 필수 기능과 함께 다양한 설치 가능성을 제공합니다. 이보다 더 많은 것을 바랄 수 있을까요?

대부분의 사용 사례에 이상적인 모니터링 도구가 될 것입니다. 아직 사용해보지 않았다면 지금 바로 시도해 보세요!