高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要。

在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要。考虑到容器短暂和不固定的生命周期,当我们需要 debug 问题时有些容器可能已经不存在了。因此,一套集中式的日志管理系统是生产环境中不可或缺的组成部分。

本章我们将讨论监控容器的各种可用技术和方案,首先会介绍 Docker 自带的 logs 子命令,然后讨论 Docker 的 logging driver,接下来通过实践学习几个已经广泛应用的日志管理方案:ELK、Fluentd 和 Graylog。

Docker logs

我们首先来看一看默认配置下 Docker 的日志功能。

对于一个运行的容器,Docker 会将日志发送到 容器的 标准输出设备(STDOUT)和标准错误设备(STDERR),STDOUT 和 STDERR 实际上就是容器的控制台终端。

举个例子,用下面的命令运行 httpd 容器:

docker run -p 80:80 httpd

因为我们在启动日志的时候没有用 -d 参数,httpd 容器以前台方式启动,日志会直接打印在当前的终端窗口。

如果加上 -d 参数以后台方式运行容器,我们就看不到输出的日志了。

这种情况下如果要查看容器的日志,有两种方法:

  1. attach 到该容器。

  2. 用 docker logs 命令查看日志。

先来看 attach 的方法。运行 docker attach 命令。

attach 到了 httpd 容器,但并没有任何输出,这是因为当前没有新的日志信息。

为了产生一条新的日志,可以在 host 的另一个命令行终端执行 curl localhost

这时,attach 的终端就会打印出新的日志。

attach 的方法在实际使用中不太方便,因为:

  1. 只能看到 attach 之后的日志,以前的日志不可见。

  2. 退出 attach 状态比较麻烦(Ctrl+p 然后 Ctrl+q 组合键),一不小心很容器将容器杀掉(比如按下 Ctrl+C)。

查看容器日志推荐的方法是用 docker logs 命令。

docker logs 能够打印出自容器启动以来完整的日志,并且 -f 参数可以继续打印出新产生的日志,效果上与 Linux 命令 tail -f 一样。

下一节我们讨论 Docker 如何支持多种日志方案。

书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

转载于:https://blog.51cto.com/cloudman/1977278

日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)相关推荐

  1. 万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)

    前面的 ELK 中我们是用 Filebeat 收集 Docker 容器的日志,利用的是 Docker 默认的 logging driver json-file,本节我们将使用 fluentd 来收集容 ...

  2. 管理和安装 chart - 每天5分钟玩转 Docker 容器技术(168)

    2019独角兽企业重金招聘Python工程师标准>>> 安装 chart 当我们觉得准备就绪,就可以安装 chart,Helm 支持四种安装方法: 安装仓库中的 chart,例如:h ...

  3. 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)

    上一节已经部署好了 Graylog,现在学习如何用它来管理日志. 首先启动测试容器. docker run -d \ --log-driver=gelf \ --log-opt gelf-addres ...

  4. Kubernetes 集群日志管理 - 每天5分钟玩转 Docker 容器技术(180)

    Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elasticsearch ...

  5. Docker 如何支持多种日志方案?- 每天5分钟玩转 Docker 容器技术(88)

    将容器日志发送到 STDOUT 和 STDERR 是 Docker 的默认日志行为.实际上,Docker 提供了多种日志机制帮助用户从运行的容器中提取日志信息.这些机制被称作 logging driv ...

  6. 用 ConfigMap 管理配置 - 每天5分钟玩转 Docker 容器技术(159)

    Secret 可以为 Pod 提供密码.Token.私钥等敏感数据:对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap. ConfigMap 的创建和使用方式与 Secret 非常类 ...

  7. Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)

    前面章节 Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的.为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 ...

  8. 数据管理 - 每天5分钟玩转 Docker 容器技术(147)

    本章将讨论 Kubernetes 如何管理存储资源. 首先我们会学习 Volume,以及 Kubernetes 如何通过 Volume 为集群中的容器提供存储:然后我们会实践几种常用的 Volume ...

  9. 在 Rolling Update 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(146)

    上一节讨论了 Health Check 在 Scale Up 中的应用,Health Check 另一个重要的应用场景是 Rolling Update.试想一下下面的情况: 现有一个正常运行的多副本应 ...

最新文章

  1. Go 学习笔记(59)— Go 第三方库之 etcd/clientv3 封装为方法使用(建立连接、设置key-value、获取key-value、获取带前缀的key-value)
  2. CVPR 2020 | 更高质量的点云补全:上海交通大学团队提出点云分形网络
  3. 使用MLX90640自制红外热像仪(三):图像插值、图像彩色编码
  4. Android异步消息处理机制
  5. PHP版本的自动生成有规则的订单号(或编号)
  6. source insight 注释乱码?(【File】 > 【Reload As Encoding…】 > 【Chinese Simplified (GB18030)】 > 选择后,点击load)
  7. 通过调色板(QPalette)将readonly为true的QLineEdit颜色设置为灰色
  8. twitter api使用_使用P2创建自己的Twitter风格的组博客
  9. jvm 参数_6个提高性能的JVM参数
  10. nylon尼龙的来历
  11. C/C++编程操作Redis数据库,hiredis包装redis数据库操作接口及测试(增删改查与连接)
  12. 对软件工程的问题及个别软件的分析
  13. [转载] python中pow可以计算负数吗_Python数学.pow()计算失误
  14. vbs计算机重启代码,vbs关机代码怎么使用
  15. 快来了解一下5个超实用的WPS表格操作技巧!
  16. 微信点开分享文章所带的关键字
  17. 【java期末复习题】第4章 面向对象基础
  18. c++ 写入文件_常见数据库写入Webshell汇总
  19. Win10配置TensorFlow
  20. 每秒处理10万订单的乐视支付架构

热门文章

  1. 为什么MySQL不推荐使用uuid或者雪花id作为主键?
  2. 比 Spring Boot 快 10 倍的 Bootique 框架
  3. ELK教程3:logstash的部署、SpringBoot整合ELK+Filebeat
  4. Spring Cloud第一篇:服务注册与发现Eureka
  5. 2022 AI趋势8大预测!
  6. 清华大学唐杰教授:人工智能的十年总结
  7. PYTHON编程导论群【提问与解惑】数据统计
  8. 一块只要4美元,超廉价版树莓派诞生,还用上了自研芯片
  9. 如何用PyTorch进行语义分割?
  10. 升级版Mask R-CNN:PANet