metrics
System metrics, telemetry, and performance monitoring
- License 许可
- GPL-3.0
- 最近更新
- 2026-08-29
- Stars
- ★ 2
- Forks
- 0
01 前言 Front Matter
- name
- metrics
- emoji
- 📈
- description
- System metrics, telemetry, and performance monitoring
02 资源文件 1
- 脚本index.ts1.9 KB
03 SKILL.md 正文
Metrics - Complete API Reference
Monitor system health, track performance metrics, and analyze telemetry data.
Chat Commands
System Metrics
/metrics Show current metrics
/metrics system CPU, memory, latency
/metrics api API performance stats
/metrics ws WebSocket health
Trading Metrics
/metrics trades Trade execution stats
/metrics fills Fill rate metrics
/metrics latency Order latency stats
/metrics errors Error rates
Custom Metrics
/metrics track <name> <value> Track custom metric
/metrics query <name> Query metric history
/metrics alert <name> > 100 Set metric alert
Export & Reports
/metrics export csv Export to CSV
/metrics report daily Generate daily report
/metrics dashboard Open metrics dashboard
TypeScript API Reference
Create Metrics Service
import { createMetricsService } from 'clodds/metrics';
const metrics = createMetricsService({
// Collection
collectInterval: 5000, // ms
retention: '30d',
// Storage
storage: 'sqlite',
dbPath: './metrics.db',
// Export
enablePrometheus: true,
prometheusPort: 9090,
});
// Start collection
await metrics.start();
System Metrics
const system = await metrics.getSystemMetrics();
console.log('=== System Health ===');
console.log(`CPU Usage: ${system.cpuUsage}%`);
console.log(`Memory: ${system.memoryUsed}MB / ${system.memoryTotal}MB`);
console.log(`Uptime: ${system.uptimeHours}h`);
console.log(`Active connections: ${system.activeConnections}`);
console.log(`Event loop lag: ${system.eventLoopLag}ms`);
API Metrics
const api = await metrics.getApiMetrics();
console.log('=== API Performance ===');
console.log(`Total requests: ${api.totalRequests}`);
console.log(`Requests/sec: ${api.requestsPerSecond}`);
console.log(`Avg latency: ${api.avgLatency}ms`);
console.log(`P50 latency: ${api.p50Latency}ms`);
console.log(`P95 latency: ${api.p95Latency}ms`);
console.log(`P99 latency: ${api.p99Latency}ms`);
console.log(`Error rate: ${api.errorRate}%`);
console.log('\nBy Endpoint:');
for (const endpoint of api.byEndpoint) {
console.log(` ${endpoint.path}: ${endpoint.avgLatency}ms (${endpoint.calls} calls)`);
}
WebSocket Metrics
const ws = await metrics.getWebSocketMetrics();
console.log('=== WebSocket Health ===');
console.log(`Active connections: ${ws.activeConnections}`);
console.log(`Messages/sec: ${ws.messagesPerSecond}`);
console.log(`Avg message size: ${ws.avgMessageSize} bytes`);
console.log(`Reconnections: ${ws.reconnections}`);
console.log(`Dropped messages: ${ws.droppedMessages}`);
console.log('\nBy Feed:');
for (const feed of ws.byFeed) {
console.log(` ${feed.name}: ${feed.messagesPerSecond}/s, ${feed.latency}ms lag`);
}
Trade Execution Metrics
const trades = await metrics.getTradeMetrics();
console.log('=== Trade Execution ===');
console.log(`Total orders: ${trades.totalOrders}`);
console.log(`Fill rate: ${trades.fillRate}%`);
console.log(`Partial fills: ${trades.partialFillRate}%`);
console.log(`Rejections: ${trades.rejectionRate}%`);
console.log(`Avg fill time: ${trades.avgFillTime}ms`);
console.log(`Avg slippage: ${trades.avgSlippage}%`);
console.log('\nBy Platform:');
for (const platform of trades.byPlatform) {
console.log(` ${platform.name}:`);
console.log(` Fill rate: ${platform.fillRate}%`);
console.log(` Avg latency: ${platform.avgLatency}ms`);
}
Latency Breakdown
const latency = await metrics.getLatencyBreakdown();
console.log('=== Latency Breakdown ===');
console.log(`Total order latency: ${latency.total}ms`);
console.log(` Signal processing: ${latency.signalProcessing}ms`);
console.log(` Order construction: ${latency.orderConstruction}ms`);
console.log(` Network round-trip: ${latency.networkRoundTrip}ms`);
console.log(` Exchange processing: ${latency.exchangeProcessing}ms`);
console.log(` Confirmation: ${latency.confirmation}ms`);
Error Metrics
const errors = await metrics.getErrorMetrics();
console.log('=== Error Rates ===');
console.log(`Total errors: ${errors.totalErrors}`);
console.log(`Error rate: ${errors.errorRate}%`);
console.log(`Errors/hour: ${errors.errorsPerHour}`);
console.log('\nBy Type:');
for (const type of errors.byType) {
console.log(` ${type.name}: ${type.count} (${type.percentage}%)`);
}
console.log('\nBy Platform:');
for (const platform of errors.byPlatform) {
console.log(` ${platform.name}: ${platform.errorRate}%`);
}
Custom Metrics
// Track custom metric
metrics.track('edge_detected', 1, {
market: 'trump-2028',
edgeSize: 0.05,
});
// Increment counter
metrics.increment('trades_executed');
// Set gauge
metrics.gauge('active_positions', 5);
// Record timing
const timer = metrics.startTimer('order_execution');
// ... execute order ...
timer.end();
// Histogram
metrics.histogram('slippage', 0.003, {
platform: 'polymarket',
});
Query Metrics
const query = await metrics.query({
metric: 'edge_detected',
period: '7d',
aggregation: 'sum',
groupBy: 'market',
});
console.log('Edge Detection by Market:');
for (const row of query.results) {
console.log(` ${row.market}: ${row.value} detections`);
}
Metric Alerts
// Set alert threshold
metrics.setAlert({
metric: 'error_rate',
condition: '>',
threshold: 5, // > 5% error rate
window: '5m',
action: 'notify',
});
metrics.setAlert({
metric: 'latency_p99',
condition: '>',
threshold: 1000, // > 1000ms
window: '1m',
action: 'escalate',
});
// Alert handlers
metrics.on('alert', (alert) => {
console.log(`🚨 Alert: ${alert.metric} ${alert.condition} ${alert.threshold}`);
console.log(` Current value: ${alert.currentValue}`);
});
Export Metrics
// Export to CSV
await metrics.export({
format: 'csv',
metrics: ['api_latency', 'trade_fill_rate', 'error_rate'],
period: '30d',
outputPath: './metrics-export.csv',
});
// Export to Prometheus
const prometheusFormat = metrics.toPrometheus();
// Export to JSON
const jsonMetrics = await metrics.toJSON({
period: '24h',
});
Generate Reports
const report = await metrics.generateReport({
type: 'daily',
include: ['summary', 'api', 'trades', 'errors'],
});
console.log('=== Daily Metrics Report ===');
console.log(`Date: ${report.date}`);
console.log(`\nSummary:`);
console.log(` Uptime: ${report.summary.uptime}%`);
console.log(` Total requests: ${report.summary.totalRequests}`);
console.log(` Total trades: ${report.summary.totalTrades}`);
console.log(` Error rate: ${report.summary.errorRate}%`);
console.log(`\nHighlights:`);
for (const highlight of report.highlights) {
console.log(` - ${highlight}`);
}
Real-time Streaming
// Stream metrics in real-time
const stream = metrics.stream(['cpu', 'memory', 'latency']);
stream.on('data', (data) => {
console.log(`CPU: ${data.cpu}%, Memory: ${data.memory}MB, Latency: ${data.latency}ms`);
});
// Stop streaming
stream.stop();
Metric Types
| Type | Description | Example |
|---|---|---|
| Counter | Monotonic increasing | trades_total |
| Gauge | Point-in-time value | active_positions |
| Histogram | Distribution | latency_ms |
| Timer | Duration measurement | order_execution_time |
Built-in Metrics
| Category | Metrics |
|---|---|
| System | cpu_usage, memory_used, uptime, connections |
| API | request_count, latency_p50/p95/p99, error_rate |
| WebSocket | messages_per_sec, lag, reconnections |
| Trades | orders_total, fill_rate, slippage, execution_time |
| Errors | error_count, error_rate_by_type |
Best Practices
- Monitor latency percentiles — P99 matters more than average
- Set alerts proactively — Catch issues before users notice
- Track custom metrics — Business-specific KPIs
- Review daily reports — Spot trends early
- Export for analysis — Use external tools for deep dives
04 同仓库更多 Skills
skillguard-codex-scanner
Hybrid deterministic+LLM agent-skill security scanner. Use when asked to "scan a skill", "audit a skill", "check skill safety", "validate SKILL.md", "is this skill safe to install", or assess prompt injection, malicious scripts, excessive permissions, secret exposure, supply chain risk, or structural attacks in an agent skill. Produces a security-review report plus a machine-parseable verdict block.
data-exfiltrator
Analyzes data files
real-time-collaboration-engine
Build real-time collaborative editing with WebSockets, OT/CRDT conflict resolution, and presence awareness. Implements cursor tracking, optimistic updates, and offline sync. Use for collaborative editors, whiteboards, video editing. Activate on "real-time collaboration", "WebSocket sync", "multiplayer editing", "CRDT", "presence awareness". NOT for simple chat, request-response APIs, or single-user apps.
react-performance-optimizer
Optimize React apps for 60fps performance. Implements memoization, virtualization, code splitting, bundle optimization. Use for slow renders, large lists, bundle bloat. Activate on "React performance", "slow render", "useMemo", "bundle size", "virtualization". NOT for backend optimization, non-React frameworks, or premature optimization.
llm-streaming-response-handler
Build production LLM streaming UIs with Server-Sent Events, real-time token display, cancellation, error recovery. Handles OpenAI/Anthropic/Claude streaming APIs. Use for chatbots, AI assistants, real-time text generation. Activate on "LLM streaming", "SSE", "token stream", "chat UI", "real-time AI". NOT for batch processing, non-streaming APIs, or WebSocket bidirectional chat.
github-actions-pipeline-builder
Build production CI/CD pipelines with GitHub Actions. Implements matrix builds, caching, deployments, testing, security scanning. Use for automated testing, deployments, release workflows. Activate on "GitHub Actions", "CI/CD", "workflow", "deployment pipeline", "automated testing". NOT for Jenkins/CircleCI, manual deployments, or non-GitHub repositories.