IBM Cloud herramientas específicas y comandos diagnóstico para solucionar problemas de rendimiento

Puede utilizar varias herramientas y funciones de IBM Cloud para ayudar a solucionar problemas de rendimiento.

Uso de IBM Cloud Monitoring (Sysdig)

MongoDB se integra con IBM Cloud Monitoring powered by Sysdig para una observabilidad completa.

Acceso a los paneles de control

  1. Vaya a su implantación MongoDB en la consola IBM Cloud.
  2. Haga clic en Supervisión en el menú de navegación de la izquierda.
  3. Haga clic en Launch Monitoring para abrir el panel de control de Sysdig.

Métricas clave a seguir:

  • Métricas de la plataforma:

    • Utilización de la CPU- objetivo: < 75% sostenido
    • Utilización del disco- objetivo: < 80%
    • IOPS de disco: control de la saturación
    • Rendimiento de la red- identificar las limitaciones de ancho de banda
  • MongoDB-specific métricas:

    • Operaciones por segundo: seguimiento de los patrones de carga de trabajo
    • Conexiones activas: control de los límites del plan
    • Retraso de replicación- objetivo: < 1 segundo
    • Tiempo de ejecución de las consultas: identificación de las consultas lentas
    • Porcentaje de aciertos de caché- objetivo: > 95%

Configuración de alertas

Cree alertas para umbrales críticos:

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

crear paneles personalizados

  1. En Sysdig, haga clic en Cuadros de mando > Crear cuadro de mando.
  2. Añada paneles para las métricas clave.
  3. Utilice filtros para centrarse en su despliegue de MongoDB.
  4. Guárdalo y compártelo con tu equipo.

Ejemplo de panel de control

  • Fila 1: Utilización de CPU, memoria y disco
  • Fila 2: Operaciones por segundo, conexiones activas
  • Fila 3: Retraso en la replicación, rendimiento de las consultas
  • Fila 4: Estadísticas de caché, contención de bloqueos

Análisis histórico

  • Utilice el selector de intervalos de tiempo para los datos históricos
  • Comparar los parámetros actuales con los de referencia
  • Identificar tendencias y pautas
  • Correlacionar los acontecimientos con los cambios de rendimiento

Acciones recomendadas:

  • Establezca alertas antes de que se produzcan problemas.
  • Revisar diariamente los cuadros de mando.
  • Establecer parámetros de referencia.
  • Documentar los patrones normales en comparación con los patrones anormales.
  • Utilizar métricas para planificar la capacidad.

IBM Cloud Activity Tracker integración

IBM Cloud Activity Tracker le ayuda a realizar un seguimiento de los cambios de configuración y las acciones administrativas que pueden afectar al rendimiento.

Acceso a Activity Tracker

  1. Vaya a Observabilidad > Activity Tracker en la consola IBM Cloud.
  2. Seleccione la región.
  3. Filtre los eventos por su instancia MongoDB.

Acontecimientos clave que hay que vigilar:

  • Cambios en la configuración:

    • Operaciones de escalado (CPU, memoria, disco)
    • Cambios en la configuración de la copia de seguridad
    • Actualizaciones de la configuración de red
    • Modificaciones de acceso de los usuarios
  • Acontecimientos que afectan al rendimiento

    • Reinicio de la base de datos
    • Eventos de conmutación por error
    • Operaciones de mantenimiento
    • Creación y supresión de índices

Correlación de sucesos con problemas de rendimiento

  1. Observe la marca de tiempo de la degradación del rendimiento.
  2. Busque en Activity Tracker los eventos que se celebren a esa hora.
  3. Busque cambios de configuración o acciones administrativas.
  4. Correlacionar con las métricas de seguimiento.

Ejemplo de análisis de sucesos

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

Registro de auditoría para el cumplimiento de la normativa

  • Seguimiento de quién realizó cambios y cuándo
  • Mantener el cumplimiento de las políticas de seguridad
  • Revisar las pautas de acceso
  • Identificar cambios no autorizados

