관리 메뉴

피터의 개발이야기

TinyStatus란, 간단하고 가벼운 상태 페이지 만들기 본문

DevOps

TinyStatus란, 간단하고 가벼운 상태 페이지 만들기

기록하는 백앤드개발자 2024. 11. 17. 23:46
반응형

ㅁ 들어가며

 오늘은 GitHub에서 인기를 얻고 있는 TinyStatus 프로젝트를 소개하고, 이를 이용해 간단한 상태 페이지를 만드는 방법을 알아보겠다. TinyStatus는 복잡한 설정 없이 빠르게 서비스 상태 페이지를 만들 수 있는 도구다.

 

ㅁ TinyStatus란?

TinyStatus는 단일 HTML 파일로 구성된 경량 상태 페이지 생성기다.

ㅇ 단일 HTML 파일로 구성

ㅇ JavaScript나 서버 사이드 코드 불필요

ㅇ 사용자 정의가 쉬운 간단한 구조

ㅇ 반응형 디자인으로 모바일 지원

ㅇ 다크 모드 지원

 

ㅁ TinyStatus 로컬 세팅

ㅇ 맥북이나 서버에 소스를 다운 받아 설치 및 실행 할 수 있다.

# 소스 다운로드 및 폴더이동
$ git clone https://github.com/harsxv/tinystatus.git
$ cd tinystatus

# 의존 패치키 설치
$ pip install -r requirements.txt

ㅇ 기본적인 TinyStatus 설치가 완료되었다.

 

# 커스텀 설정
$ cat .env
MONITOR_CONTINOUSLY=True
CHECK_INTERVAL=30
MAX_HISTORY_ENTRIES=100
LOG_LEVEL=INFO
CHECKS_FILE=checks.yaml
INCIDENTS_FILE=incidents.md
TEMPLATE_FILE=index.html.theme
HISTORY_TEMPLATE_FILE=history.html.theme
STATUS_HISTORY_FILE=history.json
HTML_OUTPUT_DIRECTORY=/var/www/htdocs/status/

ㅇ .env을 작성하여 커스텀 작성을 행할 수 있다.

 

 - title: 'Group 1'
   checks:
     - name: GitHub Home
       type: http
       host: https://github.com
       url: https://docs.github.com/en
       expected_code: 200

     - name: Google Public DNS
       type: ping
       host: 8.8.8.8

     - name: Dummy MySQL Database
       type: port
       host: db.example.com
       port: 3306

    - name: Home Server with Self-Signed Certs
       type: http
       host: https://homeserver.local
       ssc: True
       expected_code: 200

ㅇ checks.yaml에  체크 대상을 설정한다.

 

python tinystatus.py

ㅇ 파이썬 실행한다.

 

ㅇ 정상적으로 작동하면 아래의 3개 파일이 생성된다.

 

ㅇ index.html: The main status page

 

ㅇ history.html: The status history page

 

ㅇ history.json: The status history and timestamp data

 

ㅁ TinyStatus 도커 세팅

# 소스 다운로드
git clone https://github.com/harsxv/tinystatus.git
cd tinystatus

# docker 빌드
docker build -t tinystatus .

# docker만 실행 시 nginx 실행 시 생략
docker run -ti --rm --name tinystatus -v "$PWD":/usr/src/myapp -w /usr/src/myapp tinystatus

 

 

ㅁ nginx 세팅

services:
  tinystatus:
    image: tinystatus
    container_name: tinystatus
    volumes:
      - .:/usr/src/myapp
    working_dir: /usr/src/myapp
    tty: true
    stdin_open: true
    environment:
      - TZ=Asia/Seoul
  nginx:
    image: nginx
    depends_on:
      - tinystatus
    container_name: my-nginx
    ports:
      - "8080:80"
    volumes:
      - ./index.html:/usr/share/nginx/html/index.html:ro
      - ./history.html:/usr/share/nginx/html/history.html:ro
      - ./history.json:/usr/share/nginx/html/history.json:ro
      - ./assets:/usr/share/nginx/html/assets:ro

ㅇ tinystatus를 우선 실행하고, 생성된 html을 참조하여 nginx를 구동한다.

 

ㅁ 마무리

TinyStatus는 간단하고 빠르게 서비스 상태 페이지를 만들 수 있는 훌륭한 도구다. 복잡한 설정이나 서버 사이드 코드 없이도 professional한 모양의 상태 페이지를 만들 수 있다는 점이 큰 장점이다. 작은 프로젝트나 개인 서비스의 경우 TinyStatus만으로도 충분할 수 있다.

 

ㅁ 함께 보면 좋은 사이트

tinystatus git

반응형
Comments