Package com.bytedesk.core.server_metrics
Interface ServerMetricsRepository
- All Superinterfaces:
org.springframework.data.repository.CrudRepository<ServerMetricsEntity,,Long> org.springframework.data.jpa.repository.JpaRepository<ServerMetricsEntity,,Long> org.springframework.data.jpa.repository.JpaSpecificationExecutor<ServerMetricsEntity>,org.springframework.data.repository.ListCrudRepository<ServerMetricsEntity,,Long> org.springframework.data.repository.ListPagingAndSortingRepository<ServerMetricsEntity,,Long> org.springframework.data.repository.PagingAndSortingRepository<ServerMetricsEntity,,Long> org.springframework.data.repository.query.QueryByExampleExecutor<ServerMetricsEntity>,org.springframework.data.repository.Repository<ServerMetricsEntity,Long>
public interface ServerMetricsRepository
extends org.springframework.data.jpa.repository.JpaRepository<ServerMetricsEntity,Long>, org.springframework.data.jpa.repository.JpaSpecificationExecutor<ServerMetricsEntity>
Repository for ServerMetricsEntity
Provides database operations for server metrics historical data
Note: Only super administrators can access server monitoring data
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.data.jpa.repository.JpaSpecificationExecutor
org.springframework.data.jpa.repository.JpaSpecificationExecutor.SpecificationFluentQuery<T extends Object> -
Method Summary
Modifier and TypeMethodDescriptionlongcountByServerUidAndDeletedFalse(String serverUid) Count metrics records for a serverintdeleteOldMetrics(ZonedDateTime cutoffTime) Delete old metrics data (for data retention)Object[]findAverageMetricsByServerUidAndTimeRange(String serverUid, ZonedDateTime startTime, ZonedDateTime endTime) Find average metrics for a server in a time rangeFind metrics by server UIDfindByServerUidAndTimeRange(String serverUid, ZonedDateTime startTime, ZonedDateTime endTime) Find metrics by server UID and time rangeFind metrics by UIDfindLatestMetricsByServerUid(String serverUid) Find latest metrics for a serverfindMetricsWithHighUsage(Double cpuThreshold, Double memoryThreshold, Double diskThreshold, ZonedDateTime startTime, ZonedDateTime endTime) Find metrics with high resource usageObject[]findPeakMetricsByServerUidAndTimeRange(String serverUid, ZonedDateTime startTime, ZonedDateTime endTime) Find peak metrics for a server in a time rangeMethods inherited from interface org.springframework.data.repository.CrudRepository
count, delete, deleteAll, deleteAll, deleteAllById, deleteById, existsById, findById, saveMethods inherited from interface org.springframework.data.jpa.repository.JpaRepository
deleteAllByIdInBatch, deleteAllInBatch, deleteAllInBatch, deleteInBatch, findAll, findAll, flush, getById, getOne, getReferenceById, saveAllAndFlush, saveAndFlushMethods inherited from interface org.springframework.data.jpa.repository.JpaSpecificationExecutor
count, delete, exists, findAll, findAll, findAll, findAll, findBy, findOneMethods inherited from interface org.springframework.data.repository.ListCrudRepository
findAll, findAllById, saveAllMethods inherited from interface org.springframework.data.repository.ListPagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.PagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.query.QueryByExampleExecutor
count, exists, findAll, findBy, findOne
-
Method Details
-
findByUid
Find metrics by UID- Parameters:
uid- metrics UID- Returns:
- Optional<ServerMetricsEntity&gt;
-
findByServerUidAndDeletedFalseOrderByTimestampDesc
Find metrics by server UID- Parameters:
serverUid- server UID- Returns:
- List<ServerMetricsEntity>
-
findByServerUidAndTimeRange
@Query("SELECT m FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid AND m.timestamp BETWEEN :startTime AND :endTime ORDER BY m.timestamp ASC") List<ServerMetricsEntity> findByServerUidAndTimeRange(@Param("serverUid") String serverUid, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime) Find metrics by server UID and time range- Parameters:
serverUid- server UIDstartTime- start timeendTime- end time- Returns:
- List<ServerMetricsEntity>
-
findLatestMetricsByServerUid
@Query("SELECT m FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid ORDER BY m.timestamp DESC") List<ServerMetricsEntity> findLatestMetricsByServerUid(@Param("serverUid") String serverUid) Find latest metrics for a server- Parameters:
serverUid- server UID- Returns:
- ServerMetricsEntity or null
-
findMetricsWithHighUsage
@Query("SELECT m FROM ServerMetricsEntity m WHERE m.deleted = false AND m.timestamp BETWEEN :startTime AND :endTime AND (m.cpuUsage >= :cpuThreshold OR m.memoryUsage >= :memoryThreshold OR m.diskUsage >= :diskThreshold) ORDER BY m.timestamp DESC") List<ServerMetricsEntity> findMetricsWithHighUsage(@Param("cpuThreshold") Double cpuThreshold, @Param("memoryThreshold") Double memoryThreshold, @Param("diskThreshold") Double diskThreshold, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime) Find metrics with high resource usage- Parameters:
cpuThreshold- CPU usage thresholdmemoryThreshold- memory usage thresholddiskThreshold- disk usage thresholdstartTime- start timeendTime- end time- Returns:
- List<ServerMetricsEntity>
-
findAverageMetricsByServerUidAndTimeRange
@Query("SELECT AVG(m.cpuUsage), AVG(m.memoryUsage), AVG(m.diskUsage), AVG(m.usedMemoryMb), AVG(m.usedDiskGb) FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid AND m.timestamp BETWEEN :startTime AND :endTime") Object[] findAverageMetricsByServerUidAndTimeRange(@Param("serverUid") String serverUid, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime) Find average metrics for a server in a time range- Parameters:
serverUid- server UIDstartTime- start timeendTime- end time- Returns:
- Object array with average values
-
findPeakMetricsByServerUidAndTimeRange
@Query("SELECT MAX(m.cpuUsage), MAX(m.memoryUsage), MAX(m.diskUsage), MAX(m.usedMemoryMb), MAX(m.usedDiskGb) FROM ServerMetricsEntity m WHERE m.deleted = false AND m.serverUid = :serverUid AND m.timestamp BETWEEN :startTime AND :endTime") Object[] findPeakMetricsByServerUidAndTimeRange(@Param("serverUid") String serverUid, @Param("startTime") ZonedDateTime startTime, @Param("endTime") ZonedDateTime endTime) Find peak metrics for a server in a time range- Parameters:
serverUid- server UIDstartTime- start timeendTime- end time- Returns:
- Object array with peak values
-
deleteOldMetrics
@Query("DELETE FROM ServerMetricsEntity m WHERE m.deleted = false AND m.timestamp < :cutoffTime") int deleteOldMetrics(@Param("cutoffTime") ZonedDateTime cutoffTime) Delete old metrics data (for data retention)- Parameters:
cutoffTime- cutoff time- Returns:
- number of deleted records
-
countByServerUidAndDeletedFalse
Count metrics records for a server- Parameters:
serverUid- server UID- Returns:
- count
-