系统健康监控Skill monitoring

系统健康监控技能用于监控计算机系统的运行状态,包括CPU、内存使用率、错误率等关键指标,并通过设置阈值和警报目标,实现自动化的错误追踪和问题通知。该技能支持多种警报类型(如提供商下线、高CPU使用率)和事件处理,适用于DevOps、云原生环境和AI应用,确保系统稳定性和可用性。关键词:系统监控、健康检查、警报管理、DevOps、云原生、AI监控。

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

名称: 监控 描述: “系统健康监控、警报和错误追踪” 表情符号: “🔔”

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

最佳实践

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