Tag: 日志

如何查看docker-compose健康检查日志?

在我docker-compose.yml ,我有以下service healthcheck部分。 我想知道MariaDB是否准备好处理查询。 名为cmd的service被configuration为依赖于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 此健康检查不起作用,表明该服务不健康。 如何检查test CMD的输出?

在docker mysql容器中启用日志logging

我试图熟悉docker生态系统,并试图设置一个MySQL数据库容器。 用docker-compose这看起来像: version: '2' services: db: image: mysql:5.6.33@sha256:31ad2efd094a1336ef1f8efaf40b88a5019778e7d9b8a8579a4f95a6be88eaba volumes: – "./db/data:/var/lib/mysql" – "./db/log:/var/log/mysql" – "./db/conf:/etc/mysql/conf.d" restart: "yes" environment: MYSQL_ROOT_PASSWORD: rootpw MYSQL_DATABASE: db MYSQL_USER: db MYSQL_PASSWORD: dbpw 我的conf目录包含一个文件: [mysqld] log_error =/var/log/mysql/mysql_error.log general_log_file=/var/log/mysql/mysql.log general_log =1 slow_query_log =1 slow_query_log_file=/var/log/mysql/mysql_slow.log long_query_time =2 log_queries_not_using_indexes = 1 不幸的是,我没有这样的日志文件。 该设置本身是正确的,并使用cnf文件。 连接到容器并创build3个文件后,将它们切换到mysql并重新启动容器,logging工作正常。 我很确定这是一个常见的情况,我目前的方式让它运行似乎真的很愚蠢。 什么是正确的方法来做到这一点? 我可以通过在Dockerfile中移动所有这些东西来改进我的方法,但这对我来说仍然很奇怪。

Docker容器日志占用我所有的磁盘空间

我正在VM上运行一个容器。 我的容器默认情况下将日志写入/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log文件,直到磁盘已满。 目前,我不得不手动删除这个文件,以避免磁盘已满。 我读过Docker 1.8中将有一个参数来旋转日志 。 你会推荐什么作为当前的解决方法?

如何控制Docker的fluentd日志标记

目前的安装程序正在用fluentd驱动程序运行Docker容器: docker run –log-driver=fluentd my-container 这很容易…将stdout发送到主机上本地运行的fluentd系统。 我想使用容器上的一些tag来控制fluentd tag 。 对于这个例子,假设一些标签( docker inspect snippet): "Config": { "Labels": { "com.amazonaws.ecs.container-name": "web", "com.amazonaws.ecs.task-definition-version": "3" } } 如何通过提取一个或多个tag来设置fluentd Labels ? Docker在此列表中列出了当前支持的标记: https : //docs.docker.com/engine/admin/logging/log_tags/ 这些文档loggingExtraAttributes …但是我可以找出如何使用它来查找一个或多个标签。 通过Docker代码读取,我不明白: https : //github.com/docker/docker/blob/master/daemon/logger/context.go#L29 这对于docker inspect是微不足道的: docker inspect –format '{{index .ContainerLabels "com.amazonaws.ecs.container-name"}}' 我想grep了相同的信息,并得到它log-opt tag=?

将docker-compose日志保存到文件中

我有我的生成服务器上运行的unit testing,并希望捕获日志结果分析失败时。 我还没有find一种方法将docker-compose logs的输出redirect到一个文件,或者find日志文件本身实际存在的位置。 我想要相当于: docker-compose logs > logs.txt 编辑 – 澄清: 我所有的docker集装箱产生有用的日志,这是一个手工运行的docker-compose logs显示。 我想脚本这个过程将这些相同的日志保存到我的生成服务器上的一个文件。 基本上, docker-compose logs的输出保存到一个文件,然而docker-compose logs永远不会退出。

Docker rsyslog驱动程序在实际消息之前添加消息长度

