Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 如何查看docker compose healthcheck日志?_Logging_Docker_Docker Compose_Health Monitoring - Fatal编程技术网

Logging 如何查看docker compose healthcheck日志?

Logging 如何查看docker compose healthcheck日志?,logging,docker,docker-compose,health-monitoring,Logging,Docker,Docker Compose,Health Monitoring,在我的docker compose.yml中,我有以下服务healthcheck部分。我想知道MariaDB是否真的准备好处理查询了。名为cmd的服务配置为取决于条件:服务健康 db: image: mariadb:10 environment: MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_DATABASE: data

在我的
docker compose.yml
中,我有以下
服务
healthcheck
部分。我想知道MariaDB是否真的准备好处理查询了。名为
cmd
服务
配置为取决于
条件:服务健康

  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
此健康检查不起作用,表明服务不健康

如何检查
测试的输出
CMD?

您可以使用:

docker-inspect--format“{{json.State.Health}}”jq
输出:

{
“状态”:“不健康”,
“FailingStreak”:63,
“日志”:[
{
“开始”:“2017-03-11T20:49:19.668895201+03:30”,
“结束”:“2017-03-11T20:49:19.735722044+03:30”,
“出口代码”:1,
“输出”:“第1行的错误1064(42000):您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解第1行的“选择1”附近要使用的正确语法\n”
}
]
}
然后查找输出部分

要仅获取输出,请执行以下操作:

docker inspect--format“{{json.State.Health}”mariadb_1|jq'.Log[].Output'
对于swarm模式,使用folling格式(感谢@shotgunner指出):

{{json.Spec.TaskTemplate.ContainerSpec.Healthcheck}


您可以随意交换用于json pretty print的任何工具。

docker compose ps
将指示每个服务的状态,包括其运行状况(如果定义了healthcheck)。这有助于基本概述

% 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     
如果需要更多详细信息,请使用
docker inspect
docker ps-q
配合使用

您只需自己执行healthcheck代码,就可以自己调试healthcheck。例如:

% docker exec -it $(docker-compose ps -q socket) nc -w2 127.0.0.1 5672
(UNKNOWN) [127.0.0.1] 5672 (?) : Connection refused
您也可以在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

最后,您只需在第一个终端窗口中使用
docker compose up
,在另一个终端窗口中使用
docker compose logs-f
。这将显示docker compose托管容器中的所有日志。

Hi,您知道如何将这些日志附加到写入入口点的同一json日志文件中吗?我想看到healthcheck日志执行
docker日志
,它们都在同一个地方。嗨,你知道如何将这些日志附加到写入entrypoint的同一个json日志文件吗?我希望看到healthcheck日志执行docker日志,它们在swarm模式和manager
{{{json.State.Health}}
中都在同一个位置,不起作用。使用
{{json.Spec.TaskTemplate.ContainerSpec.Healthcheck}
而不是使用
jq
无论如何,所有查询都可以通过它完成;它又短又好:
docker inspect$CONTAINER | jq.[].State.Health'
。我想知道第一个命令的格式是否正确。它拥有一个可疑的空白区域。
% 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