Skip to content

Jundev21/cpu-utilization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JAVA CPU 사용률 측정 서비스

프로젝트 정보

  • Spring Boot - 3.2.5
  • Gradle
  • Java - 17

의존성

  • H2
  • JPA
  • Lombok
  • Validation
  • Spring Web
  • Swagger
  • QueryDsl

기능 요구 사항

1. 데이터 수집 및 저장

  • CPU 사용률 수집: 서버의 CPU 사용률을 1분 단위로 수집

    • OperatingSystemMXBean 사용하여 cpu 사용률 추출.
    • cpu 추출값이 0부터 1 사이 값임으로 100퍼센트 기준으로 값을 변경하여 두자리수까지 나타내도록 변경.
    • scheduler 을 사용하여 1분단위로 데이터 수집.
  • 데이터 저장: 수집된 데이터를 데이터베이스에 저장합니다.

    • 임시적으로 h2 데이터를 사용하여 데이터 저장.

2. 데이터 조회 API

  • 분 단위 조회: 지정한 시간 구간의 분 단위 CPU 사용률을 조회
    • Rest APi : api/cpu/minute?startDate=2024-05-02 01&endDate=2024-05-02 03
    • 분단위 조회는 지정한 시간 구간이 필요함으로 시작 날짜와 종료날짜를 파라미터값으로 전달받습니다. 날짜와 시간이 필요함으로 LocalDateTime 에서 "yyyy-MM-dd HH" 형태로 전달받습니다.
    • 예시 startDate = 2024-05-01 01 / endDate=2024-05-3 02 일때에 5월 1일 1시부터 5월 3일 2시까지의 모든 분단위 cpu 사용률 데이터 조회하여 응답합니다.
    • front end 에 모든 데이터를 출력해야함으로 모든 분단위 데이터를 0분부터 59분까지의 데이터를 퍼센테이지(%) 형태로 응답한다. 해당 분에 데이터가 없을경우에는 0으로 출력
    • 예시: 1시부터 3시까지의 분단위 데이터를 조회할 경우 데이터를 표시 만약 없는 데이터일경우 0으로 표시하여 모든 분단위를 출력한다. Screenshot 2024-05-26 at 3 13 31 PM
  • 시 단위 조회: 지정한 날짜의 시 단위 CPU 최소/최대/평균 사용률을 조회합니다.
    • Rest APi : api/cpu/hour?pickedDay=2024-05-02
    • 시간단위 조회는 지정 날짜를 파라미터값으로 전달받습니다. 정해진 날짜만 필요함으로 LocalDate 에서 "yyyy-MM-dd" 형태로 전달받습니다.
    • 예시 pickedDay= 2024-05-01 일때에 5월 1일 0시부터 5월 1일 23시까지의 모든 분단위 cpu 사용률의 최소값,최대값,평균값 데이터를 조회하여 응답합니다.
    • front end 에 모든 데이터를 출력해야함으로 시간단위로 모든 시간인 0시부터 23시까지의 데이터를 퍼센테이지(%) 형태로 응답합니다. 데이터가 없을 경우에는 모두 0.0 으로 표기합니다.
    • 예시: 0시부터 23시까지의 모든 분단위 데이터를 조회하여 cpu 사용률의 최소값,최대값,평균값을 응답합니다. 데이터가 있을경우에는 표시하지만 없는 데이터일경우 최소,최대,평균값을 모두 0.0으로 표시하여 해당날짜의 모든 시단위 데이터 형태로 응답합니다. Screenshot 2024-05-26 at 3 13 58 PM
  • 일 단위 조회: 지정한 날짜 구간의 일 단위 CPU 최소/최대/평균 사용률을 조회합니다.
    • Rest APi : api/cpu/day?startDate=2024-05-01&endDate=2024-05-26
    • 일단위 조회는 지정한 날짜 구간이 필요함으로 시작 날짜와 종료날짜를 파라미터값으로 전달받습니다. 날짜형태만 필요함으로 LocalDate 에서 "yyyy-MM-dd" 형태로 전달받습니다.
    • 예시 startDate = 2024-05-01 / endDate=2024-05-26 일때에 5월 1일 부터 5월 26일의 cpu 사용률의 최소값,최대값,평균값 데이터를 수집합니다.
    • front end 에 모든 데이터를 출력해야함으로 날짜 구간의 모든 날짜의 데이터를 퍼센테이지(%) 형태로 응답합니다. 데이터가 없을 경우에는 모두 0.0 으로 표기
    • 예시: 5월 1일부터 5월 26일까지의 모든 분단위 데이터를 조회하여 cpu 사용률의 최소값,최대값,평균값을 응답합니다. 데이터가 있을경우에는 표시 하지만 없는 데이터일경우 최소,최대,평균값을 모두 0.0으로 표시하여 날짜 구간의 모든 날짜를 날짜 단위 데이터 형태로 응답합니다. Screenshot 2024-05-26 at 3 14 28 PM
  • Swagger를 사용하여 API 문서화

데이터 제공 기한

  • 분 단위 API : 최근 1주 데이터 제공
    • 시작날짜가 현재날짜 기준으로 1주일이 넘어가는 요청이면 에러 응답
  • 시 단위 API : 최근 3달 데이터 제공
    • 지정날짜가 현재날짜 기준으로 3달이 넘어가는 요청이면 에러 응답
  • 일 단위 API : 최근 1년 데이터 제공
    • 시작날짜가 현재날짜 기준으로 1년이 넘어가는 요청이면 에러 응답

예외 처리

  • API 요청 시 잘못된 파라미터에 대한 예외를 처리합니다.
    • 잘못된 시간형태 요청시에 에러 응답.

테스트

  • 유닛 테스트: controller, service, repository 모든 테스트 케이스 작성

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages