Giter Club home page Giter Club logo

spectra's Introduction

spectra

개요

Spectra는 Spring Boot로 구축된 포괄적인 오픈소스 데이터베이스 대시보드 애플리케이션입니다. 인덱스 튜닝, 외래 키, 기본 키, 데이터 사용량, CPU 사용량 등을 포함한 다양한 데이터베이스 모니터링 및 관리 기능을 제공합니다. 이 애플리케이션은 사용자에게 데이터베이스 성능에 대한 자세한 통찰을 제공하고 잠재적인 문제와 최적화 경로를 식별하는 데 도움을 줍니다.

기능

  • 데이터베이스 모니터링: 인덱스, 외래 키, 기본 키, 데이터 사용량, CPU 사용량과 같은 다양한 데이터베이스 지표의 실시간 모니터링.
  • 인덱스 튜닝: 데이터베이스 인덱스를 최적화하기 위한 도구와 권장 사항.
  • 알림 및 통지: 잠재적인 문제와 성능 병목 현상에 대한 실시간 알림.
  • 사용자 정의 대시보드: 주요 지표를 표시하기 위한 사용자 친화적이고 사용자 정의 가능한 대시보드.
  • 상세 보고서: 데이터베이스 성능에 대한 상세 보고서 생성 및 내보내기.
  • 과거 데이터 분석: 추세와 패턴을 식별하기 위해 과거 데이터를 추적하고 분석.
  • 사용자 관리: 역할 기반 접근 제어 및 사용자 관리 기능.
  • 확장성: 대용량 데이터셋과 높은 트래픽 부하를 처리하도록 설계됨.

설치

  1. 리포지토리를 클론합니다:

    git clone https://github.com/junhkang/spectra.git
    cd spectra
  2. 애플리케이션을 빌드하고 실행합니다:

    ./mvnw spring-boot:run
  3. 브라우저를 열고 http://localhost:8080으로 이동하여 대시보드에 접근합니다.

사용법

  1. 데이터베이스 연결: 데이터베이스 연결 정보를 입력하여 모니터링을 시작합니다.
  2. 대시보드: 대시보드를 사용하여 실시간 지표와 성능 지표를 확인합니다.
  3. 보고서: 데이터베이스의 다양한 측면에 대한 상세 보고서를 생성합니다.
  4. 알림: 잠재적인 문제를 알리기 위한 알림을 구성합니다.

CONTRIBUTE

기여는 언제나 환영입니다! 참여 방법에 대한 지침은 CONTRIBUTING.md를 참조하세요.

LICENSE

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.

CONTACT

질문, 제안 또는 문제가 있는 경우 issue tracker에 새 이슈를 생성하거나 [email protected]으로 연락해 주세요.

기여자

이 프로젝트는 다음과 같은 기여자들의 도움으로 이루어졌습니다:

Jun Kang
Jun Kang

💻
Sean
Sean

💻
sohyun
sohyun

💻
이동원
이동원

💻

spectra's People

Contributors

junhkang avatar sean-leeeee avatar

Stargazers

이동원 avatar Kyu L avatar  avatar  avatar  avatar

Watchers

 avatar

spectra's Issues

입력받은 데이터베이스로 접속 및 예외 처리 구현

기능 설명

사용자가 입력한 데이터베이스 정보로 접속하고, 접속 정보를 검증하며, 적절한 예외 처리를 구현합니다. 이를 통해 동적 데이터 소스를 설정하고, 해당 데이터베이스에 대한 쿼리를 실행할 수 있도록 합니다.

작업 내용

  1. 데이터베이스 접속 정보 입력받기

    • 데이터베이스 URL, 사용자명, 비밀번호, 드라이버 클래스 입력 폼 생성
    • 입력된 정보의 유효성 검사 (빈 값, 형식 등)
  2. 데이터베이스 연결 및 동적 데이터 소스 설정

    • 입력된 정보를 사용하여 DynamicDataSourceConfig 클래스에서 동적 데이터 소스 설정
    • SqlSessionTemplate을 통해 쿼리 실행 가능하도록 설정
  3. 예외 처리 및 검증

    • 잘못된 데이터베이스 정보 입력 시 적절한 예외 메시지 반환
    • 데이터베이스 연결 실패 시 예외 처리 및 사용자에게 알림
    • 입력 정보 검증 실패 시 예외 처리 및 사용자에게 알림
  4. 테스트

    • 다양한 데이터베이스 (PostgreSQL, MySQL, Oracle 등) 접속 테스트
    • 예외 상황 (잘못된 URL, 잘못된 사용자명/비밀번호 등) 테스트

네비게이션 바 개선

기능 설명

네비게이션 바를 개선하여 사용자 경험을 향상시킵니다.

작업 내용

  • 로고 추가 및 스타일링 개선
  • 각 메뉴 아이템에 대한 툴팁 추가
  • 현재 페이지 표시

테이블별 ROWS 조회 구현

기능 설명

데이터베이스의 각 테이블별 행(row) 수를 조회하는 기능을 구현합니다. 이는 대쉬보드 화면에서 테이블별 행 수를 실시간으로 모니터링하는 데 사용됩니다.

작업 내용

  1. 테이블별 행 수 조회 쿼리 작성

    • 테이블별 행 수를 조회하는 쿼리 작성
    • 각 테이블의 행 수 데이터를 반환하는 서비스 메소드 구현
    • 컨트롤러에 엔드포인트 추가
  2. 적절한 예외 처리 및 검증

    • 쿼리 실행 실패 시 예외 처리 로직 구현
    • 조회된 데이터의 유효성 검증

PostgreSQL 테이블 리스트를 크기순으로 가져오는 백엔드 API 생성

상세 내용

  1. 쿼리 작성: PostgreSQL에서 테이블 리스트를 크기순으로 가져오는 쿼리 작성
  2. 페이징 처리: 페이지 번호를 받아서 결과를 페이징 처리할 수 있도록 구현합니다.
  3. 쿼리 실행 시간 포함: API의 리턴 값에 쿼리 실행 시간을 포함시킵니다.

작업 내용

  • PostgreSQL 데이터베이스에서 테이블 리스트를 크기순으로 가져오는 쿼리 작성
    • 쿼리:
      SELECT 
        schemaname,
        tablename,
        pg_size_pretty(pg_total_relation_size(tablename::regclass)) AS size
      FROM 
        pg_tables
      WHERE 
        schemaname NOT IN ('pg_catalog', 'information_schema')
      ORDER BY 
        pg_total_relation_size(tablename::regclass) DESC;
  • 페이지 번호를 받아 페이징 처리 구현
  • API 리턴 값에 쿼리 실행 시간 포함
  • 추후 스키마를 선택해야 할 경우 WHERE schemaname='public' 추가 고려

데이터베이스 상태 정보 조회 API 구현

기능 설명

데이터베이스의 상태 정보를 조회하는 API를 구현합니다.

작업 내용

  1. 데이터베이스 Uptime 조회 쿼리 작성
  2. 현재 연결된 사용자 수 조회 쿼리 작성
  3. 상태 정보 조회 서비스 메소드 구현
  4. 상태 정보 조회 API 엔드포인트 구현

인덱스 및 쿼리 분석 API 구현

기능 설명

데이터베이스 인덱스 및 쿼리 분석 결과를 조회하는 API를 구현합니다.

작업 내용

  1. 미사용 인덱스 조회 쿼리 작성
  2. 슬로우 쿼리 로그 조회 쿼리 작성
  3. 인덱스 및 쿼리 분석 결과 조회 서비스 메소드 구현
  4. 인덱스 및 쿼리 분석 결과 조회 API 엔드포인트 구현

쿼리 실행 횟수 도넛 차트 API 생성

