sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo monitorear la ejecución de PostgreSQL dentro de un contenedor Docker:segunda parte

Esta es la segunda parte de la serie múltiple Cómo monitorear la ejecución de PostgreSQL dentro de un contenedor Docker. En la Parte 1, presenté una descripción general de los contenedores, las políticas y las redes de Docker. En esta parte continuaremos con la configuración de la ventana acoplable y finalmente habilitaremos el monitoreo a través de ClusterControl.

PostgreSQL es una base de datos de código abierto de la vieja escuela cuya popularidad sigue aumentando, siendo ampliamente utilizada y aceptada en la mayoría de los entornos de nube de la actualidad.

Cuando se usa dentro de un contenedor, Docker puede configurarlo y administrarlo fácilmente, usando diferentes etiquetas para la creación y enviarlo a cualquier computadora del mundo con Docker instalado, pero esto se trata de Docker.

Ahora discutiremos sobre PostgreSQL y, para comenzar, enumeremos sus seis procesos principales que se ejecutan simultáneamente dentro de un contenedor por el usuario del sistema operativo llamado "postgres", que es diferente del usuario "postgres" dentro de la base de datos, ese es un superusuario.

Recuerde que la flecha azul en las imágenes muestra comandos ingresados ​​dentro de un contenedor.

$ ps auxww
Procesos principales de PostgreSQL

El primer proceso de la lista es el servidor PostgreSQL, y él mismo inicia los demás. Sus funciones son básicamente analizar lo que sucede en el servidor, siendo subprocesos que realizan entradas de estadísticas, escriben registros y este tipo de cosas.

Usaremos ClusterControl para monitorear la actividad dentro de este contenedor que tiene el servidor PostgreSQL, y para hacerlo necesitaremos tener SSH instalado para poder conectarlos de manera segura.

Servidor de shell seguro (SSH)

Para recopilar la información sobre el contenedor de PostgreSQL, nada mejor que SSH. Da acceso remoto de una dirección IP a otra, y esto es todo lo que ClusterControl necesita para realizar el trabajo.

SSH necesita ser descargado del repositorio, y para hacerlo debemos estar dentro del contenedor.

$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Instalando SSH en el contenedor "postgres-2"

Después de la instalación, editaremos la configuración, iniciaremos el servicio, configuraremos una contraseña para el usuario root y finalmente dejaremos el contenedor:

$ 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
Configuración del SSH en el contenedor "postgres-2", parte 1/2

Monitoreo con ClusterControl

ClusterControl tiene un sistema de integración profunda capaz de monitorear todos los procesos de PostgreSQL en tiempo real, también viene con una biblioteca de asesores para mantener los datos seguros, rastrear el rendimiento de la base de datos y, por supuesto, proporcionar alertas cuando ocurren anomalías.

Con SSH configurado, ClusterControl puede monitorear la actividad del hardware del sistema operativo y brindar información sobre la base de datos y la capa externa.

Ejecutaremos un nuevo contenedor y lo publicaremos en el puerto 5000 de nuestra computadora, luego podremos acceder al sistema a través de nuestro navegador.

$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Ejecutando el contenedor "s9s-ccontrol" para el ClusterControl de Variosnines

Una vez implementado, solo queda la configuración SSH, y tenemos buenas noticias, porque estamos en una red de puente definida por el usuario, ¡podemos usar DNS!

$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Configuración del SSH en el contenedor "postgres-2", parte 2/2

Después de ingresar "sí" y especificar la contraseña proporcionada anteriormente, es posible acceder al contenedor "postgres-2" como root usando SSH:

$ ssh postgres-2
Comprobando la conexión SSH con éxito

Este nuevo color, azul claro, se usará a continuación para representar la actividad dentro de la base de datos. En el ejemplo anterior, hemos accedido al contenedor "postgres-2" desde "s9s-ccontrol", pero sigue siendo el usuario raíz. Mantenga su atención y críticas conmigo.

Entonces, el siguiente paso es ir al navegador y acceder a http://localhost:5000/clustercontrol/users/welcome/ y registre una cuenta, o si ya tiene una, visite http://localhost:5000/clustercontrol/users/login .

