IBM Cloud 用于排除性能故障的特定工具和诊断命令

您可以使用 IBM Cloud 的各种工具和功能来帮助排除性能故障。

使用 IBM Cloud Monitoring (Sysdig)

MongoDB 与由 Sysdig 提供的 IBM Cloud Monitoring 集成,实现全面的可观测性。

访问监控仪表板

  1. 在 IBM Cloud 控制台中导航到 MongoDB 部署。
  2. 单击左侧导航栏中的监控
  3. 单击“启动监控”打开 Sysdig 仪表盘。

需要跟踪的关键指标:

  • 平台指标:

    • CPU 使用率- 目标:< 75% 持续
    • 磁盘利用率- 目标:< 80
    • 磁盘 IOPS- 监控饱和度
    • 网络吞吐量- 确定带宽限制
  • MongoDB-specific 指标:

    • 每秒操作次数- 跟踪工作量模式
    • 活动连接- 根据计划限制进行监控
    • 复制滞后- 目标:< 1 秒
    • 查询执行时间- 识别慢查询
    • 缓存命中率- 目标:> 95%

设置警报

为关键阈值创建警报:

Alert: High CPU Usage
Condition: CPU > 80% for 10 minutes
Action: Notify operations team
Alert: Replication Lag
Condition: Replication lag > 5 seconds
Action: Page on-call engineer
Alert: Disk Space
Condition: Disk usage > 85%
Action: Trigger scaling workflow

创建定制仪表板

  1. 在 Sysdig 中,单击仪表盘 > 创建仪表盘
  2. 添加关键指标面板。
  3. 使用筛选器关注您的 MongoDB 部署。
  4. 保存并与团队共享。

仪表板布局示例

  • 第 1 行:CPU、内存、磁盘利用率
  • 第 2 行:每秒操作次数,活动连接数
  • 第 3 行:复制滞后、查询性能
  • 第 4 行:高速缓存统计、锁定争用

历史分析

  • 使用时间范围选择器获取历史数据
  • 将当前指标与基线进行比较
  • 确定趋势和模式
  • 将事件与性能变化联系起来

建议采取的行动:

  • 在问题发生前设置警报。
  • 每天查看仪表板。
  • 建立基准指标。
  • 记录正常模式与异常模式的比较。
  • 使用指标进行能力规划。

IBM Cloud Activity Tracker 整合

IBM Cloud Activity Tracker 帮助你跟踪可能影响性能的配置更改和管理操作。

访问 Activity Tracker

  1. 导航至 控制台中的 Observability > Activity Tracker 在 IBM Cloud 控制台中。
  2. 选择您的区域。
  3. 通过 MongoDB 实例过滤事件。

需要监测的关键事件:

  • 配置更改:

    • 扩展操作(CPU、内存、磁盘)
    • 备份配置更改
    • 网络配置更新
    • 用户访问权限修改
  • 影响绩效的事件

    • 数据库重启
    • 故障切换事件
    • 维护操作
    • 创建和删除索引

将事件与性能问题联系起来

  1. 注意性能下降的时间戳。
  2. 请在 Activity Tracker 上搜索该时间段的活动。
  3. 查找配置更改或管理操作。
  4. 与监控指标相关联。

事件分析示例

Event: Database scaled from 2GB to 4GB RAM
Time: 2024-01-15 14:30:00 UTC
Impact: Temporary connection disruption (30 seconds)
Result: Improved performance after scaling

合规性审计跟踪

  • 跟踪更改人和更改时间
  • 坚持遵守安全政策
  • 审查访问模式
  • 识别未经授权的更改

建议采取的行动:

  • 定期检查 Activity Tracker 日志。
  • 为重要事件设置警报。
  • 记录变更管理程序。
  • 将事件与性能指标相关联。
  • 用于事故后分析。

IBM Cloud 缩放选项

Databases for MongoDB 提供灵活的扩展选项,以满足您的性能需求。

垂直扩展(计算和内存)

扩展 CPU 和内存资源,以处理增加的工作量。

  • 使用 IBM Cloud 控制台:

    1. 导航至 MongoDB 部署。
    2. 单击左侧导航栏中的“资源”。
    3. 调整内存CPU 滑块。
    4. 审查成本影响。
    5. 单击刻度
  • 使用 IBM Cloud CLI:

    # Scale memory to 8GB and CPU to 4 cores
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --memory 8192 \
      --cpu-allocation 4
    

