Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,12 @@ npm --prefix frontend run dev
Backend와 Embedding Provider의 운영 메트릭을 함께 수집하려면 선택형 monitoring profile을 실행합니다.

```bash
docker compose --profile monitoring up -d prometheus
docker compose --profile monitoring up -d prometheus alertmanager
```

Prometheus는 감시 대상이나 Alertmanager의 health 상태를 시작 조건으로 사용하지 않는다. 따라서
Embedding Provider가 준비되지 않아도 먼저 기동해 수집 실패와 경보를 기록한다.

- Prometheus Target: `http://localhost:9090/targets`
- 설정과 기존 Prometheus 연결: [monitoring/prometheus/README.md](monitoring/prometheus/README.md)

Expand Down
6 changes: 1 addition & 5 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,7 @@ services:
- ./monitoring/prometheus/rules:/etc/prometheus/rules:ro
- ./monitoring/prometheus/targets:/etc/prometheus/targets:ro
- prometheus-data:/prometheus
depends_on:
alertmanager:
condition: service_healthy
embedding-server:
condition: service_healthy
# 감시 대상과 알림 경로가 장애여도 수집과 규칙 평가는 독립적으로 시작한다.
networks:
- docgrid-local

Expand Down
6 changes: 5 additions & 1 deletion monitoring/prometheus/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@ Management endpoint는 기본적으로 Host의 `8081` 포트에서 열린다.
실행한다.

```bash
docker compose --profile monitoring up -d prometheus
docker compose --profile monitoring up -d prometheus alertmanager
```

Prometheus는 컨테이너에서 `host.docker.internal:8081`을 수집하고 firing·resolved 경보를 같은
profile의 Alertmanager로 전달한다. Compose의 `extra_hosts`가 Linux의 host gateway를 같은 이름으로
연결하며 Docker Desktop도 같은 주소를 지원한다.

두 monitoring 서비스를 명시하는 이유는 Prometheus가 Alertmanager와 Embedding Provider의 health
상태에 의존하지 않고 시작하기 때문이다. Embedding Provider가 아직 준비되지 않았거나 중단됐어도
Prometheus는 먼저 기동하고 해당 target을 `DOWN`으로 기록해 장애 경보를 평가한다.

- Target 상태: <http://localhost:9090/targets>
- Alert 상태: <http://localhost:9090/alerts>
- Alertmanager 상태: <http://localhost:9093>
Expand Down
16 changes: 15 additions & 1 deletion monitoring/verify.sh
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,21 @@ DRILL_TMP_DIR="$SECRET_DIR" docker compose \

# 5. 사용자가 실행할 두 Compose 형태가 모두 정상 렌더링되는지 확인한다.
docker compose -f "$ROOT_DIR/docker-compose.yml" config --quiet
docker compose -f "$ROOT_DIR/docker-compose.yml" --profile monitoring config --quiet
MONITORING_COMPOSE_CONFIG="$SECRET_DIR/monitoring-compose.json"
docker compose -f "$ROOT_DIR/docker-compose.yml" --profile monitoring \
config --format json > "$MONITORING_COMPOSE_CONFIG"
python3 - "$MONITORING_COMPOSE_CONFIG" <<'PY'
import json
import pathlib
import sys

config = json.loads(pathlib.Path(sys.argv[1]).read_text(encoding="utf-8"))
prometheus_dependencies = config["services"]["prometheus"].get("depends_on", {})
monitored_dependencies = {"alertmanager", "embedding-server"} & set(prometheus_dependencies)
if monitored_dependencies:
names = ", ".join(sorted(monitored_dependencies))
raise SystemExit(f"Prometheus must start independently from monitored services: {names}")
PY

if [ "${1:-}" = "--e2e" ]; then
"$ROOT_DIR/monitoring/alertmanager/tests/run-e2e.sh"
Expand Down
Loading