설명

PostgreSQL 데이터베이스에서 다양한 쿼리의 실행 횟수를 도넛 차트 형태로 시각화하기 위한 백엔드 API를 생성합니다.

작업 내용

  • PostgreSQL 데이터베이스에서 쿼리 실행 횟수를 가져오는 쿼리 작성
    • 쿼리: SELECT query, calls FROM pg_stat_statements;
  • 쿼리 수행카운트, 전체 쿼리 대비 해당 쿼리의 비율들을 리스트 형태로 리턴하여 프론트앤드에서 도넛 형태의 그래프로 사용가능하게 함

튜닝 가이드 섹션 고도화

기능 설명

튜닝 가이드 섹션을 고도화하여 사용자가 더 쉽게 데이터베이스 성능을 최적화할 수 있도록 합니다.

작업 내용

  • 튜닝 가이드 항목을 카테고리별로 분류
  • 각 항목에 대한 설명 및 추천 작업 추가
  • 사용자 친화적인 인터페이스 제공

PostgreSQL PK 리스트를 가져오는 백엔드 API 생성

상세 내용

  1. 쿼리 작성: PostgreSQL에서 PK 리스트를 가져오는 쿼리 작성
  2. 페이징 처리: 페이지 번호를 받아서 결과를 페이징 처리할 수 있도록 구현합니다.
  3. 쿼리 실행 시간 포함: API의 리턴 값에 쿼리 실행 시간을 포함시킵니다.

작업 내용

  • PostgreSQL 데이터베이스에서 PK 리스트를 가져오는 쿼리 작성
    • 쿼리:
      SELECT 
        tc.table_schema, 
        tc.table_name, 
        kc.column_name, 
        tc.constraint_name
      FROM 
        information_schema.table_constraints tc
      JOIN 
        information_schema.key_column_usage kc 
      ON 
        tc.constraint_name = kc.constraint_name
      WHERE 
        tc.constraint_type = 'PRIMARY KEY';
  • 페이지 번호를 받아 페이징 처리 구현
  • API 리턴 값에 쿼리 실행 시간 포함
  • 추후 스키마를 선택해야 할 경우 WHERE tc.table_schema='public' 추가 고려

H2 데이터베이스 기본 접속 세팅

기능 설명

H2 데이터베이스에 기본 접속을 설정합니다. 애플리케이션이 시작될 때 H2 데이터베이스와의 연결을 설정하고, 이를 통해 개발 및 테스트를 용이하게 합니다.

작업 내용

  • application.properties 파일에 H2 데이터베이스 설정 추가
  • H2 데이터베이스 초기화 SQL 파일 작성 (schema.sql, data.sql)
  • H2 콘솔 활성화 설정

참고 자료

성능 지표 조회 API 구현

기능 설명

데이터베이스의 성능 지표를 조회하는 API를 구현합니다.

작업 내용

  1. CPU 사용량 조회 쿼리 작성
  2. 메모리 사용량 조회 쿼리 작성
  3. 디스크 I/O 조회 쿼리 작성
  4. 성능 지표 조회 서비스 메소드 구현
  5. 성능 지표 조회 API 엔드포인트 구현

성능 지표 차트 UI 구현

기능 설명

데이터베이스 성능 지표를 시각적으로 표시하는 차트를 구현합니다.

작업 내용

  1. CPU 사용량 차트 구현
  2. 메모리 사용량 차트 구현
  3. 디스크 I/O 차트 구현

알림 기능 구현

특정 임계값을 초과하면 이메일 또는 슬랙 알림을 보내는 기능을 구현합니다.

작업 내용:

  • 알림 임계값 설정
    • 알림 임계값 설정 UI 구현
    • 설정된 임계값 저장 기능 구현
  • 이메일 알림 기능 구현
    • 이메일 알림 기능 구현
    • 임계값 초과 시 이메일 전송 기능 구현
  • 슬랙 알림 기능 구현
    • 슬랙 알림 기능 구현
    • 임계값 초과 시 슬랙 메시지 전송 기능 구현