我正在尝试configuration一个rsyslog服务器来接收来自docker容器的日志。 我目前使用下面的命令行来运行Docker容器: sudo docker run -d –log-driver=syslog –log-opt syslog-address=udp://localhost:514 –log-opt syslog-format=rfc5424 –log-opt tag="remote:shouldshow" alpine echo "some random message" 我正在使用rfc5424,因为从docker到rsyslog的标准日志格式打破了冒号字符的消息,将标记remote:shouldshow分开,并向消息添加shouldshow。 有关这种情况的更多信息在这里: https : //github.com/docker/docker/issues/18712 问题是来自docker的日志消息在消息之前还有一个三位数字,就像下面例子中的127(rsyslog的rawmsg属性)一样: 127 <30>1 2016-07-12T00:51:13-03:00 vitor-Lenovo-G50-70 docker/remote:shouldshow 2910 docker/remote:shouldshow some random message 当我尝试使用像APP-NAME或syslogtag这样的系统日志属性时,它们都具有<30> 1的值。 我已经复制这个消息没有127,并通过netcat发送到系统日志服务器,并正确parsing值,如下所示: echo '<30>1 2016-07-12T00:15:53-03:00 vitor-Lenovo-G50-70 docker/remote:shouldshow 2910 docker/remote:shouldshow some random message' | nc -u -v localhost 514 任何人有任何想法为什么发生这种情况? 任何帮助将非常感激。 […]

如何将docker日志redirect到单个文件?

我想将我的docker容器的所有日志redirect到单个日志文件来分析它们。 我试过了 docker logs container > /tmp/stdout.log 2>/tmp/stderr.log 但是这给login在两个不同的文件。 我已经尝试过了 docker logs container > /tmp/stdout.log 但它没有工作。

Docker容器中的Java应用程序不能正确login到syslog

我的目标 我有一个主机内运行的几个不同的容器。 它们都与对方的/dev/log套接字共享一个卷。 主机将这些日志转发到中央日志logging服务器。 所有其他容器日志都显示在主机的/var/log/messages 。 其他容器是python程序,它允许日志logging直接附加到/dev/log unix域套接字。 基本configuration 我有一个docker容器从jar文件运行一个scala应用程序。 /dev/log套接字在主机和容器之间共享为卷。 应用程序的log4j.properties文件对我来说似乎很好,它的设置如下: # Root logger option log4j.rootLogger=INFO, file, stdout, SYSLOG # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=log/associationRules.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c{1}:%L] %-5p <%X{jobID}> %m%n # Direct log messages to stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c{1}:%L] %-5p <%X{jobID}> %m%n # […]

如何不创builddocker容器日志?

因此,在启动一个容器作为守护进程之后,我的硬盘空间被填满了: sudo docker run -d –name nexpose-server nexpose 当我发现我的容器的日志文件后,我意识到运行我的容器产生了一个177GB的日志文件 (所有我的空闲硬盘空间)。 我知道这是不正常的行为,但容器中的过程打印大量的数据标准输出。 大部分输出是在前30个奇数分钟内生成的,因为它会自动更新数据库等。 我希望能够禁用保存日志或pipe道标准输出到/dev/null这样的东西。 这可能吗? 有没有人有更好的想法?

设置Stackdriver为Docker的gcplogs日志驱动程序logging日志级别

Docker支持–log-driver=gcplogs选项,将Google Compute Engine实例login到Stackdriver Logging服务(又名Google Cloud Logging)。 但是, https: //console.cloud.google.com/logs中的“日志查看器”页面中的所有日志条目都没有严重性级别 – 整个日志行被放置在如下所示的data字段中: { metadata: { projectId: "my-project" serviceName: "custom.googleapis.com" labels: { custom.googleapis.com/secondary_key: "secondary_key" custom.googleapis.com/primary_key: "primary_key" } timestamp: "2016-05-10T00:07:28.700617425Z" projectNumber: "12345" } insertId: "2016-05-09|17:07:28.706161-07|1.2.3.4|1234" log: "gcplogs-docker-driver" structPayload: { container: { imageName: "us.gcr.io/my-image/name" created: "2016-05-09T15:09:15.15158629Z" name: "/my-container" id: "7b6f9fa1d7517e6a3004b8fa7e52asdfddd8e63d02e43afb3942681a56f4e" imageId: "sha256:20605d3fdc700asdfa8b08a4aed1f745a0b5d9a8f08ae0db2f90af0bd093" } data: "2016-05-10 00:07:28,700 DEBUG [my-file:191][uWSGIWorker1Core0] Some […]