Skip to content

skkuding/codedang-monitor

Repository files navigation

# Codedang Monitor

Codedang Monitor는 [Codedang 서비스](https://github.com/skkuding/codedang)를 모니터링하기 위한 도구입니다.
이 레포지토리는 수집기(OTEL Collector), 백엔드(Loki, Tempo, Prometheus), 시각화 도구(Grafana) 등 다양한 모니터링 관련 서비스를 포함합니다.

## 주요 기능

- **Collect: 텔레메트리 데이터 수집**  
  OTEL Collector를 통해 다양한 소스에서 수집된 텔레메트리 데이터를 백엔드(Loki, Tempo, Prometheus)로 전송합니다.
- **Backend: 텔레메트리 데이터 저장**  
  수집된 텔레메트리 데이터를 백엔드(Loki, Tempo, Prometheus)를 거쳐 오브젝트 스토리지(Minio)에 저장합니다.
- **Visualization: 텔레메트리 데이터 시각화**  
  백엔드로 수집된 데이터를 Grafana를 통해 시각화합니다.
- **Alerting: 조건에 따른 알림 전송**  
  Grafana와 Alertmanager를 통해 알림을 설정하고, 특정 조건에 따라 알림을 받을 수 있습니다.

## 설치 및 실행

1. **레포지토리 클론 및 디렉토리 이동**

   ```bash
   git clone https://github.com/skkuding/codedang-monitor.git
   cd codedang-monitor
   ```

2. **Docker Compose로 서비스 실행**

   VS Code Tasks(`Ctrl + Shift + p`)를 사용하거나 아래 명령어로 실행할 수 있습니다.

   ```bash
   docker compose --env-file .env.local up
   ```

3. **Codedang 서비스 설정 및 실행**

   환경 변수 설정을 통해 Codedang 서비스와 연결합니다.

   ```bash
   ENABLE_OPENTELEMETRY=true  # local 환경에서 텔레메트리 데이터 수집 활성화(local 환경에서 사용)
   OTEL_EXPORTER_OTLP_ENDPOINT_URL=localhost:4317 # 모니터링 서비스의 OTEL Collector gRPC 리시버 주소
   ```

4. **서비스 접근**

   - 브라우저에서 `http://localhost:5000` 주소로 접속하여 reverse proxy 된 Grafana 또는 Alertmanager Console 페이지에 접근할 수 있습니다.
   - Caddyfile 설정에 따라 `/alertmanager-console` 경로를 통해 Alertmanager 콘솔에 접근할 수 있습니다.

## 서비스 아키텍처

![모니터링 아키텍처 다이어그램](assets/architecture%20diagram.png)

## TODO

- [ ] Grafana 대시보드 프로비저닝
- [ ] Alertmanager 알림 설정
- [ ] Loki <-> OTEL Collector 프로토콜 수정: HTTP -> gRPC
- [ ] OTEL Collector -> ADOT Collector로 변경
- [ ] 누락된 리버스 프록시 설정 추가(Minio Console, OTEL Collector)

About

Codedang 모니터링

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7