보안 및 접근 제어 기능 구현

데이터베이스 연결 정보와 모니터링 결과의 보안을 강화하고, 접근 제어를 설정합니다.

작업 내용:

  • 데이터베이스 연결 정보 암호화
    • 연결 정보 암호화 기능 구현
    • 암호화된 연결 정보 저장 기능 구현
  • 사용자 인증 및 권한 부여
    • 사용자 인증 기능 구현
    • 사용자 권한 부여 및 관리 기능 구현
  • 접근 제어 설정
    • 역할 기반 접근 제어 기능 구현
    • 접근 로그 기록 기능 구현

PostgreSQL 미사용 인덱스 조회 API 생성

PostgreSQL 데이터베이스에서 미사용 인덱스 리스트를 가져와 해당 정보를 노출시키는 백엔드 API를 생성합니다.

작업 내용

  • PostgreSQL 데이터베이스에서 미사용 인덱스 리스트를 가져오는 쿼리 작성
    • 쿼리: SELECT schemaname, relname, indexrelname FROM pg_stat_user_indexes WHERE idx_scan = 0;
  • 페이지 번호를 받아 페이징 처리 구현
  • API 리턴 값에 쿼리 실행 시간 포함

보고서 생성 기능 구현

주기적으로 성능 모니터링 결과를 특정 형식으로 생성하여 이메일로 전송하는 기능을 구현합니다.

작업 내용:

  • 보고서 생성 기능 구현
    • 성능 모니터링 결과를 PDF, 엑셀 등의 형식으로 변환
    • 주기적인 보고서 생성 스케줄러 구현 (선택)
  • 이메일 전송 기능 구현
    • 생성된 보고서를 이메일로 전송하는 기능 구현
    • 이메일 템플릿 작성 및 적용

PostgreSQL 인덱스 리스트 API 생성

PostgreSQL 데이터베이스에서 인덱스 전체 리스트를 가져와 해당 정보를 노출시키는 백엔드 API를 생성합니다.

작업 내용

  • PostgreSQL 데이터베이스에서 인덱스 리스트를 가져오는 쿼리 작성
    • 쿼리: SELECT schemaname, tablename, indexname, tablespace, indexdef FROM pg_indexes ;
  • 페이지 번호를 받아 페이징 처리 구현
    - [ ] API 리턴 값에 쿼리 실행 시간 포함
  • 추후 스키마를 선택해야 할 경우 where schemaname='public' 추가 고려

상세 내용

  1. 쿼리 작성: PostgreSQL에서 인덱스 리스트를 가져오는 쿼리는 다음과 같습니다.
    SELECT indexname, indexdef 
    FROM pg_indexes 
    WHERE schemaname = 'public';
    
  2. 페이징 처리: 페이지 번호를 받아서 결과를 페이징 처리할 수 있도록 구현합니다.
  • 쿼리에 LIMIT와 OFFSET를 사용하여 페이징 처리
    3. 쿼리 실행 시간 포함: API의 리턴 값에 쿼리 실행 시간을 포함시킵니다.
    - [ ] 시작 시간과 종료 시간을 측정하여 실행 시간을 계산

인덱스 추천 API 생성

작업 내용

  • PostgreSQL 데이터베이스에서 인덱스 추천 쿼리 작성
  • 페이지 번호를 받아 페이징 처리 구현

테이블 통계 정보 조회 API 구현

기능 설명

데이터베이스의 테이블 통계 정보를 조회하는 API를 구현합니다.

작업 내용

  1. 전체 테이블 수 조회 쿼리 작성
  2. 전체 인덱스 수 조회 쿼리 작성
  3. 각 테이블의 행 수 조회 쿼리 작성
  4. 통계 정보 조회 서비스 메소드 구현
  5. 통계 정보 조회 API 엔드포인트 구현

