Tag: 日志

简单的docker应用程序的集中日志logging

在我们公司,我们刚刚开始使用Docker平台来尽可能简化应用程序部署。 我们的应用程序大部分都很小,只有一个运行在一个Docker容器上。 我们正在寻找一个简单的集中式日志logging解决scheme,这将允许我们从所有应用程序中收集日志并手动审查它们。 也许在将来添加一些警报。 到现在为止我们使用每个应用程序login到简单的文本文件 我已经试过了ELK堆栈,但它显然意味着统计日志,并为简单用例提供了很多麻烦。 这个问题的推荐解决scheme是什么? 提前致谢。

Kubernetes将JSON日志保存到带有转义引号的文件中。 为什么?

我使用Elasticsearch的Fluentd处理来自Kubernetes的日志,但是我注意到一些JSON日志无法正确索引,因为JSON是以stringforms存储的。 来自kubectl日志的日志如下所示: {"timestamp":"2016-11-03T15:48:12.007Z","level":"INFO","thread":"cromwell-system-akka.actor.default-dispatcher-4","logger":"akka.event.slf4j.Slf4jLogger","message":"Slf4jLogger started","context":"default"} 但是,保存在/ var / log / containers / …文件中的日志已经转义引号,并使它们成为string,而不是JSON,这会破坏索引: {"log":"{\"timestamp\":\"2016-11-03T15:45:07.976Z\",\"level\":\"INFO\",\"thread\":\"cromwell-system-akka.actor.default-dispatcher-4\",\"logger\":\"akka.event.slf4j.Slf4jLogger\",\"message\":\"Slf4jLogger started\",\"context\":\"default\"}\n","stream":"stdout","time":"2016-11-03T15:45:07.995443479Z"} 我试图让日志看起来像: { "log": { "timestamp": "2016-11-03T15:45:07.976Z", "level": "INFO", "thread": "cromwell-system-akka.actor.default-dispatcher-4", "logger": "akka.event.slf4j.Slf4jLogger", "message": "Slf4jLogger started", "context": "default" }, "stream": "stdout", "time": "2016-11-03T15: 45: 07.995443479Z" } 你能build议我怎么做吗?

docker执行Java应用程序后台附加日志

对于在Docker容器中运行的Java应用程序,我应该在哪里输出我的日志,以便docker日志-f可以在运行一段时间之后读取java应用程序的日志输出? 我使用类似下面的方法执行活动docker容器内的java应用程序 docker exec -d container-name java -jar /path-to-jar/java-app-1.0-SNAPSHOT.jar 到目前为止,它运行我的Spring Boot Java应用程序。 以下任一种方法都可以工作吗? docker exec -d container-name java -jar /path-to-jar/java-app-1.0-SNAPSHOT.jar > /var/log/docker-id.log 或者将java日志path设置设置为特定的目的地? <?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/> <include resource="org/springframework/boot/logging/logback/file-appender.xml" /> <root level="INFO"> <appender-ref ref="FILE" /> </root> </configuration>

禁用交互式容器上的日志

我有dockerd通过–log-driver来configuration我的守护程序容器日志保存到系统日志。 显然这会导致所有交互/一次性容器中的标准被写入到syslog中。 这是特别令人担忧的是,当我做了像docker run -it –rm imagename mysqldump > filename.sql类的东西时,整个数据库转储都被logging下来了。 我唯一的select是在每个运行的容器的命令行中明确指定–log-driver ,还是有更好的select?

Docker – 使用GELF日志驱动程序logging到Graylog2容器引发错误

我想设置Docker系统来运行MongoDB,Elasticsearch,Graylog2和我的微服务,并将所有日志转发到Graylog服务器。 我做了一个docker-compose.yml文件来完全运行它: version: '2' services: elasticsearch: image: "elasticsearch:2" command: "elasticsearch -Des.cluster.name='graylog'" volumes: – elasticsearch:/usr/share/elasticsearch/data ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 ports: – "9200:9200" graylog: image: graylog2/server:latest environment: GRAYLOG_PASSWORD_SECRET: somepasswordpepper GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 GRAYLOG_WEB_ENDPOINT_URI: http://127.0.0.1:9000/api links: – mongodb:mongo – elasticsearch:elasticsearch ports: – "9000:9000" – "12201/udp:12201/udp" – "1514/udp:1514/udp" mongodb: build: ./docker/mongo ports: – […]

抑制Codeship服务的输出