注意事项

  • 缩放过程中出现短暂连接中断。
  • 计划 5-10 分钟的停机时间。
  • 在饱和之前主动扩大规模。
  • 监控扩展后的指标。

水平扩展(副本集成员)

添加副本集成员,以实现读取扩展和高可用性。

  • 使用 IBM Cloud 控制台:

    1. 导航至资源
    2. 调整成员滑块。
    3. 审查配置。
    4. 单击刻度
  • 使用 IBM Cloud CLI:

    # Add a replica set member
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --members 4
    

优势

  • 将读取负载分配到各次级
  • 提高容错能力
  • 更好的地理分布
  • 添加成员无需停机

存储扩展

增加磁盘空间和 IOPS,提高性能。

  • 使用 IBM Cloud 控制台:

    1. 导航至资源
    2. 调整磁盘滑块。
    3. 审查 IOPS 分配。
    4. 单击刻度
  • 使用 IBM Cloud CLI:

    # Scale disk to 100GB
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --disk-allocation 102400
    

重要信息

  • 存储空间只能增加,不能减少
  • IOPS 随磁盘大小扩展
  • 存储扩展无停机时间
  • 监控磁盘使用趋势

扩展最佳做法

场景 建议操作
高 CPU(>80) 扩展 CPU 内核

| 增加磁盘大小以提高 IOPS | 连接限制 | 向更高级别扩展 | 连接限制 | 增加副本成员 | 写入量大的工作负载 | 扩展 CPU 和内存

成本优化

  • 合理确定部署规模。
  • 利用监测来确定实际需求。
  • 在低流量时段缩小规模(如有支持)。
  • 考虑为可预测的工作负载预留容量。

自动化

# Example: Auto-scale based on CPU threshold
if [ $(ibmcloud cdb deployment-metrics <deployment-id> --metric cpu) -gt 80 ]; then
  ibmcloud cdb deployment-groups-set <deployment-id> member --cpu-allocation 6
fi

IBM Cloud 用于诊断的 CLI 和 API

使用 IBM Cloud CLI 和 API 进行自动诊断和监控。

安装 IBM Cloud CLI

# Install IBM Cloud CLI
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh

# Install databases plugin
ibmcloud plugin install cloud-databases

基本诊断命令

  • 获取部署信息:

    # List all MongoDB deployments
    ibmcloud cdb deployments --type mongodb
    
    # Get specific deployment details
    ibmcloud cdb deployment <deployment-id>
    
  • 检查部署状态:

    # Get deployment status
    ibmcloud cdb deployment-status <deployment-id>
    
    # Get connection strings
    ibmcloud cdb deployment-connections <deployment-id>
    
  • 监测指标:

    # Get CPU metrics
    ibmcloud cdb deployment-metrics <deployment-id> --metric cpu
    
    # Get memory metrics
    ibmcloud cdb deployment-metrics <deployment-id> --metric memory
    
    # Get disk metrics
    ibmcloud cdb deployment-metrics <deployment-id> --metric disk
    
  • 缩放操作:

    # Scale memory
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --memory 16384
    
    # Scale CPU
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --cpu-allocation 8
    
    # Scale disk
    ibmcloud cdb deployment-groups-set <deployment-id> member \
      --disk-allocation 204800
    
  • 备份操作:

    # List backups
    ibmcloud cdb backups <deployment-id>
    
    # Get backup information
    ibmcloud cdb backup <backup-id>
    