Acciones recomendadas:

  • Revise periódicamente los registros de Activity Tracker.
  • Establezca alertas para eventos críticos.
  • Documentar los procedimientos de gestión de cambios.
  • Correlacione los eventos con las métricas de rendimiento.
  • Utilícelo para el análisis posterior al incidente.

IBM Cloud opciones de escala

Databases for MongoDB ofrece opciones de escalado flexibles para adaptarse a sus necesidades de rendimiento.

Escalado vertical (cálculo y memoria)

Amplíe los recursos de CPU y memoria para gestionar el aumento de la carga de trabajo.

  • A través de la consola IBM Cloud:

    1. Navegue hasta su implantación MongoDB.
    2. Haga clic en Recursos en el menú de navegación de la izquierda.
    3. Ajuste los controles deslizantes Memoria y CPU.
    4. Revisar el impacto de los costes.
    5. Pulse Escalar.
  • Utilización de la CLI IBM Cloud:

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

Consideraciones

  • Breve interrupción de la conexión durante el escalado.
  • Prevea un tiempo de inactividad de 5-10 minutos.
  • Escala proactivamente antes de la saturación.
  • Supervise las métricas tras la ampliación.

Escalado horizontal (miembros del conjunto de réplicas)

Añada miembros al conjunto de réplicas para escalado de lectura y alta disponibilidad.

  • A través de la consola IBM Cloud:

    1. Navegue hasta Recursos.
    2. Ajuste el control deslizante Miembros.
    3. Configuración de revisión.
    4. Pulse Escalar.
  • Utilización de la CLI IBM Cloud:

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

Ventajas

  • Distribuir la carga de lectura entre los secundarios
  • Mayor tolerancia a los fallos
  • Mejor distribución geográfica
  • No hay tiempo de inactividad para añadir miembros

Escalado de almacenamiento

Aumente el espacio en disco y las IOPS para mejorar el rendimiento.

  • A través de la consola IBM Cloud:

    1. Navegue hasta Recursos.
    2. Ajuste el control deslizante Disco.
    3. Revisar la asignación de IOPS.
    4. Pulse Escalar.
  • Utilización de la CLI IBM Cloud:

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

Información importante:

  • El almacenamiento sólo puede aumentar, no disminuir
  • Escala de IOPS con el tamaño del disco
  • Sin tiempo de inactividad para ampliar el almacenamiento
  • Supervisar las tendencias de uso del disco

Mejores prácticas de ampliación

Escenario Acción recomendada
CPU alta (>80%) Escala de núcleos de CPU

| Latencia del disco | Aumentar el tamaño del disco para más IOPS | | Límites de conexión | Escala a nivel superior | | Carga de trabajo de lectura pesada | Añadir miembros de réplica | | Carga de trabajo con mucha escritura | Escala CPU y memoria |

Optimizar costes

  • Dimensione correctamente su despliegue.
  • Utilizar la supervisión para identificar las necesidades reales.
  • Reducción durante los periodos de poco tráfico (si se admite).
  • Considere la posibilidad de reservar capacidad para cargas de trabajo previsibles.

Automatización

# 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 y API para diagnósticos

Utilice IBM Cloud CLI y API para el diagnóstico y la supervisión automatizados.

Instalación de la CLI de IBM Cloud

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

# Install databases plugin
ibmcloud plugin install cloud-databases

Comandos diagnóstico esenciales

  • Obtener información sobre el despliegue:

    # List all MongoDB deployments
    ibmcloud cdb deployments --type mongodb
    
    # Get specific deployment details
    ibmcloud cdb deployment <deployment-id>
    
  • Compruebe el estado del despliegue:

    # Get deployment status
    ibmcloud cdb deployment-status <deployment-id>
    
    # Get connection strings
    ibmcloud cdb deployment-connections <deployment-id>
    
  • Supervisar las métricas:

    # 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
    
  • Operaciones de escalado:

    # 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
    
  • Operaciones de copia de seguridad:

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

