Créer des alarmes et un tableau de bord de surveillance OCI personnalisées PostgreSQL à l'aide des instances de conteneur
Présentation
Ce tutoriel fournit des instructions étape par étape pour déployer une solution de surveillance personnalisée pour PostgreSQL à l'aide d'une application Java basée sur Docker sur Oracle Cloud Infrastructure (OCI). Nous allons démontrer comment créer des alertes et des tableaux de bord personnalisés pour les emplacements de réplication inactifs et le décalage de réplication dans OCI à l'aide d'un conteneur basé sur une machine virtuelle. Bien que la configuration actuelle se concentre sur la surveillance du décalage de réplication PostgreSQL et des emplacements de réplication inactifs, la conception est flexible et peut être facilement étendue pour suivre des mesures de base de données supplémentaires en modifiant le code de l'application.
Objectifs
-
Déployez une application Java basée sur Docker sur une machine virtuelle OCI pour surveiller PostgreSQL.
-
Créez des alarmes et des tableaux de bord personnalisés dans OCI pour les emplacements de réplication inactifs et le décalage de réplication à l'aide de la solution de surveillance déployée.
Tâche 1 : Télécharger et configurer le service de surveillance
-
Téléchargez le fichier
Postgres-monitoring-services.zip
à partir d'ici : Postgres-monitoring-services.zip. -
Décompressez et suivez les instructions du fichier
README.md
pour créer et exécuter l'application. -
Les instructions de création et de déploiement de Docker sont incluses dans le référentiel.
Note : Les instructions de création et de poussée de l'image Docker sont déjà disponibles dans
README.md
du référentiel de projet.
Tâche 2 : Créer un groupe dynamique
Les groupes dynamiques permettent à votre machine virtuelle de conteneur d'accéder aux services OCI tels que le service de surveillance pour OCI, le service de chambre forte pour OCI et le registre OCI sans utiliser de données d'identification codées en dur et sans stocker les données d'identification dans votre image.
Utilisez les informations suivantes :
- Nom : Entrez
psql_monitoring_with_container_vm_dg
. -
Règle de correspondance :
ALL {resource.type = 'computecontainerinstance', resource.compartment.id = '<your-compartment-id>'}
Note :
compartment.id
est l'OCID du compartiment dans lequel l'instance de conteneur sera créée.
Tâche 3 : Configurer le réseau (VCN et la passerelle de service)
Pour assurer une communication transparente, placez votre machine virtuelle de conteneur dans le même sous-réseau privé que votre système de base de données PostgreSQL. Activer l'accès aux services OCI à l'aide d'une passerelle de service.
Règles de la liste de sécurité :
Assurez-vous que les règles suivantes sont ajoutées à la liste de sécurité de votre sous-réseau privé, si elles ne sont pas déjà présentes.
Type | CIDR source | Protocole | Port | Objet |
---|---|---|---|---|
Entrant | bloc CIDR de sous-réseau privé | TCP | 5,432 | Accès à PostgreSQL |
Trafic sortant | 0.0.0.0/0 | Tous | Tous | Accéder aux services OCI |
Tâche 4 : Utiliser OCI Vault pour le stockage sécurisé des mots de passe
Utilisez OCI Vault pour le stockage sécurisé des mots de passe afin d'éviter le codage en dur des données d'identification de base de données.
-
Créez une chambre forte et ajoutez une clé secrète contenant le mot de passe PostgreSQL.
-
Enregistrez l'OCID de la clé secrète de la chambre forte.
-
Réutilisez la clé secrète si elle existe déjà.
Tâche 5 : Définir les politiques d'Oracle Cloud Infrastructure Identity and Access Management
Joindre ces politiques OCI IAM.
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>
Tâche 6 : Lancer les instances de conteneur
Allez à la console OCI, naviguez jusqu'à Services de développement, Artefact de conteneur, Instances de conteneur, Créer une instance et entrez les informations suivantes :
- VCN/Sous-réseau : Sélectionnez la même valeur que le système de base de données.
- Forme : Sélectionnez 1 OCPU, 4 Go.
- Image Docker : Sélectionnez De OCIR.
-
Variables d'environnement :
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
Note : L'accès est accordé sans données d'identification au moyen du groupe dynamique OCI IAM.
Tâche 7 : Vérifier les journaux dans la console OCI
Allez à la console OCI, naviguez jusqu'à Services de développement, Artefact de conteneur, Instances de conteneur, sélectionnez votre instance et cliquez sur l'onglet Conteneurs pour inspecter les journaux et le statut d'exécution.
Tâche 8 : Voir les mesures dans l'explorateur de mesures
Allez à la console OCI, naviguez jusqu'à Observabilité et gestion, Explorateur de mesures et entrez les informations suivantes :
- Espace de noms : Entrez
postgres_monitor_with_container_vm
. - Mesures : Sélectionnez
replication_lag_metric
etinactive_slot_metric
. - Filtre : Entrez
DBSystemId = "<your-db-system-ocid>"
.
Exemple d'interrogation :
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.mean()
Tâche 9 : Configurer un sujet et des abonnements d'avis OCI
-
Allez à la console OCI, naviguez jusqu'à Intégration d'applications et cliquez sur Avis.
-
Créer un sujet. Par exemple
PostgresCustomMonitoringAlerts
. -
Ajouter des abonnements (courriel, webhook, etc.).
-
Liez cette rubrique à vos alarmes pour les alertes en temps réel.
Tâche 10 : Configurer les alarmes de surveillance OCI pour les mesures clés
-
Alarme de décalage de réplication
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.max()
- Déclencheur : Entrez > 1 000 000 (1 Mo).
- Délai : Entrez 5 minutes.
- Gravité : Sélectionnez Critique.
-
Alarme sur les emplacements de réplication inactifs
inactive_slot_metric[1h]{DBSystemId = "<your-db-system-ocid>"}.max()
- Déclencheur : Entrez > 1.
- Délai : Entrez 2 heures.
- Gravité : Sélectionnez Avertissement.
-
Alarme de données manquante
- Mesure : Sélectionnez
replication_lag_metric
. - Déclencheur : Entrez Aucune donnée pendant 10 minutes.
- Gravité : Sélectionnez Erreur.
- Mesure : Sélectionnez
Tâche 11 : Créer un tableau de bord personnalisé
-
Allez à la console OCI, naviguez jusqu'à Observabilité et gestion et cliquez sur Tableaux de bord.
-
Cliquez sur Nouveau tableau de bord.
-
Ajoutez des widgets à l'aide du graphique de mesure ou du générateur d'interrogations.
-
Entrez les informations suivantes .
- Espace de noms : Entrez
postgres_monitor_with_container_vm
. - Mesures : Sélectionnez
replication_lag_metric
etinactive_slot_metric
.
- Espace de noms : Entrez
-
Personnalisez les types de graphique, les filtres et l'intervalle de temps.
Table sommaire
Composant | Objet |
---|---|
Groupe dynamique | Permet à OCI d'accéder à la machine virtuelle du conteneur |
Service de chambre forte pour OCI | Stockage sécurisé des données d'identification de base de données |
Service de registre pour OCI | Référentiel d'images Docker d'hôte |
Agent de surveillance | Collecte les mesures PostgreSQL personnalisées |
Alarmes | Alertes de décalage, créneaux horaires, données manquantes |
MV conteneur | Exécute l'outil de surveillance basé sur Java |
Tableau de bord | Visualise les mesures en temps réel |
Architecture sans serveur et résiliente
-
Architecture sans serveur :
- Déployé à l'aide de la machine virtuelle de conteneur, il n'est pas nécessaire de gérer l'infrastructure manuellement.
- OCI gère le provisionnement et la récupération des machines virtuelles en cas de défaillance au niveau de l'hôte
Avantage : Réduit les frais généraux d'exploitation et améliore la tolérance aux pannes.
-
Redémarrage automatique de conteneur :
- Les conteneurs sont définis avec une politique de redémarrage par défaut.
- Si l'application tombe en panne ou se ferme de manière inattendue, elle redémarre automatiquement.
Avantage : Haute disponibilité et temps d'arrêt réduits.
-
Alarme basée sur les mesures :
- Une alarme dédiée est configurée pour se déclencher lorsque des mesures attendues sont manquantes.
Avantage : Agit en tant que sécurité contre les incidents pour détecter les défaillances silencieuses et activer les alertes précoces.
Dépannage et problèmes
-
Problèmes de connectivité :
- Assurez-vous que le port
5432
est ouvert dans la liste de sécurité du sous-réseau. - Vérifiez que la passerelle de service est attachée pour un accès privé.
- Assurez-vous que le port
-
Erreurs de l'autorisation OCI IAM :
- Vérifiez que le groupe dynamique correspond au compartiment approprié.
- Assurez-vous que les politiques requises sont en place.
-
Erreurs de configuration :
- Validez les variables d'environnement.
- Vérifiez les OCID de clé secrète et de mesure.
- Utilisez les journaux pour tracer les échecs d'exécution.
Liens connexes
Remerciements
- Authors - Arvind Yadav, Kanaram Bhari (Ingénieur logiciel - OCI Database with PostgreSQL)
Ressources d'apprentissage supplémentaires
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Create PostgreSQL Custom OCI Monitoring Alarms and Dashboard using Container Instances
G37659-01
Copyright ©2025, Oracle and/or its affiliates.