Luego, "Importar servidor/clúster existente" e ingrese la configuración anterior. Se debe seleccionar la pestaña “PostgreSQL &TimescaleDB”. En el campo "Usuario de SSH" para esta demostración, simplemente escriba "root". Luego, finalmente ingrese el "Nombre del clúster", y puede ser cualquier nombre que desee, es simplemente quién contendrá tantos contenedores PostgreSQL necesarios que desee importar y monitorear.

Importación de la base de datos "postgres-2", parte 1/2

Ahora es momento de ingresar la información sobre el contenedor PostgreSQL, el Usuario “postgres”, Contraseña “5af45Q4ae3Xa3Ff4” y los contenedores deseados. Es extremadamente importante recordar que el servicio SSH debe estar activo dentro del contenedor de PostgreSQL.

Importación del contenedor "postgres-2", parte 2/2

Luego de presionar el botón “Importar”, ClusterControl comenzará a administrar el contenedor de PostgreSQL “postgres-2” dentro del Clúster llamado “PostgreSQL”, e informará cuando finalice el proceso de importación.

Iniciar sesión sobre el proceso de importación del contenedor "postgres-2"

Una vez terminado, el sistema se mostrará en la pestaña de Clústeres, nuestro Clúster creado más recientemente y diferentes opciones separadas en secciones

Nuestro primer paso de visualización será en la opción Resumen.

Cluster de PostgreSQL importado con éxito

Como puede imaginar, nuestra base de datos está vacía y no tenemos ningún caos aquí para nuestra diversión, pero el gráfico aún funciona en una pequeña escala que contiene estadísticas sobre los procesos de SQL y la base de datos.

Mostrar estadísticas sobre la actividad de SQL y la base de datos

Simulación de escenarios del mundo real

Para dar algo de acción, creé un archivo CSV usando Python, explorando el repositorio GitHub de Socratica, que ofrece cursos increíbles en YouTube, y hacen que esos archivos estén disponibles de forma gratuita.

En resumen, el archivo CSV creado tiene 9 millones, 999 miles y 999 registros sobre personas, cada uno con identificación, nombre, apellido y fecha de nacimiento. El tamaño del archivo es de 324 MB:

$ du -s -h persons.csv
Comprobación del tamaño del archivo CSV

Copiaremos este archivo CSV en el contenedor de PostgreSQL, luego lo copiaremos nuevamente, pero esta vez en la base de datos, y finalmente verificaremos las estadísticas en 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
Transferir el archivo CSV al contenedor e ingresar en la base de datos

Ok, ahora estamos en la base de datos, como superusuario "postgres", tenga en cuenta los diferentes colores en las flechas.

Ahora, debemos crear la base de datos, la tabla y completarla con los datos contenidos en el archivo CSV, y finalmente verificar si todo funciona bien.

$ 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;
Conectarse a la nueva base de datos e importar el archivo CSV

Este proceso tarda unos minutos en completarse.

Bien, ahora ingresemos algunas consultas:

Consultas en la base de datos "severalnines"

Si observa ClusterControl ahora, se produjo algún movimiento en las estadísticas sobre el hardware:

Mostrar estadísticas sobre la CPU dentro de ClusterControl

Se proporciona una sección completa para monitorear las consultas con una interfaz de usuario fácil de usar:

Mostrar estadísticas sobre las consultas dentro de ClusterControl

Las estadísticas sobre la base de datos PostgreSQL sirven a los mejores DBA para desarrollar todo su potencial en sus funciones principales, y ClusterControl es un sistema completo para analizar cada actividad que sucede en tiempo real, brindando información basada en todos los datos recopilados de los procesos de la base de datos.

Con ClusterControl, el DBA también puede ampliar fácilmente sus habilidades utilizando un conjunto completo de herramientas para crear copias de seguridad localmente o en la nube, replicaciones, balanceadores de carga, integraciones con servicios, LDAP, ChatOps, Prometheus y mucho más.

Conclusión

A lo largo de este artículo, hemos estado configurando PostgreSQL dentro de Docker e integrándonos con ClusterControl mediante la red de puente definida por el usuario y SSH, simulando un escenario que llena la base de datos con un archivo CSV y luego realizando una verificación rápida general en la interfaz de usuario de ClusterControl. .