名称: 监控 描述: “系统健康监控、警报和错误追踪” 表情符号: “🔔”
监控 - 完整API参考
监控系统健康,追踪错误,并在问题发生时接收警报。
聊天命令
服务控制
/monitor 开始 # 启动监控
/monitor 停止 # 停止监控
/monitor 状态 # 检查监控状态
健康检查
/monitor 健康 # 运行健康检查
/monitor 健康 --verbose # 详细健康信息
/monitor 提供商 # 检查LLM提供商状态
警报
/monitor 警报 # 查看近期警报
/monitor 警报 --unread # 仅未读警报
/monitor 警报目标 # 查看警报目标
/monitor 警报目标 添加 邮箱 <地址> # 添加邮箱目标
/monitor 警报目标 添加 webhook <url> # 添加webhook目标
/monitor 警报目标 移除 <id> # 移除目标
配置
/monitor 配置 # 查看配置
/monitor 冷却 300 # 设置警报冷却时间(秒)
/monitor 阈值 cpu 80 # 设置CPU警报阈值
/monitor 阈值 内存 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, // CPU使用率80%时警报
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}毫秒)`);
}
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}毫秒`);
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何时下线
- 定期检查健康 - 不仅依赖警报