PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment surveiller l'exécution de PostgreSQL dans un conteneur Docker :deuxième partie

Il s'agit de la deuxième partie de la multi-série Comment surveiller l'exécution de PostgreSQL dans un conteneur Docker. Dans la partie 1, j'ai présenté un aperçu des conteneurs Docker, des politiques et de la mise en réseau. Dans cette partie, nous allons continuer avec la configuration du docker et enfin activer la surveillance via ClusterControl.

PostgreSQL est une base de données open source à l'ancienne dont la popularité ne cesse d'augmenter, largement utilisée et acceptée dans la plupart des environnements cloud d'aujourd'hui.

Lorsqu'il est utilisé à l'intérieur d'un conteneur, il peut être facilement configuré et géré par Docker, en utilisant différentes balises pour la création et expédié à n'importe quel ordinateur dans le monde avec Docker installé, mais tout tourne autour de Docker.

Nous allons maintenant discuter de PostgreSQL, et pour commencer, listons leurs six processus principaux exécutés simultanément à l'intérieur d'un conteneur par l'utilisateur du système d'exploitation appelé "postgres", qui est différent de l'utilisateur "postgres" à l'intérieur de la base de données, celui-là est un super utilisateur.

N'oubliez pas que la flèche bleue dans les images affiche les commandes saisies à l'intérieur d'un conteneur.

$ ps auxww
Processus principaux PostgreSQL

Le premier processus de la liste est le serveur PostgreSQL, et les autres sont démarrés par lui. Leurs tâches consistent essentiellement à analyser ce qui se passe sur le serveur, en tant que sous-processus effectuant des entrées de statistiques, écrivant des journaux et ce genre de choses.

Nous utiliserons ClusterControl pour surveiller l'activité à l'intérieur de ce conteneur ayant le serveur PostgreSQL, et pour ce faire, nous aurons besoin d'avoir SSH installé afin de les connecter en toute sécurité.

Serveur Shell sécurisé (SSH)

Pour collecter les informations sur le conteneur PostgreSQL, rien de mieux que SSH. Il donne un accès à distance d'une adresse IP à une autre, et c'est tout ce dont ClusterControl a besoin pour effectuer le travail.

SSH doit être téléchargé à partir du référentiel, et pour ce faire, nous devons être à l'intérieur du conteneur.

$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Installation de SSH dans le conteneur "postgres-2"

Après l'installation, nous allons modifier la configuration, démarrer le service, configurer un mot de passe pour l'utilisateur root et enfin quitter le conteneur :

$ sed -i 's|^PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ service ssh start
$ passwd
$ exit
Configuration du SSH dans le conteneur "postgres-2", partie 1/2

Surveillance avec ClusterControl

ClusterControl dispose d'un système d'intégration approfondi capable de surveiller tous les processus de PostgreSQL en temps réel, ainsi que d'une bibliothèque de conseillers pour sécuriser les données, suivre les performances de la base de données et, bien sûr, fournir des alertes en cas d'anomalies.

Avec SSH configuré, ClusterControl peut surveiller l'activité matérielle du système d'exploitation et donner des informations sur la base de données et la couche externe.

Nous allons exécuter un nouveau conteneur et le publier sur le port 5000 de notre ordinateur, puis nous pourrons accéder au système via notre navigateur.

$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Exécution du conteneur "s9s-ccontrol" pour Manynines ClusterControl

Une fois déployé, il ne reste plus que la configuration SSH, et nous avons une bonne nouvelle, car nous sommes dans un User-Defined Bridge Network, nous pouvons utiliser le DNS !

$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Configuration du SSH dans le conteneur "postgres-2", partie 2/2

Après avoir entré "yes" et spécifié le mot de passe fourni précédemment, il est possible d'accéder au conteneur "postgres-2" en tant que root en utilisant SSH :

$ ssh postgres-2
Vérification réussie de la connexion SSH

Cette nouvelle couleur, bleu clair, sera utilisée dans la suite pour représenter l'activité à l'intérieur de la base de données. Dans l'exemple ci-dessus, nous avons accédé au conteneur "postgres-2" à partir de "s9s-ccontrol", mais c'est toujours l'utilisateur root. Gardez votre attention et vos critiques avec moi.

La prochaine étape consiste donc à accéder au navigateur et à accéder à http://localhost:5000/clustercontrol/users/welcome/ et enregistrez un compte, ou si vous en avez déjà un, visitez http://localhost:5000/clustercontrol/users/login .

Ensuite, "Importer un serveur/cluster existant" et entrez la configuration précédente. L'onglet « PostgreSQL &TimescaleDB » doit être sélectionné. Dans le champ "Utilisateur SSH" pour cette démonstration, tapez simplement "root". Enfin, entrez le "Nom du cluster", et ce peut être n'importe quel nom que vous voulez, c'est simplement qui contiendra autant de conteneurs PostgreSQL nécessaires que vous souhaitez importer et surveiller.

