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 TypeMethodDescriptionlong
countByServerUidAndDeletedFalse
(String serverUid) Count metrics records for a serverint
deleteOldMetrics
(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, save
Methods inherited from interface org.springframework.data.jpa.repository.JpaRepository
deleteAllByIdInBatch, deleteAllInBatch, deleteAllInBatch, deleteInBatch, findAll, findAll, flush, getById, getOne, getReferenceById, saveAllAndFlush, saveAndFlush
Methods inherited from interface org.springframework.data.jpa.repository.JpaSpecificationExecutor
count, delete, exists, findAll, findAll, findAll, findAll, findBy, findOne
Methods inherited from interface org.springframework.data.repository.ListCrudRepository
findAll, findAllById, saveAll
Methods inherited from interface org.springframework.data.repository.ListPagingAndSortingRepository
findAll
Methods inherited from interface org.springframework.data.repository.PagingAndSortingRepository
findAll
Methods 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
-