본문으로 건너뛰기

Web 설정 ​

EveryUp Web은 대시보드이자 API 서버입니다. 모니터링 이력을 저장하고, 사용자를 관리하며, Docker Collector 데이터와 OTLP 데이터를 받고, 설정한 알림 규칙에 따라 알림을 보냅니다.

설치 ​

저장소를 복제하지 않고 Compose 파일만 받아 실행할 수 있습니다.

bash
mkdir everyup && cd everyup
curl -O \
https://raw.githubusercontent.com/ai-turn/everyup/main/web/docker-compose.yml
docker compose up -d

브라우저에서 http://<대시보드 서버 IP>:3001(같은 서버라면 http://localhost:3001)을 열고 첫 관리자 계정을 만드세요. 이 Compose 파일은 Web만 실행합니다. 모니터링할 Docker 호스트에는 Quick Start의 안내대로 Docker Collector를 설치하세요.

환경변수 ​

기본 구성은 환경변수 없이 동작합니다. 아래 변수는 운영 배포, 네트워크, 자동화에 필요할 때 지정합니다. 우선순위는 환경변수 > config.json > 기본값입니다.

설정하는 방법 ​

Quick Start의 Compose 파일은 EVERYUP_PUBLIC_URL만 컨테이너에 넘깁니다. 다른 변수는 docker-compose.yml의 environment:에 추가한 뒤 docker compose up -d로 컨테이너를 다시 만드세요.

yaml
services:
  everyup:
    environment:
      EVERYUP_PUBLIC_URL: ${EVERYUP_PUBLIC_URL:-}
      EVERYUP_ENCRYPTION_KEY: ${EVERYUP_ENCRYPTION_KEY}
      EVERYUP_RETENTION_LOGS: 7d

비밀값은 같은 디렉터리의 .env에 두고 ${…}로 참조하면 Compose 파일에 남지 않습니다.

bash
# .env
EVERYUP_ENCRYPTION_KEY=<openssl rand -hex 32 출력값>

서버 ​

  • EVERYUP_PUBLIC_URL
    사용자와 모니터링 대상 서버가 Web에 접속하는 외부 주소. Docker 설치 명령, 직접 OTLP 연결, 인프라 Collector 설정에 사용합니다. 자격증명·쿼리·fragment가 없는 절대 http(s) 주소여야 합니다
  • EVERYUP_SERVER_HOST · 기본값 0.0.0.0
    바인딩 주소
  • EVERYUP_SERVER_PORT · 기본값 3001
    대시보드·API 포트
  • EVERYUP_SERVER_MODE · 기본값 production
    development로 설정하면 상세 에러와 스택 트레이스를 반환합니다
  • EVERYUP_SERVER_ALLOWORIGINS
    CORS 허용 origin. 프론트엔드를 다른 도메인에서 제공할 때 지정합니다(예: https://app.example.com)
  • EVERYUP_DATABASE_PATH · 기본값 ./data/monitoring.db
    SQLite 파일 경로. Docker 이미지는 /app/data를 보존합니다

보안과 계정 ​

  • EVERYUP_ENCRYPTION_KEY · 기본값 자동 생성
    secret(Docker Collector API Key, 알림 채널)을 암호화하는 64자 hex(32바이트) AES 키. 운영 환경에서는 지정하세요. 지정하지 않으면 키를 생성해 데이터 디렉터리에 저장하므로, DB만 복원하면 secret을 풀 수 없습니다 (백업·복원)
  • EVERYUP_ADMIN_USERNAME
    시작할 때 설정 화면 없이 이 이름으로 관리자 계정을 만듭니다(headless 프로비저닝). 이미 있는 계정이면 시작할 때마다 비밀번호를 EVERYUP_ADMIN_PASSWORD 값으로 다시 설정합니다
  • EVERYUP_ADMIN_PASSWORD
    EVERYUP_ADMIN_USERNAME과 함께 필요합니다. production 모드(기본값)에서는 8자 미만이거나 admin·password·changeme이면 Web이 시작되지 않습니다

보존 기간 ​

값의 형식은 변수 이름에 따라 다릅니다. 이름이 DAYS로 끝나는 변수는 일 수를 정수로 받고(14), 나머지 세 변수는 7d, 12h, 30m처럼 단위를 붙여 받습니다. 단위를 생략하면 일로 해석합니다.

  • EVERYUP_RETENTION_METRICS · 기본값 7d
    health check 메트릭
  • EVERYUP_RETENTION_LOGS · 기본값 3d
    로그
  • EVERYUP_RETENTION_SYSTEMMETRICS · 기본값 7d
    호스트 메트릭
  • EVERYUP_RETENTION_APIREQUESTSDAYS · 기본값 14
    API 요청(일)
  • EVERYUP_RETENTION_SPANSDAYS · 기본값 7
    트레이스(일)
  • EVERYUP_RETENTION_BODYCAPTUREDAYS · 기본값 7
    캡처한 요청/응답 바디와 바디 열람 audit 기록(일). 기간이 지나면 바디만 지우고 트레이스는 남깁니다
  • EVERYUP_RETENTION_OTELMETRICSDAYS · 기본값 7
    OTLP 메트릭(일)

알림 ​

  • EVERYUP_ALERTS_CONSECUTIVEFAILURES · 기본값 3
    서비스를 down으로 표시하기 전 연속 실패 횟수
  • EVERYUP_ALERTS_LOGALERTCOOLDOWN · 기본값 5
    같은 로그 알림을 다시 보내기까지의 최소 간격(분)

Web 호스트 메트릭 ​

Web이 실행 중인 호스트 자체의 메트릭 수집 설정입니다. 다른 서버의 자원은 Docker Collector나 직접 연결한 표준 OpenTelemetry Collector로 수집합니다.

  • EVERYUP_SYSTEM_ENABLED · 기본값 true
    수집 여부
  • EVERYUP_SYSTEM_COLLECTINTERVAL · 기본값 5
    수집 주기(초). 환경 설정 화면에서도 바꿀 수 있습니다
  • EVERYUP_SYSTEM_STOREINTERVAL · 기본값 60
    저장 주기(초)

API 개요 ​

기본 prefix는 /api/v1입니다.

영역예시
Health·인증GET /health, POST /auth/login, GET /auth/me
모니터링GET /services, GET /hosts, GET /dashboard/timeline
로그·트레이스GET /logs, POST /otlp/v1/logs, POST /otlp/v1/traces
알림GET /notifications, GET /alert-rules
Docker Collector 동기화 (/agents 호환 API)POST /agents/enroll, POST /agents/:agentId/services, POST /agents/:agentId/events, POST /agents/:agentId/metrics
Docker 서비스 상세GET /agents/services/all, GET /agents/:agentId/services/:key/history, GET /agents/:agentId/services/:key/uptime, GET /agents/:agentId/services/:key/logs, GET /agents/:agentId/services/:key/requests

Docker Collector의 동기화와 OTLP 전송에는 Docker 환경마다 발급되는 API Key를 사용합니다. 키는 Docker 연결로 환경을 만들 때 발급되고, 설치기가 대상 서버에 직접 전달합니다. 수동으로 설치할 때는 해당 Docker 환경을 열고 API Key를 눌러 확인하세요. 이 키는 Collector가 보관하며, 모니터링 대상 앱에 이 Collector 키를 설정하지 마세요.

직접 연결한 앱은 해당 서비스의 API Key를 사용합니다. Docker 탐색 없이 Collector 게이트웨이로 보내는 앱은 서비스별 bearer 토큰을 사용합니다.