Importer la base de données "postgres-2", partie 1/2

Il est maintenant temps d'entrer les informations sur le conteneur PostgreSQL, l'utilisateur "postgres", le mot de passe "5af45Q4ae3Xa3Ff4" et les conteneurs souhaités. Il est extrêmement important de se rappeler que le service SSH doit être actif à l'intérieur du conteneur PostgreSQL.

Importer le conteneur "postgres-2", partie 2/2

Après avoir appuyé sur le bouton "Importer", ClusterControl commencera à gérer le conteneur PostgreSQL "postgres-2" à l'intérieur du cluster appelé "PostgreSQL", et il vous informera lorsque le processus d'importation sera terminé.

Log sur le processus d'importation du conteneur "postgres-2"

Une fois terminé, le système sera affiché sous l'onglet Clusters, notre cluster le plus récemment créé et différentes options séparées en sections

Notre première étape de visualisation sera dans l'option Vue d'ensemble.

Cluster PostgreSQL importé avec succès

Comme vous pouvez l'imaginer, notre base de données est vide et nous n'avons pas de chaos ici pour notre plaisir, mais le graphique fonctionne toujours étant engagé dans une petite échelle contenant des statistiques sur les processus SQL et de base de données.

Affichage des statistiques sur l'activité de SQL et de la base de données

Simulation de scénarios du monde réel

Pour donner un peu d'action, j'ai créé un fichier CSV en utilisant Python, en explorant le référentiel GitHub de Socratica, qui propose des cours incroyables sur YouTube, et ils rendent ces fichiers disponibles gratuitement.

En résumé, le fichier CSV créé contient 9 millions, 999 milliers et 999 enregistrements sur des personnes, chacun contenant l'ID, le prénom, le nom et l'anniversaire. La taille du fichier est de 324 Mo :

$ du -s -h persons.csv
Vérification de la taille du fichier CSV

Nous allons copier ce fichier CSV dans le conteneur PostgreSQL, puis le recopier mais cette fois dans la base de données, et enfin vérifier les statistiques dans ClusterControl.

$ docker container cp persons.csv postgres-2:/persons.csv
$ docker container exec -it postgres-2 bash
$ du -s -h persons.csv
$ su - postgres
$ psql
Transférer le fichier CSV dans le conteneur et entrer dans la base de données

Ok, donc nous sommes maintenant dans la base de données, en tant que super utilisateur "postgres", veuillez noter les différentes couleurs dans les flèches.

Maintenant, nous devons créer la base de données, la table et la remplir avec les données contenues dans le fichier CSV, et enfin vérifier si tout fonctionne correctement.

$ CREATE DATABASE severalnines;
$ \c severalnines;
$ CREATE TABLE persons (id SERIAL NOT NULL, first_name VARCHAR(50), last_name VARCHAR(50), birthday DATE, CONSTRAINT persons_pkey PRIMARY KEY (id));
$ COPY persons (id, first_name, last_name, birthday) FROM '/persons.csv' DELIMITER ',' CSV HEADER;
Connexion à la nouvelle base de données et importation du fichier CSV

Ce processus prend quelques minutes.

Ok, alors entrons maintenant quelques requêtes :

Requêtes dans la base de données "severalnines"

Si vous regardez maintenant ClusterControl, un certain mouvement dans les statistiques sur le matériel s'est produit :

Affichage des statistiques sur le CPU à l'intérieur de ClusterControl

Une section entière pour surveiller les requêtes est fournie avec une interface utilisateur facile à utiliser :

Affichage des statistiques sur les requêtes à l'intérieur de ClusterControl

Les statistiques sur la base de données PostgreSQL servent aux meilleurs administrateurs de bases de données pour réaliser tout leur potentiel dans leurs tâches principales, et ClusterControl est un système complet pour analyser chaque activité se déroulant en temps réel, fournissant des informations basées sur toutes les données collectées à partir des processus de base de données.

Avec ClusterControl, le DBA peut également facilement étendre ses compétences à l'aide d'un ensemble complet d'outils pour créer des sauvegardes localement ou dans le cloud, des réplications, des équilibreurs de charge, des intégrations avec des services, LDAP, ChatOps, Prometheus, et bien plus encore.

Conclusion

Dans cet article, nous avons configuré PostgreSQL dans Docker et intégré à ClusterControl à l'aide du réseau de pont défini par l'utilisateur et de SSH, en simulant un scénario remplissant la base de données avec un fichier CSV, puis en effectuant une vérification rapide globale dans l'interface utilisateur de ClusterControl. .