Database Status 데이터 조회 구현

기능 설명

데이터베이스의 상태 정보를 조회하는 기능을 구현합니다. 이는 대쉬보드 화면에서 데이터베이스 상태를 실시간으로 모니터링하는 데 사용됩니다.

작업 내용

  1. 데이터베이스 Uptime 조회

    • 데이터베이스 Uptime을 조회하는 쿼리 작성
    • Uptime 데이터를 반환하는 서비스 메소드 구현
    • 컨트롤러에 엔드포인트 추가
  2. 현재 연결된 사용자 수 조회

    • 현재 연결된 사용자 수를 조회하는 쿼리 작성
    • 사용자 수 데이터를 반환하는 서비스 메소드 구현
    • 컨트롤러에 엔드포인트 추가
  3. 적절한 예외 처리 및 검증

    • 쿼리 실행 실패 시 예외 처리 로직 구현
    • 조회된 데이터의 유효성 검증

소스 품질 검증 설정

SonarQube를 활용한 소스 품질 검증 설정

설명

SonarQube를 설정하여 PR(Pull Request)이 생성될 때 자동으로 소스 코드 품질을 검증합니다.

작업 내용

  • SonarQube 프로젝트 생성 및 토큰 발행
  • SonarQube 토큰을 GitHub Secrets에 추가
  • SonarQube 분석을 위한 GitHub Actions 워크플로우 파일 작성

사용자 피드백 수집 기능 구현

설명: 사용자로부터 피드백을 수집하고, 이를 바탕으로 기능을 개선하는 기능을 구현합니다.

작업 내용:

  • 피드백 접수 방식 고민
  • 타입폼
  • 깃허브 이슈 연동
  • etc

사용자 정의 대시보드 기능 구현

사용자가 모니터링하고 싶은 지표를 선택하고, 대시보드에 추가할 수 있는 기능을 구현합니다.

작업 내용:

  • 사용자 정의 지표 선택 UI 구현
    • 사용자 정의 지표 선택 UI 구현
    • 선택된 지표 저장 기능 구현
  • 선택된 지표를 대시보드에 추가
    • 선택된 지표를 대시보드에 추가하는 기능 구현
    • 추가된 지표를 실시간으로 업데이트하는 기능 구현

데이터베이스 연결 상태 조회 API 생성

PostgreSQL 데이터베이스의 현재 연결 상태를 조회하고, 이를 백엔드 API로 노출합니다.

작업 내용

  • PostgreSQL 데이터베이스에서 현재 연결 상태를 가져오는 쿼리 작성
    • 쿼리: SELECT datname, numbackends FROM pg_stat_database;

Spring Interceptor를 사용한 서비스 수행 시간 측정 기능 구현

작업 내용

  • Spring Interceptor를 사용하여 모든 서비스 메서드의 수행 시간을 측정
  • 측정된 수행 시간을 API 응답에 포함
  • 인터셉터를 글로벌하게 등록하여 모든 요청에 대해 적용
  • 기존 서비스 및 컨트롤러 메서드 수정 없이 글로벌 적용

데이터 소스 입력 화면 구현

기능 설명

사용자가 데이터 소스를 입력할 수 있는 화면을 구현합니다. 입력 받은 접속 정보를 서버로 전송합니다.

작업 내용

  • 데이터 소스 입력 화면 퍼블리싱
  • 데이터 소스 입력 폼 생성
  • 데이터 소스 검증 로직 구현

테이블 통계 UI 구현

기능 설명

데이터베이스의 테이블 통계 정보를 실시간으로 모니터링할 수 있는 대쉬보드 UI를 구현합니다.

작업 내용

  1. 전체 테이블 수 표시
  2. 전체 인덱스 수 표시
  3. 각 테이블의 행 수 표시

PostgreSQL 확장 설치 확인 및 예외 처리 추가

