监控 - 完整的API参考
监控系统健康,跟踪错误,并在问题发生时接收警报。
聊天命令
服务控制
/monitor start # 开始监控
/monitor stop # 停止监控
/monitor status # 检查监控状态
健康检查
/monitor health # 运行健康检查
/monitor health --verbose # 详细健康信息
/monitor providers # 检查LLM提供商状态
警报
/monitor alerts # 查看最近的警报
/monitor alerts --unread # 仅未读警报
/monitor alert-targets # 查看警报目的地
/monitor alert-targets add email <addr> # 添加电子邮件目标
/monitor alert-targets add webhook <url> # 添加webhook目标
/monitor alert-targets remove <id> # 移除目标
配置
/monitor config # 查看配置
/monitor cooldown 300 # 设置警报冷却时间(秒)
/monitor threshold cpu 80 # 设置CPU警报阈值
/monitor threshold memory 90 # 设置内存阈值
TypeScript API参考
创建监控服务
import { createMonitoringService } from 'clodds/monitoring';
const monitor = createMonitoringService({
// 健康检查间隔
intervalMs: 60000, // 1分钟
// 警报目标
alertTargets: [
{ type: 'email', address: 'alerts@example.com' },
{ type: 'webhook', url: 'https://hooks.example.com/alerts' },
],
// 警报冷却(防止垃圾邮件)
alertCooldownMs: 300000, // 5分钟
// 阈值
thresholds: {
cpu: 80, // 80% CPU时发出警报
memory: 90, // 90%内存时发出警报
errorRate: 10, // 10%错误率时发出警报
},
});
开始/停止监控
// 开始监控
await monitor.start();
// 检查是否运行
const isRunning = monitor.isRunning();
// 停止监控
await monitor.stop();
健康检查
// 运行健康检查
const health = await monitor.runHealthCheck();
console.log(`总体:${health.status}`); // 'healthy' | 'degraded' | 'unhealthy'
console.log('
系统:');
console.log(` CPU: ${health.system.cpu}%`);
console.log(` 内存: ${health.system.memory}%`);
console.log(` 磁盘: ${health.system.disk}%`);
console.log('
提供商:');
for (const [name, status] of Object.entries(health.providers)) {
console.log(` ${name}: ${status.status} (${status.latencyMs}ms)`);
}
console.log('
服务:');
for (const [name, status] of Object.entries(health.services)) {
console.log(` ${name}: ${status.status}`);
}
提供商健康
// 检查LLM提供商状态
const providers = await monitor.checkProviders();
for (const provider of providers) {
console.log(`${provider.name}:`);
console.log(` 状态: ${provider.status}`);
console.log(` 延迟: ${provider.latencyMs}ms`);
console.log(` 最后错误: ${provider.lastError || '无'}`);
console.log(` 错误率: ${provider.errorRate}%`);
}
警报管理
// 获取最近的警报
const alerts = await monitor.getAlerts({ limit: 10 });
for (const alert of alerts) {
console.log(`[${alert.severity}] ${alert.title}`);
console.log(` ${alert.message}`);
console.log(` 时间: ${alert.timestamp}`);
console.log(` 已确认: ${alert.acknowledged}`);
}
// 确认警报
await monitor.acknowledgeAlert(alertId);
// 获取未读计数
const unread = await monitor.getUnreadAlertCount();
警报目标
// 添加警报目标
await monitor.addAlertTarget({
type: 'email',
address: 'team@example.com',
});
await monitor.addAlertTarget({
type: 'webhook',
url: 'https://hooks.slack.com/...',
});
// 列出目标
const targets = monitor.getAlertTargets();
// 移除目标
await monitor.removeAlertTarget(targetId);
事件处理器
// 监听事件
monitor.on('alert', (alert) => {
console.log(`🚨 警报: ${alert.title}`);
});
monitor.on('healthCheck', (health) => {
if (health.status !== 'healthy') {
console.log(`⚠️ 系统 ${health.status}`);
}
});
monitor.on('providerDown', (provider) => {
console.log(`❌ 提供商下线: ${provider.name}`);
});
monitor.on('providerRecovered', (provider) => {
console.log(`✅ 提供商恢复: ${provider.name}`);
});
手动警报
// 发送手动警报
await monitor.sendAlert({
severity: 'warning', // 'info' | 'warning' | 'error' | 'critical'
title: '自定义警报',
message: '发生了重要的事情',
metadata: { key: 'value' },
});
警报类型
| 类型 | 触发器 |
|---|---|
| provider_down | LLM提供商无响应 |
| high_cpu | CPU使用率超过阈值 |
| high_memory | 内存使用率超过阈值 |
| high_error_rate | 错误率超过阈值 |
| unhandled_exception | 未捕获的异常 |
| unhandled_rejection | 未处理的承诺拒绝 |
配置
// 更新配置
monitor.configure({
intervalMs: 30000,
alertCooldownMs: 600000,
thresholds: {
cpu: 85,
memory: 95,
errorRate: 5,
},
});
最佳实践
- 设置适当的阈值 - 避免警报疲劳
- 使用冷却时间 - 防止警报垃圾邮件
- 多个目标 - 电子邮件+webhook用于冗余
- 确认警报 - 跟踪已处理的内容
- 监控提供商 - 知道何时API下线
- 定期检查健康 - 不仅依赖警报