agent-performance-monitor
Collects real-time metrics and analyzes bottlenecks to maintain agent SLA and system performance.
Install
mkdir -p .claude/skills/agent-performance-monitor && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/815" && unzip -o skill.zip -d .claude/skills/agent-performance-monitor && rm skill.zipInstalls to .claude/skills/agent-performance-monitor
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Agent skill for performance-monitor - invoke with $agent-performance-monitorKey capabilities
- →Collect real-time system and agent metrics
- →Detect performance bottlenecks across layers
- →Monitor SLA compliance for services
- →Track resource utilization and efficiency
- →Analyze recurring performance patterns
How it works
The agent collects multi-dimensional metrics and uses intelligent detectors to correlate bottlenecks and evaluate SLA violations.
Inputs & outputs
When to use agent-performance-monitor
- →Track agent CPU and memory usage
- →Analyze system load averages
- →Monitor SLA compliance
- →Detect performance anomalies
About this skill
name: Performance Monitor type: agent category: optimization description: Real-time metrics collection, bottleneck analysis, SLA monitoring and anomaly detection
Performance Monitor Agent
Agent Profile
- Name: Performance Monitor
- Type: Performance Optimization Agent
- Specialization: Real-time metrics collection and bottleneck analysis
- Performance Focus: SLA monitoring, resource tracking, and anomaly detection
Core Capabilities
1. Real-Time Metrics Collection
// Advanced metrics collection system
class MetricsCollector {
constructor() {
this.collectors = new Map();
this.aggregators = new Map();
this.streams = new Map();
this.alertThresholds = new Map();
}
// Multi-dimensional metrics collection
async collectMetrics() {
const metrics = {
// System metrics
system: await this.collectSystemMetrics(),
// Agent-specific metrics
agents: await this.collectAgentMetrics(),
// Swarm coordination metrics
coordination: await this.collectCoordinationMetrics(),
// Task execution metrics
tasks: await this.collectTaskMetrics(),
// Resource utilization metrics
resources: await this.collectResourceMetrics(),
// Network and communication metrics
network: await this.collectNetworkMetrics()
};
// Real-time processing and analysis
await this.processMetrics(metrics);
return metrics;
}
// System-level metrics
async collectSystemMetrics() {
return {
cpu: {
usage: await this.getCPUUsage(),
loadAverage: await this.getLoadAverage(),
coreUtilization: await this.getCoreUtilization()
},
memory: {
usage: await this.getMemoryUsage(),
available: await this.getAvailableMemory(),
pressure: await this.getMemoryPressure()
},
io: {
diskUsage: await this.getDiskUsage(),
diskIO: await this.getDiskIOStats(),
networkIO: await this.getNetworkIOStats()
},
processes: {
count: await this.getProcessCount(),
threads: await this.getThreadCount(),
handles: await this.getHandleCount()
}
};
}
// Agent performance metrics
async collectAgentMetrics() {
const agents = await mcp.agent_list({});
const agentMetrics = new Map();
for (const agent of agents) {
const metrics = await mcp.agent_metrics({ agentId: agent.id });
agentMetrics.set(agent.id, {
...metrics,
efficiency: this.calculateEfficiency(metrics),
responsiveness: this.calculateResponsiveness(metrics),
reliability: this.calculateReliability(metrics)
});
}
return agentMetrics;
}
}
2. Bottleneck Detection & Analysis
// Intelligent bottleneck detection
class BottleneckAnalyzer {
constructor() {
this.detectors = [
new CPUBottleneckDetector(),
new MemoryBottleneckDetector(),
new IOBottleneckDetector(),
new NetworkBottleneckDetector(),
new CoordinationBottleneckDetector(),
new TaskQueueBottleneckDetector()
];
this.patterns = new Map();
this.history = new CircularBuffer(1000);
}
// Multi-layer bottleneck analysis
async analyzeBottlenecks(metrics) {
const bottlenecks = [];
// Parallel detection across all layers
const detectionPromises = this.detectors.map(detector =>
detector.detect(metrics)
);
const results = await Promise.all(detectionPromises);
// Correlate and prioritize bottlenecks
for (const result of results) {
if (result.detected) {
bottlenecks.push({
type: result.type,
severity: result.severity,
component: result.component,
rootCause: result.rootCause,
impact: result.impact,
recommendations: result.recommendations,
timestamp: Date.now()
});
}
}
// Pattern recognition for recurring bottlenecks
await this.updatePatterns(bottlenecks);
return this.prioritizeBottlenecks(bottlenecks);
}
// Advanced pattern recognition
async updatePatterns(bottlenecks) {
for (const bottleneck of bottlenecks) {
const signature = this.createBottleneckSignature(bottleneck);
if (this.patterns.has(signature)) {
const pattern = this.patterns.get(signature);
pattern.frequency++;
pattern.lastOccurrence = Date.now();
pattern.averageInterval = this.calculateAverageInterval(pattern);
} else {
this.patterns.set(signature, {
signature,
frequency: 1,
firstOccurrence: Date.now(),
lastOccurrence: Date.now(),
averageInterval: 0,
predictedNext: null
});
}
}
}
}
3. SLA Monitoring & Alerting
// Service Level Agreement monitoring
class SLAMonitor {
constructor() {
this.slaDefinitions = new Map();
this.violations = new Map();
this.alertChannels = new Set();
this.escalationRules = new Map();
}
// Define SLA metrics and thresholds
defineSLA(service, slaConfig) {
this.slaDefinitions.set(service, {
availability: slaConfig.availability || 99.9, // percentage
responseTime: slaConfig.responseTime || 1000, // milliseconds
throughput: slaConfig.throughput || 100, // requests per second
errorRate: slaConfig.errorRate || 0.1, // percentage
recoveryTime: slaConfig.recoveryTime || 300, // seconds
// Time windows for measurements
measurementWindow: slaConfig.measurementWindow || 300, // seconds
evaluationInterval: slaConfig.evaluationInterval || 60, // seconds
// Alerting configuration
alertThresholds: slaConfig.alertThresholds || {
warning: 0.8, // 80% of SLA threshold
critical: 0.9, // 90% of SLA threshold
breach: 1.0 // 100% of SLA threshold
}
});
}
// Continuous SLA monitoring
async monitorSLA() {
const violations = [];
for (const [service, sla] of this.slaDefinitions) {
const metrics = await this.getServiceMetrics(service);
const evaluation = this.evaluateSLA(service, sla, metrics);
if (evaluation.violated) {
violations.push(evaluation);
await this.handleViolation(service, evaluation);
}
}
return violations;
}
// SLA evaluation logic
evaluateSLA(service, sla, metrics) {
const evaluation = {
service,
timestamp: Date.now(),
violated: false,
violations: []
};
// Availability check
if (metrics.availability < sla.availability) {
evaluation.violations.push({
metric: 'availability',
expected: sla.availability,
actual: metrics.availability,
severity: this.calculateSeverity(metrics.availability, sla.availability, sla.alertThresholds)
});
evaluation.violated = true;
}
// Response time check
if (metrics.responseTime > sla.responseTime) {
evaluation.violations.push({
metric: 'responseTime',
expected: sla.responseTime,
actual: metrics.responseTime,
severity: this.calculateSeverity(metrics.responseTime, sla.responseTime, sla.alertThresholds)
});
evaluation.violated = true;
}
// Additional SLA checks...
return evaluation;
}
}
4. Resource Utilization Tracking
// Comprehensive resource tracking
class ResourceTracker {
constructor() {
this.trackers = {
cpu: new CPUTracker(),
memory: new MemoryTracker(),
disk: new DiskTracker(),
network: new NetworkTracker(),
gpu: new GPUTracker(),
agents: new AgentResourceTracker()
};
this.forecaster = new ResourceForecaster();
this.optimizer = new ResourceOptimizer();
}
// Real-time resource tracking
async trackResources() {
const resources = {};
// Parallel resource collection
const trackingPromises = Object.entries(this.trackers).map(
async ([type, tracker]) => [type, await tracker.collect()]
);
const results = await Promise.all(trackingPromises);
for (const [type, data] of results) {
resources[type] = {
...data,
utilization: this.calculateUtilization(data),
efficiency: this.calculateEfficiency(data),
trend: this.calculateTrend(type, data),
forecast: await this.forecaster.forecast(type, data)
};
}
return resources;
}
// Resource utilization analysis
calculateUtilization(resourceData) {
return {
current: resourceData.used / resourceData.total,
peak: resourceData.peak / resourceData.total,
average: resourceData.average / resourceData.total,
percentiles: {
p50: resourceData.p50 / resourceData.total,
p90: resourceData.p90 / resourceData.total,
p95: resourceData.p95 / resourceData.total,
p99: resourceData.p99 / resourceData.total
}
};
}
// Predictive resource forecasting
async forecastResourceNeeds(timeHorizon = 3600) { // 1 hour default
const currentResources = await this.trackResources();
const forecasts = {};
for (const [type, data] of Object.entries(currentResources)) {
forecasts[type] = await this.forecaster.forecast(type, data, timeHorizon);
}
return {
timeHorizon,
forecasts,
recommendations: await this.optimizer.generateRecommendations(forecasts),
confidence: this.calculateForecastConfidence(forecasts)
};
}
}
MCP Integration Hooks
Performance Data Collection
// Comprehensive MCP integration
const performanceIntegration = {
// Real-time performance monitoring
async startMonitoring(config = {}) {
const monitoringTasks = [
this.monitorSwarmHealth(),
---
*Content truncated.*
When not to use it
- →Monitoring non-agent-based infrastructure
- →Deep packet inspection for network security
Prerequisites
Limitations
- →Requires integration with swarm infrastructure
- →Pattern recognition accuracy depends on historical data
How it compares
It provides agent-specific performance insights and automated bottleneck prioritization instead of generic system monitoring.
Compared to similar skills
agent-performance-monitor side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| agent-performance-monitor (this skill) | 3 | 6mo | Review | Advanced |
| service-mesh-observability | 5 | 2mo | No flags | Advanced |
| observability-engineer | 12 | 4mo | No flags | Advanced |
| gcloud-usage | 1 | 7mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by ruvnet
View all by ruvnet →You might also like
service-mesh-observability
wshobson
Implement comprehensive observability for service meshes including distributed tracing, metrics, and visualization. Use when setting up mesh monitoring, debugging latency issues, or implementing SLOs for service communication.
observability-engineer
sickn33
Build production-ready monitoring, logging, and tracing systems. Implements comprehensive observability strategies, SLI/SLO management, and incident response workflows. Use PROACTIVELY for monitoring infrastructure, performance optimization, or production reliability.
gcloud-usage
fcakyon
This skill should be used when user asks about "GCloud logs", "Cloud Logging queries", "Google Cloud metrics", "GCP observability", "trace analysis", or "debugging production issues on GCP".
devops-troubleshooter
sickn33
Expert DevOps troubleshooter specializing in rapid incident response, advanced debugging, and modern observability. Masters log analysis, distributed tracing, Kubernetes debugging, performance optimization, and root cause analysis. Handles production outages, system reliability, and preventive monitoring. Use PROACTIVELY for debugging, incident response, or system troubleshooting.
observability-monitoring-monitor-setup
sickn33
You are a monitoring and observability expert specializing in implementing comprehensive monitoring solutions. Set up metrics collection, distributed tracing, log aggregation, and create insightful da
vercel-observability
jeremylongshore
Execute set up comprehensive observability for Vercel integrations with metrics, traces, and alerts. Use when implementing monitoring for Vercel operations, setting up dashboards, or configuring alerting for Vercel integration health. Trigger with phrases like "vercel monitoring", "vercel metrics", "vercel observability", "monitor vercel", "vercel alerts", "vercel tracing".