Monitor system performance metrics and generate health reports
System Performance Monitor
advanced low risk System Maintenance
Description
Prerequisites
- System monitoring access
- Performance baseline data
- Alert configuration
Parameters
monitoringDuration
NumberDuration in minutes to monitor system
Default: 60
generateReport
BooleanGenerate detailed performance report
Default: true
alertThreshold
NumberCPU usage threshold for alerts (percentage)
Default: 80
Script Code
import java.lang.management.ManagementFactory
import java.lang.management.MemoryMXBean
import java.lang.management.OperatingSystemMXBean
import java.lang.management.ThreadMXBean
def monitoringDuration = parameters.monitoringDuration ?: 60
def generateReport = parameters.generateReport ?: true
def alertThreshold = parameters.alertThreshold ?: 80
def errors = []
def performanceData = [:]
try {
def startTime = System.currentTimeMillis()
def endTime = startTime + (monitoringDuration * 60 * 1000)
println "Starting system performance monitoring for $monitoringDuration minutes..."
while (System.currentTimeMillis() < endTime) {
def currentTime = new Date()
// Collect system metrics
def memoryBean = ManagementFactory.getMemoryMXBean()
def osBean = ManagementFactory.getOperatingSystemMXBean()
def threadBean = ManagementFactory.getThreadMXBean()
def heapUsed = memoryBean.heapMemoryUsage.used
def heapMax = memoryBean.heapMemoryUsage.max
def heapUsedPercent = (heapUsed / heapMax) * 100
def cpuUsage = osBean.processCpuLoad * 100
def threadCount = threadBean.threadCount
def metrics = [
timestamp: currentTime,
heapUsed: heapUsed,
heapMax: heapMax,
heapUsedPercent: heapUsedPercent,
cpuUsage: cpuUsage,
threadCount: threadCount
]
performanceData[currentTime] = metrics
// Check for alerts
if (cpuUsage > alertThreshold) {
println "ALERT: High CPU usage detected: $cpuUsage%"
}
if (heapUsedPercent > 90) {
println "ALERT: High memory usage detected: $heapUsedPercent%"
}
// Wait before next measurement
Thread.sleep(30000) // 30 seconds
}
if (generateReport) {
generatePerformanceReport(performanceData)
}
println "Performance monitoring completed successfully"
} catch (Exception e) {
errors.add("Performance monitoring failed: $e.message")
}
def generatePerformanceReport(data) {
println "\n=== PERFORMANCE REPORT ==="
println "Monitoring period: $monitoringDuration minutes"
println "Total measurements: $data.size()"
def avgCpuUsage = data.values().collect { it.cpuUsage }.sum() / data.size()
def avgMemoryUsage = data.values().collect { it.heapUsedPercent }.sum() / data.size()
def maxCpuUsage = data.values().collect { it.cpuUsage }.max()
def maxMemoryUsage = data.values().collect { it.heapUsedPercent }.max()
println "Average CPU Usage: " + String.format("%.2f", avgCpuUsage) + "%"
println "Average Memory Usage: " + String.format("%.2f", avgMemoryUsage) + "%"
println "Peak CPU Usage: " + String.format("%.2f", maxCpuUsage) + "%"
println "Peak Memory Usage: " + String.format("%.2f", maxMemoryUsage) + "%"
if (avgCpuUsage > 70) {
println "WARNING: High average CPU usage detected"
}
if (avgMemoryUsage > 80) {
println "WARNING: High average memory usage detected"
}
}Script Information
Author:SAP Commerce Team
Execution Time:1-60 minutes
Rating:4.8/5
Downloads:1100
Last Updated:2024-01-16
Version:1.4.0
Tags
tools.groovyScriptLibrary.ui.title
tools.groovyScriptLibrary.ui.subtitle