使用 IBM Cloud API

  • 认证:

    # Get IAM token
    export IAM_TOKEN=$(ibmcloud iam oauth-tokens --output json | jq -r '.iam_token')
    
  • 使用 API 获取部署指标:

    # Get metrics
    curl -X GET \
      "https://api.{region}.databases.cloud.ibm.com/v5/deployments/{deployment-id}/metrics" \
      -H "Authorization: ${IAM_TOKEN}"
    
  • 使用应用程序接口扩大部署规模:

    # Scale resources
    curl -X PATCH \
      "https://api.{region}.databases.cloud.ibm.com/v5/deployments/{deployment-id}/groups/member" \
      -H "Authorization: ${IAM_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "memory": {
          "allocation_mb": 16384
        },
        "cpu": {
          "allocation_count": 8
        }
      }'
    
  • 诊断脚本样本:

    #!/bin/bash
    # MongoDB Performance Check Script
    
    DEPLOYMENT_ID="your-deployment-id"
    
    echo "=== MongoDB Performance Diagnostics ==="
    echo ""
    
    # Check CPU
    CPU=$(ibmcloud cdb deployment-metrics $DEPLOYMENT_ID --metric cpu --output json | jq -r '.metrics[0].value')
    echo "CPU Usage: ${CPU}%"
    if [ $(echo "$CPU > 80" | bc) -eq 1 ]; then
      echo "⚠️  WARNING: High CPU usage detected"
    fi
    
    # Check Memory
    MEMORY=$(ibmcloud cdb deployment-metrics $DEPLOYMENT_ID --metric memory --output json | jq -r '.metrics[0].value')
    echo "Memory Usage: ${MEMORY}%"
    if [ $(echo "$MEMORY > 80" | bc) -eq 1 ]; then
      echo "⚠️  WARNING: High memory usage detected"
    fi
    
    # Check Disk
    DISK=$(ibmcloud cdb deployment-metrics $DEPLOYMENT_ID --metric disk --output json | jq -r '.metrics[0].value')
    echo "Disk Usage: ${DISK}%"
    if [ $(echo "$DISK > 80" | bc) -eq 1 ]; then
      echo "⚠️  WARNING: High disk usage detected"
    fi
    
    # Check Status
    STATUS=$(ibmcloud cdb deployment-status $DEPLOYMENT_ID --output json | jq -r '.status')
    echo "Deployment Status: ${STATUS}"
    
    echo ""
    echo "=== Diagnostics Complete ==="
    
  • 自动化建议

    • 安排定期健康检查。
    • 与监控系统集成。
    • 根据阈值自动缩放。
    • 为关键指标创建警报。
    • 记录所有操作,以便进行审计跟踪。

IBM Cloud 网络优化

网络配置会极大地影响 MongoDB 的性能,尤其是分布式应用程序。 将私人端点与公共端点进行比较:

专用端点(推荐)

优点:

  • 更低的延迟
  • 增强安全性
  • 无网络出口费用
  • IBM Cloud 工作负载的更佳性能

部署:

  1. 导航至设置 > 端点
  2. 启用专用端点
  3. 更新应用程序中的连接字符串。

连接字符串示例:

mongodb://user:pass@host.private.databases.appdomain.cloud:port/database?authSource=admin&replicaSet=replset

公共端点

用例:

  • 外部应用程序
  • 开发和测试
  • 混合云方案

安全方面的考虑:

  • 使用 IP 允许列表。
  • 执行 TLS / SSL.
  • 定期轮换证书。

服务端点

IBM Cloud 服务端点在 IBM Cloud 内提供优化连接。

优势

  • 减少延迟
  • 无公共互联网穿越
  • 改进安全态势
  • 节省带宽成本

配置

# Enable service endpoint
ibmcloud cdb deployment-service-endpoint-enable <deployment-id>

多区部署考虑因素

Databases for MongoDB 可跨越多个可用性区域。

最佳实践

  • 在同一地区部署应用程序。
  • 使用读取首选项,尽量减少延迟。
  • 考虑 nearest 读取多区应用程序的偏好。
  • 监控区域间的复制滞后。

网络延迟故障排除

  • 测量应用程序的延迟

    # Test connection latency
    time mongo "mongodb://host:port/database" --eval "db.runCommand({ping: 1})"
    
  • 从 IBM Cloud 外壳检查

    # Ping test (if ICMP allowed)
    ping -c 10 your-mongodb-host.databases.appdomain.cloud
    
    # TCP connection test
    nc -zv your-mongodb-host.databases.appdomain.cloud 27017
    

MongoDB 连接诊断

// Check network latency
db.runCommand({ ping: 1 })

// Check connection pool stats
db.serverStatus().connections

地理分布

适用于全球分布式应用:

策略

  • 单一区域:最低延迟,单点故障
  • 多区域读取副本:读取扩展、最终一致性
  • 跨区域复制:灾难恢复,更高的延迟

建议

  • 将数据库放在主要用户群附近。
  • 将 CDN 用于静态内容。
  • 实施应用级缓存。
  • 考虑数据驻留要求。

带宽优化

  • 使用预测来限制数据传输。
  • 为大型结果集设置分页。
  • 在应用层面压缩数据
  • 利用批量业务减少往返次数。

连接池最佳实践

// Node.js example
const client = new MongoClient(uri, {
  maxPoolSize: 50,
  minPoolSize: 10,
  maxIdleTimeMS: 30000,
  serverSelectionTimeoutMS: 5000,
  socketTimeoutMS: 45000
});