You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
package metrics |
|
|
|
import ( |
|
log "github.com/sirupsen/logrus" |
|
) |
|
|
|
const maxCPUAlertingThresholdPCT = 95 |
|
const maxRAMAlertingThresholdPCT = 95 |
|
|
|
const alertingError = "The %s utilization of %d%% is higher than the alerting threshold of %d%%. This can cause issues with video generation and delivery. Please visit the documentation at http://owncast.online/docs/troubleshooting/ to help troubleshoot this issue." |
|
|
|
func handleAlerting() { |
|
handleCPUAlerting() |
|
handleRAMAlerting() |
|
} |
|
|
|
func handleCPUAlerting() { |
|
if len(Metrics.CPUUtilizations) < 2 { |
|
return |
|
} |
|
|
|
avg := recentAverage(Metrics.CPUUtilizations) |
|
if avg > maxCPUAlertingThresholdPCT { |
|
log.Errorf(alertingError, "CPU", avg, maxCPUAlertingThresholdPCT) |
|
} |
|
} |
|
|
|
func handleRAMAlerting() { |
|
if len(Metrics.RAMUtilizations) < 2 { |
|
return |
|
} |
|
|
|
avg := recentAverage(Metrics.RAMUtilizations) |
|
if avg > maxRAMAlertingThresholdPCT { |
|
log.Errorf(alertingError, "memory", avg, maxRAMAlertingThresholdPCT) |
|
} |
|
} |
|
|
|
func recentAverage(values []timestampedValue) int { |
|
return int((values[len(values)-1].Value + values[len(values)-2].Value) / 2) |
|
}
|
|
|