Création d'alarmes et d'un tableau de bord de surveillance OCI personnalisés PostgreSQL à l'aide d'instances de conteneur
Introduction
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 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. Alors 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 Monitoring
-
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 Docker sont incluses dans le référentiel.
Remarque : les instructions de création et de propagation de l'image Docker sont déjà disponibles dans le fichier
README.md
du référentiel de projets.
Tâche 2 : créer un groupe dynamique
Les groupes dynamiques permettent à votre machine virtuelle de conteneur d'accéder aux services OCI tels qu'OCI Monitoring, OCI Vault et OCI Registry sans utiliser d'informations d'identification codées en dur et sans stocker d'informations d'identification dans votre image.
Utilisez les informations suivantes :
- Nom : entrez
psql_monitoring_with_container_vm_dg
. -
Règle de mise en correspondance:
ALL {resource.type = 'computecontainerinstance', resource.compartment.id = '<your-compartment-id>'}
Remarque :
compartment.id
est l'OCID de compartiment dans lequel l'instance de conteneur sera créée.
Tâche 3 : configuration du réseau (VCN et passerelle de service)
Pour garantir une communication transparente, placez la machine virtuelle de conteneur dans le même sous-réseau privé que le système de base de données PostgreSQL. Activez l'accès aux services OCI à l'aide d'une passerelle de service.
Règles de 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 | Description |
---|---|---|---|---|
Entrant | CIDR du sous-réseau de privé | TCP | 5 432 | Accès PostgreSQL |
Sortant | 0.0.0.0/0 | Toutes | Toutes | 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 informations d'identification de base de données.
-
Créez un coffre et ajoutez un secret contenant le mot de passe PostgreSQL.
-
Enregistrez l'OCID de clé secrète de coffre.
-
Réutilisez la clé secrète si elle existe déjà.
Tâche 5 : définition des stratégies Oracle Cloud Infrastructure Identity and Access Management
Attachez ces stratégies 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 : lancement des instances de conteneur
Accédez à la console OCI, accédez à Services de développeur, à Artefact de conteneur, à Instances de conteneur, à Créer une instance et entrez les informations suivantes :
- VCN/Sous-réseau : sélectionnez cette option comme système de base de données.
- Forme : sélectionnez 1 OCPU, 4 Go.
- Image Docker : sélectionnez Dans 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
Remarque : l'accès est accordé sans informations d'identification via le groupe dynamique OCI IAM.
Tâche 7 : vérification des journaux dans la console OCI
Accédez à la console OCI, accédez à Services de développeur, à Artefact de conteneur, à Instances de conteneur, sélectionnez votre instance, puis cliquez sur l'onglet Conteneurs pour inspecter les journaux et le statut d'exécution.
Tâche 8 : visualisation des mesures dans l'explorateur de mesures
Accédez à la console OCI, accédez à Observation & 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 de requête :
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.mean()
Tâche 9 : configurer un sujet et des abonnements OCI Notifications
-
Accédez à la console OCI, accédez à Intégration d'application et cliquez sur Notifications.
-
Créez un sujet. Par exemple,
PostgresCustomMonitoringAlerts
. -
Ajoutez des abonnements (e-mail, webhook, etc.).
-
Liez cette rubrique à vos alarmes pour des alertes en temps réel.
Tâche 10 : configuration des 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 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é
-
Accédez à la console OCI, accédez à Observation & gestion et cliquez sur Tableaux de bord.
-
Cliquez sur Nouveau tableau de bord.
-
Ajoutez des widgets à l'aide du graphique de mesures ou du générateur de requêtes.
-
Saisissez 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 graphiques, les filtres et la période.
Table récapitulative
Composant | Description |
---|---|
Groupe dynamique | Accorde à OCI un accès à la machine virtuelle de conteneur |
OCI Vault | Stockage sécurisé des informations d'identification de base de données |
OCI Registry | Référentiel d'images Docker hôte |
Surveillance de l'agent | Collecte des mesures PostgreSQL personnalisées |
Alarmes | Alertes de décalage, créneaux, données manquantes |
Machine virtuelle de conteneur | Exécute l'outil de surveillance Java |
Dashboard | Visualise les mesures en temps réel |
Points forts de l'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 la surcharge opérationnelle et améliore la tolérance aux pannes.
-
Redémarrage automatique du conteneur :
- Les conteneurs sont définis avec une stratégie de redémarrage par défaut.
- Si l'application tombe en panne ou s'arrête de manière inattendue, elle redémarre automatiquement.
Avantage : garantit une haute disponibilité et minimise les temps d'arrêt.
-
Alarme basée sur des 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é de panne pour détecter les pannes 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 d'autorisation OCI IAM :
- Vérifiez que le groupe dynamique correspond au compartiment approprié.
- Assurez-vous que les stratégies requises sont en place.
-
Erreurs de configuration :
- Valider les variables d'environnement.
- Vérifiez les OCID de clé secrète et de mesure.
- Utilisez les journaux pour suivre les échecs d'exécution.
Liens connexes
Accusés de réception
- Auteurs - Arvind Yadav, Kanaram Bhari (ingénieur logiciel - OCI Database with PostgreSQL)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.
Create PostgreSQL Custom OCI Monitoring Alarms and Dashboard using Container Instances
G37660-01
Copyright ©2025, Oracle and/or its affiliates.