PostgreSQL 확장이 설치되지 않은 경우, 사용자에게 확장 설치를 안내하는 예외 처리를 추가합니다. 특히 pg_stat_statements 확장이 설치되지 않은 경우를 처리합니다. (설치하지 않는 경우 주요쿼리 실행불가 ex) 지연쿼리 조회)

작업 내용

  • pg_stat_statements 확장이 설치되지 않은 경우를 확인하는 로직 추가
  • 예외 발생 시 사용자에게 확장 설치를 안내하는 메시지 반환
  • 필요한 경우 다른 확장에 대해서도 동일한 처리 추가

PostgreSQL 오래 걸리는 쿼리 Top 30 조회 API 생성

설명

PostgreSQL 데이터베이스에서 실행 시간이 오래 걸리는 쿼리 상위 30개를 가져와 해당 정보를 노출시키는 백엔드 API를 생성합니다.

작업 내용

  • PostgreSQL 데이터베이스에서 오래 걸리는 쿼리 상위 10개를 가져오는 쿼리 작성
    • 쿼리: SELECT query, total_time, calls, mean_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 30;
  • 페이지 번호를 받아 페이징 처리 구현

인덱스 및 쿼리 분석 UI 구현

기능 설명

데이터베이스 인덱스 및 쿼리 분석 결과를 시각적으로 표시하는 UI를 구현합니다.

작업 내용

  1. 미사용 인덱스 리스트 표시
  2. 슬로우 쿼리 로그 표시
  3. 각 인덱스 및 쿼리의 성능 분석 결과 표시

Table Stats 데이터 조회 구현

기능 설명

데이터베이스의 테이블 통계 정보를 조회하는 기능을 구현합니다. 이는 대쉬보드 화면에서 테이블 통계를 실시간으로 모니터링하는 데 사용됩니다.

작업 내용

  1. 전체 테이블 수 조회

    • 전체 테이블 수를 조회하는 쿼리 작성
    • 테이블 수 데이터를 반환하는 서비스 메소드 구현
    • 컨트롤러에 엔드포인트 추가
  2. 전체 인덱스 수 조회

    • 전체 인덱스 수를 조회하는 쿼리 작성
    • 인덱스 수 데이터를 반환하는 서비스 메소드 구현
    • 컨트롤러에 엔드포인트 추가
  3. 적절한 예외 처리 및 검증

    • 쿼리 실행 실패 시 예외 처리 로직 구현
    • 조회된 데이터의 유효성 검증

데이터베이스 로그 저장 기능 구현

이슈 제목: 데이터베이스 로그 저장 기능 구현

설명: 데이터베이스 모니터링 결과를 H2 데이터베이스에 저장하고, 이를 기반으로 분석할 수 있도록 합니다.

작업 내용:

  • 저장 항목 정의
  • 데이터베이스 설계
  • 모니터링 결과를 H2 데이터베이스에 저장
    • 모니터링 결과 저장 기능 구현
    • 저장된 로그 조회 기능 구현
  • 저장된 로그를 기반으로 분석 기능 추가
    • 로그 데이터 분석 기능 구현
    • 분석 결과를 대시보드에 표시

데이터베이스 상태 모니터링 UI 구현

기능 설명

데이터베이스 상태 정보를 실시간으로 모니터링할 수 있는 대쉬보드 UI를 구현합니다.

작업 내용

  1. 데이터베이스 Uptime 표시
  2. 현재 연결된 사용자 수 표시
  3. 데이터 업데이트 주기 설정

요약 패널 개선

기능 설명

요약 패널을 스타일링하고 각 패널에 아이콘을 추가합니다.

작업 내용

  • 데이터베이스 상태, 테이블 통계, 성능, 디스크 I/O 패널 스타일링 개선
  • 각 패널에 아이콘 추가
  • 패널 데이터 실시간 업데이트 기능 구현

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.