我正在testingCodeship中需要数据库的容器。 在codeship-services.yml中使用服务我将数据库容器链接到应用程序容器。 问题是数据库容器正在打印大量与testing输出混合的输出。 我想彻底摆脱MongoDB日志,但MongoDB没有select这样做。 我正在用mongod –quiet –setParameter logLevel=0运行它mongod –quiet –setParameter logLevel=0但仍然得到很多的输出。 所以我在Codeship方面寻找一个解决scheme来抑制一个容器的输出(Codeship方面的服务)。 该 logging: driver: none docker-compose的设置似乎不起作用。 这是我的codeship-services.yml: myapp: build: dockerfile: Dockerfile image: myapp cached: true links: – database database: image: mongo:3.4.3 command: mongod –quiet –logpath /tmp/mongo.log –setParameter logLevel=0

Docker组成不显示控制台输出的链接

docker-compose up没有显示我所有服务的日志输出(stdout)。 我手动运行容器时得到输出: $ docker run -it simple/cra-products /usr/local/bin/cra-products [Info#INIT] cra-products [Info#CONFIG] loadConfig … 但是当我用docker-compose运行它时,输出停止在附加。 $ docker-compose up cra-products underwriting_cra-products_1 is up-to-date Attaching to underwriting_cra-products_1 我已经validation它已经打开,正在运行(我的其他服务可以连接到它)。 我只是看不到日志输出。 日志输出可以为另一个容器工作。 $ docker-compose up underwriting underwriting_cra-products_1 is up-to-date Starting underwriting_underwriting_1 Attaching to underwriting_underwriting_1 underwriting_1 | HELLO … 我究竟做错了什么? 我想查看所有容器的日志。 调用docker-compose stop和docker-compose rm并重新启动不会修复它。 docker-compose logs也不会使用docker-compose up -d 。 仍然没有产品的产品。 […]

docker工人:发送日志到本地主机不起作用,但0.0.0.0确实工作,为什么?

更新:现在我有一个问题。 在logstash之前启动容器时,UDP日志不会到达logstash。 根据这个错误报告,这是因为 linux内核保持每个连接的状态。 即使udp是无连接的 据我了解,这些连接被caching。 Logstash收到一个新的IP,因此没有包,当我使用localhost(而不是0.0.0.0)时不会发生这种情况,因为IP永不改变,docker将消息转发到暴露的端口。 任何想法如何使它与本地主机(或服务名称,因为我使用docker群)工作? 我有一个dockerized应用程序(logstash),它发布端口12201 / udp来监听日志。 这符合docker文档 这将容器的端口8080绑定到主机的127.0.0.1上的端口80。 但是,如果我发送消息与netcat到本地主机:12201 / udp应用程序收到什么。 而当我发送消息到0.0.0.0:12201/udp一切按预期工作。 为什么? 这是否会引入性能/安全问题? 它可能是一个错误? 据我所知0.0.0.0被翻译成机器的所有IP地址,机器有自己的IP地址和一些172.0 。 docker根据Docker容器联网文档创build的地址/networking。 出于某种原因,似乎发布的端口不是映射到本地主机,而是一些其他networking。 我正在群中运行我的应用程序,并且从群中的任何机器运行0.0.0.0。 这里是我撰写文件的相关部分: networks: logging: volumes: logging_data: services: logstash: image: docker.elastic.co/logstash/logstash:5.3.1 logging: driver: "json-file" networks: – logging ports: – "12201:12201" – "12201:12201/udp" entrypoint: logstash -e 'input { gelf { } } output […]

Docker-如何使用syslog在主机上logging日志?

我希望将容器的日志保存到每个容器的主机中的文件中。 我读了关于通过日志驱动程序做同样的事情。 由于我的主机运行ubuntu 14.04, rsyslog默认运行,所以我想用syslog 。 我所做的是使用以下命令来运行容器: docker run -it –log-driver=syslog –log-opt syslog-address=udp://localhost:514 prashant23/ubuntu-java:sample-jdbc-project bash 我没有任何错误地进入容器。 就这样? 我怎么知道在哪里可以看到我的主机上的日志? 我做的一切正确吗? 我不知道syslog 。 我是否也需要在我的容器上configurationsyslog? 有没有更好的办法来实现相同的。 我不知道我应该用什么作为syslog-address 。 从哪里我可以得到这个参数的价值? 我在某处读取默认是udp://localhost:514

如何将节点 – 红色控制台日志保存到docker中的单独日志文件中

我有一个节点红色的docker实例,我想将节点 – 红色控制台日志保存到docker容器内的一个单独的日志文件。 有没有办法做到这一点?