Utilización de la API IBM Cloud

  • Autentificación:

    # Get IAM token
    export IAM_TOKEN=$(ibmcloud iam oauth-tokens --output json | jq -r '.iam_token')
    
  • Obtenga métricas de despliegue utilizando la API:

    # Get metrics
    curl -X GET \
      "https://api.{region}.databases.cloud.ibm.com/v5/deployments/{deployment-id}/metrics" \
      -H "Authorization: ${IAM_TOKEN}"
    
  • Despliegue a escala mediante la API:

    # 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
        }
      }'
    
  • Ejemplo de script de diagnóstico:

    #!/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 ==="
    
  • Recomendaciones de automatización

    • Programe revisiones sanitarias periódicas.
    • Integración con sistemas de vigilancia.
    • Automatice el escalado en función de umbrales.
    • Cree alertas para las métricas críticas.
    • Registre todas las operaciones para la pista de auditoría.

IBM Cloud optimización de la red

La configuración de la red influye significativamente en el rendimiento de MongoDB, especialmente en el caso de las aplicaciones distribuidas. Compara los puntos finales privados con los públicos:

Puntos finales privados (recomendado)

Ventajas:

  • Menor latencia
  • Mayor seguridad
  • Sin gastos de salida de Internet
  • Mejor rendimiento para las cargas de trabajo de IBM Cloud

Configuración:

  1. Vaya a Configuración > Endpoints.
  2. Habilitar punto final privado.
  3. Actualizar las cadenas de conexión en las aplicaciones.

Ejemplo de cadena de conexión:

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

Puntos finales públicos

Casos de uso:

  • Aplicaciones externas
  • Desarrollo y pruebas
  • Escenarios de nube híbrida

Consideraciones sobre la seguridad:

  • Utilizar IP allowlisting.
  • Aplicar TLS / SSL.
  • Rote las credenciales con regularidad.

Puntos finales de servicio

IBM Cloud ofrecen una conectividad optimizada en IBM Cloud.

Ventajas

  • Latencia reducida
  • No hay acceso público a Internet
  • Mayor seguridad
  • Ahorro de ancho de banda

Configuración

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

Consideraciones sobre el despliegue multizona

Databases for MongoDB puede abarcar varias zonas de disponibilidad.

Prácticas recomendadas

  • Despliegue de aplicaciones en la misma región.
  • Utiliza las preferencias de lectura para minimizar la latencia.
  • Considere nearest preferencia de lectura para aplicaciones multizona.
  • Supervisar el retardo de replicación entre zonas.

Solución de problemas de latencia de red

  • Medir la latencia de la aplicación

    # Test connection latency
    time mongo "mongodb://host:port/database" --eval "db.runCommand({ping: 1})"
    
  • Comprobación desde IBM Cloud shell

    # 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 diagnóstico de conexiones

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

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

Distribución geográfica

Para aplicaciones distribuidas globalmente:

Estrategias

  • Región única: Latencia más baja, único punto de fallo
  • Multi-región con réplicas de lectura: Escalado de lectura, coherencia final
  • Replicación entre regiones: Recuperación en caso de catástrofe, mayor latencia

Recomendaciones

  • Colocar la base de datos cerca de la base de usuarios principal.
  • Utilice CDN para contenido estático.
  • Implementar el almacenamiento en caché a nivel de aplicación.
  • Considere los requisitos de residencia de los datos.

Optimización del ancho de banda

  • Utiliza proyecciones para limitar la transferencia de datos.
  • Implementación de la paginación para grandes conjuntos de resultados.
  • Comprimir datos a nivel de aplicación.
  • Utilizar las operaciones a granel para reducir los viajes de ida y vuelta.

Mejores prácticas de agrupación de conexiones

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