yml network_mode network example create compose logging docker docker-compose health-monitoring

logging - network_mode - ¿Cómo ver los registros de comprobación de salud de la ventana acoplable?



docker-compose.yml example (2)

Dentro de mi docker-compose.yml , tengo la siguiente sección de healthcheck service . Quiero saber si MariaDB está realmente lista para manejar las consultas. Un service llamado cmd está configurado para depender de la condition: service_healthy .

db: image: mariadb:10 environment: MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_DATABASE: database healthcheck: test: ["CMD", "mysql", "--user=user", "--password=password", "--execute=''SELECT 1''", "--host=127.0.0.1", "--port=3306"] interval: 1s retries: 30

Este chequeo de salud no funciona, muestra que el servicio no es saludable.

¿Cómo verifico la salida de la test CMD?


Puedes usar :

docker inspect --format "{{json .State.Health }}" <container name> | jq

Salida:

{ "Status": "unhealthy", "FailingStreak": 63, "Log": [ { "Start": "2017-03-11T20:49:19.668895201+03:30", "End": "2017-03-11T20:49:19.735722044+03:30", "ExitCode": 1, "Output": "ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''''SELECT 1'''' at line 1/n"

Y busca la sección de salida .

Para obtener solo la salida:

docker inspect --format "{{json .State.Health }}" mariadb_db_1 | jq ''.Log[].Output''

Siéntase libre de intercambiar jq por cualquier herramienta que use para json pretty print.


docker-compose ps indicará el estado de cada servicio, incluida su salud si se define healthcheck. Es bueno para una descripción básica.

% docker-compose ps Name Command State Ports ---------------------------------------------------------------------------------------------------------------------------------------------------------------- remix-theme-editor_analytics_1 /bin/sh -c /analytics/run. ... Up remix-theme-editor_base_1 /bin/bash Exit 0 remix-theme-editor_flower_1 /entrypoint --environment ... Exit 137 remix-theme-editor_frontend_1 /bin/sh -c perl -p -i -e '' ... Exit 137 remix-theme-editor_js-app_1 npm run Exit 0 remix-theme-editor_mq_1 docker-entrypoint.sh rabbi ... Up (healthy) 15671/tcp, 15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 5672/tcp remix-theme-editor_mysql-migration_1 /entrypoint_mysql-migratio ... Exit 0 remix-theme-editor_mysql_1 /bin/sh -c /entrypoint_wra ... Up (health: starting) 127.0.0.2:3308->3306/tcp remix-theme-editor_page-renderer_1 npm run start:watch Up remix-theme-editor_python-app_1 /entrypoint Exit 2 remix-theme-editor_redis_1 docker-entrypoint.sh /bin/ ... Up (health: starting) 6379/tcp remix-theme-editor_scheduler_1 /entrypoint --environment ... Exit 137 remix-theme-editor_socket_1 /entrypoint --environment ... Exit 1 remix-theme-editor_static-builder_1 npm run watch Up remix-theme-editor_static-http_1 nginx -g daemon off; Up 127.0.0.2:6544->443/tcp, 80/tcp remix-theme-editor_web_1 /entrypoint --environment ... Exit 1 remix-theme-editor_worker_1 /entrypoint --environment ... Exit 1 remix-theme-editor_worker_screenshots_1 /entrypoint --environment ... Exit 1

Si desea obtener más detalles, utilice la función docker inspect junto con la ventana docker ps -q <service-name> .

% docker inspect --format "{{json .State.Health }}" $(docker-compose ps -q mq) | jq { "Status": "starting", "FailingStreak": 48, "Log": [ { "Start": "2018-10-03T00:40:18.671527745-05:00", "End": "2018-10-03T00:40:18.71729051-05:00", "ExitCode": -1, "Output": "OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused /"exec: ///"nc///": executable file not found in $PATH/": unknown" }, ...

Siempre puede depurar el chequeo de salud usted mismo simplemente ejecutando su código de chequeo de salud usted mismo. Por ejemplo:

% docker exec -it $(docker-compose ps -q socket) nc -w2 127.0.0.1 5672 (UNKNOWN) [127.0.0.1] 5672 (?) : Connection refused

También puedes hacer lo mismo en shell:

% docker exec -it $(docker-compose ps -q socket) bash root@b5da5207d344:~/src# nc -w2 127.0.0.1 5672 (UNKNOWN) [127.0.0.1] 5672 (?) : Connection refused root@b5da5207d344:~/src# echo $? 1

Finalmente, simplemente puede usar la ventana docker-compose up en la primera ventana de la terminal, y la ventana docker-compose logs -f en otra. Esto mostrará todos los registros de los contenedores administrados por la ventana acoplable.