feat: Added uptime calculation method
This commit is contained in:
@@ -6,4 +6,5 @@ type PublicService struct {
|
|||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
Statuses []model.Status `json:"statuses"`
|
Statuses []model.Status `json:"statuses"`
|
||||||
|
Uptime float64 `json:"uptime"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
|
import "math"
|
||||||
|
|
||||||
type HTTPConfig struct {
|
type HTTPConfig struct {
|
||||||
Method string `json:"method"`
|
Method string `json:"method"`
|
||||||
Headers map[string]string `json:"headers"`
|
Headers map[string]string `json:"headers"`
|
||||||
@@ -45,3 +47,29 @@ func (s Service) CountLastStatuses(status StatusCode) uint {
|
|||||||
|
|
||||||
return count
|
return count
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s Service) CalculateUptimePercent() float64 {
|
||||||
|
var uptime float64
|
||||||
|
|
||||||
|
if len(s.Statuses) == 0 {
|
||||||
|
return uptime
|
||||||
|
}
|
||||||
|
|
||||||
|
var countOfOkStatus int
|
||||||
|
|
||||||
|
for i := range s.Statuses {
|
||||||
|
if s.Statuses[i].Status == StatusOK {
|
||||||
|
countOfOkStatus++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if countOfOkStatus == 0 {
|
||||||
|
return uptime
|
||||||
|
}
|
||||||
|
|
||||||
|
sla := 100 - (float64(len(s.Statuses)) / float64(countOfOkStatus))
|
||||||
|
ratio := math.Pow(10, float64(2))
|
||||||
|
uptime = math.Round(sla*ratio) / ratio
|
||||||
|
|
||||||
|
return uptime
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ func PublicServices(items ...model.Service) []dto.PublicService {
|
|||||||
func PublicService(item model.Service) dto.PublicService {
|
func PublicService(item model.Service) dto.PublicService {
|
||||||
return dto.PublicService{
|
return dto.PublicService{
|
||||||
Name: item.Name,
|
Name: item.Name,
|
||||||
Description: item.Description,
|
Description: item.PublicDescription,
|
||||||
Statuses: item.Statuses,
|
Statuses: item.Statuses,
|
||||||
|
Uptime: item.CalculateUptimePercent(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user