监控 monitoring

系统健康监控,错误跟踪和警报管理工具,用于实时监控系统性能和问题,避免服务中断。

DevOps 0 次安装 0 次浏览 更新于 3/5/2026

监控 - 完整的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,
  },
});

最佳实践

  1. 设置适当的阈值 - 避免警报疲劳
  2. 使用冷却时间 - 防止警报垃圾邮件
  3. 多个目标 - 电子邮件+webhook用于冗余
  4. 确认警报 - 跟踪已处理的内容
  5. 监控提供商 - 知道何时API下线
  6. 定期检查健康 - 不仅依赖警报