Crear alarmas y paneles de control de supervisión de OCI personalizados de PostgreSQL mediante Container Instances
Introducción
En este tutorial se proporcionan instrucciones paso a paso para desplegar una solución de supervisión personalizada para PostgreSQL mediante una aplicación Java basada en Docker en Oracle Cloud Infrastructure (OCI). Demostraremos cómo crear alertas y paneles de control personalizados para ranuras de replicación inactivas y retraso de replicación en OCI mediante un contenedor basado en máquina virtual (VM). Si bien la configuración actual se centra en la supervisión de la demora de replicación PostgreSQL y las ranuras de replicación inactivas, el diseño es flexible y se puede ampliar fácilmente para realizar un seguimiento de las métricas de base de datos adicionales mediante la modificación del código de aplicación.
Objetivos
-
Despliegue una aplicación Java basada en Docker en una máquina virtual de OCI para supervisar PostgreSQL.
-
Cree alarmas y paneles de control personalizados en OCI para ranuras de replicación inactivas y retraso de replicación mediante la solución de supervisión desplegada.
Tarea 1: Descarga y configuración del servicio de supervisión
-
Descargue el archivo
Postgres-monitoring-services.zip
desde aquí: Postgres-monitoring-services.zip. -
Descomprímalo y siga las instrucciones del archivo
README.md
para crear y ejecutar la aplicación. -
Las instrucciones de creación y despliegue de Docker se incluyen en el repositorio.
Nota: Las instrucciones para crear y transferir la imagen de Docker ya están disponibles en
README.md
del repositorio de proyectos.
Tarea 2: Creación de un grupo Dinámico
Los grupos dinámicos permiten a su máquina virtual de contenedor acceder a servicios de OCI como OCI Monitoring, OCI Vault y OCI Registry sin utilizar credenciales codificadas y sin almacenar credenciales en su imagen.
Utilice la siguiente información:
- Nombre: introduzca
psql_monitoring_with_container_vm_dg
. -
Regla de coincidencia:
ALL {resource.type = 'computecontainerinstance', resource.compartment.id = '<your-compartment-id>'}
Nota:
compartment.id
es el OCID del compartimento en el que se creará la instancia de contenedor.
Tarea 3: Configuración de la red (VCN y gateway de servicio)
Para garantizar una comunicación perfecta, coloque la máquina virtual de contenedor en la misma subred privada que el sistema de base de datos PostgreSQL. Activar el acceso a los servicios de OCI mediante un gateway de servicios.
Reglas de lista de seguridad:
Asegúrese de que las siguientes reglas se agregan a la lista de seguridad de su subred privada, si aún no están presentes.
Tipo | CIDR de origen | Protocolo | Puerto | Finalidad |
---|---|---|---|---|
Ingress | Private-subnet-CIDR | TCP | 5.432 | PostgreSQL Acceso |
Salida | 0.0.0.0/0 | Todas | Todas | Acceder a servicios de OCI |
Tarea 4: Uso de OCI Vault para el almacenamiento seguro de contraseñas
Utilice OCI Vault para el almacenamiento seguro de contraseñas para evitar la codificación de credenciales de la base de datos.
-
Cree un almacén y agregue un secreto que contenga la contraseña PostgreSQL.
-
Registre el OCID de secreto de almacén.
-
Vuelva a utilizar el secreto si ya existe.
Tarea 5: Definición de las políticas de Oracle Cloud Infrastructure Identity and Access Management
Asocie estas políticas de IAM de OCI.
Allow dynamic-group psql_monitoring_with_container_vm_dg to read vaults in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read secret-bundles in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to use metrics in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read repos in compartment <your-tenancy-id>
Tarea 6: Inicio de Container Instances
Vaya a la consola de OCI, vaya a Servicios para desarrolladores, Artefacto de contenedor, Instancias de contenedor, Crear instancia e introduzca la siguiente información:
- VCN/subred: seleccione la misma que el sistema de base de datos.
- Shape: seleccione 1 OCPU, 4 GB.
- Imagen de Docker: seleccione En OCIR.
-
Variables de Entorno:
DB_PASSWORD_VAULT_ID=<your-vault-secret-ocid> DB_SYSTEM_ID=<your-db-system-ocid> DB_PE=<your-db-system-private-endpoint-FQDN> DB_PSQL_USER=<your-db-user> METRIC_COMPARTMENT_ID=<your-compartment-id> METRIC_NAMESPACE=postgres_monitor_with_container_vm REPLICATION_LAG_METRIC_NAME=replication_lag_metric INACTIVE_SLOTS_METRIC_NAME=inactive_slot_metric MONITOR_INTERVAL_SEC=60
Nota: El acceso se otorga sin credenciales a través del grupo dinámico de OCI IAM.
Tarea 7: Comprobación de logs en la consola de OCI
Vaya a la consola de OCI, vaya a Servicios para desarrolladores, Artefacto de contenedor, Instancias de contenedor, seleccione la instancia y haga clic en el separador Contenedores para inspeccionar los logs y el estado del tiempo de ejecución.
Tarea 8: Visualización de métricas en el explorador de métricas
Vaya a la consola de OCI, vaya a Observability & Management, Metrics Explorer e introduzca la siguiente información:
- Espacio de nombres: introduzca
postgres_monitor_with_container_vm
. - Métricas: seleccione
replication_lag_metric
yinactive_slot_metric
. - Filtro: introduzca
DBSystemId = "<your-db-system-ocid>"
.
Consulta de ejemplo:
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.mean()
Tarea 9: Configuración de un tema y suscripciones de OCI Notifications
-
Vaya a la consola de OCI, vaya a Application Integration y haga clic en Notifications.
-
Cree un tema. Por ejemplo,
PostgresCustomMonitoringAlerts
. -
Agregue Suscripciones (correo electrónico, webhook, etc.).
-
Enlace este tema a las alarmas para obtener alertas en tiempo real.
Tarea 10: Configuración de alarmas de supervisión de OCI para métricas clave
-
Alarma de demora de replicación
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.max()
- Disparador: introduzca > 1.000.000 (1 MB).
- Retraso: introduzca 5 minutos.
- Gravedad: seleccione Crítico.
-
Alarma de ranuras de replicación inactivas
inactive_slot_metric[1h]{DBSystemId = "<your-db-system-ocid>"}.max()
- Disparador: introduzca > 1.
- Retraso: introduzca 2 horas.
- Gravedad: seleccione Advertencia.
-
Falta la alarma de datos
- Métrica: seleccione
replication_lag_metric
. - Disparador: introduzca Sin datos durante 10 minutos.
- Gravedad: seleccione Error.
- Métrica: seleccione
Tarea 11: Creación de un panel de control personalizado
-
Vaya a la consola de OCI, vaya a Observability & Management y haga clic en Dashboards.
-
Haga clic en Nuevo panel de control.
-
Agregue widgets mediante Gráfico de métricas o Generador de consultas.
-
Introduzca la siguiente información.
- Espacio de nombres: introduzca
postgres_monitor_with_container_vm
. - Métricas: seleccione
replication_lag_metric
yinactive_slot_metric
.
- Espacio de nombres: introduzca
-
Personalizar tipos de gráficos, filtros e intervalos de tiempo.
Tabla de Resumen
Componente | Finalidad |
---|---|
Grupo Dinámico | Otorga acceso a OCI a la máquina virtual de contenedor |
OCI Vault | Almacenamiento seguro de credenciales de base de datos |
OCI Registry | Repositorio de imágenes de Docker de host |
Agente de Control | Recopila métricas PostgreSQL personalizadas |
Alarmas | Alertas de demora, ranuras, datos faltantes |
VM de contenedor | Ejecuta la herramienta de supervisión basada en Java |
Panel de control | Visualiza métricas en tiempo real |
Aspectos destacados de la arquitectura sin servidor y resistente
-
Arquitectura sin servidor:
- Implementado mediante máquina virtual de contenedor, no es necesario gestionar la infraestructura manualmente.
- OCI gestiona el aprovisionamiento y la recuperación de máquinas virtuales a partir de fallos de nivel de host
Ventaja: reduce la sobrecarga operativa y mejora la tolerancia a fallos.
-
Reinicio automático de contenedores:
- Los contenedores se definen con una política de reinicio predeterminada.
- Si la aplicación se bloquea o se cierra inesperadamente, se reinicia automáticamente.
Ventaja: garantiza una alta disponibilidad y minimiza el tiempo de inactividad.
-
Alarma basada en métricas:
- Se configura una alarma dedicada para que se dispare cuando falten métricas esperadas.
Ventaja: actúa como un modo a prueba de fallos para detectar fallos silenciosos y activar alertas tempranas.
Solución de problemas y problemas
-
Problemas de conectividad:
- Asegúrese de que
5432
esté abierto en la lista de seguridad de la subred. - Confirme que el gateway de servicio está asociado para el acceso privado.
- Asegúrese de que
-
Errores de permisos de OCI IAM:
- Verifique que el grupo dinámico coincida con el compartimento correcto.
- Asegúrese de que se aplican las políticas necesarias.
-
Errores de configuración:
- Validar variables de entorno.
- Verifique los OCID de métrica y secreto.
- Utilice logs para rastrear fallos de tiempo de ejecución.
Enlaces relacionados
Acuses de recibo
- Autores - Arvind Yadav, Kanaram Bhari (Ingeniero de software - OCI Database with PostgreSQL)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Create PostgreSQL Custom OCI Monitoring Alarms and Dashboard using Container Instances
G37658-01
Copyright ©2025, Oracle and/or its affiliates.