容器日志知多少 (1) Docker logs & logging driver
本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。监控和日志历来都是系统稳定运行和问题排查的关键,在微服务架构中,数量众多的容器以及快速变化的特性使得一套集中式的日志管理系统变成了生产环境中一个不可获取的部分。此次话题我们会集中在日志管理方面,本篇会介绍Docker自带的logs子命令以及其Logging driver。
一、Docker logs子命令
默认情况下,Docker的日志会发送到容器的标准输出设备(STDOUT)和标准错误设备(STDERR),其中STDOUT和STDERR实际上就是容器的控制台终端。
我们可以通过logs子命令来查看具体某个容器的日志输出:
docker logs edc-k8s-demo
这时看到的日志是静态的,截止到目前为止的日志。如果想要持续看到新打印出的日志信息,那么可以加上 -f 参数,如:
docker logs -f edc-k8s-demo
二、Docker logging driver
刚刚我们学习了默认配置下,Docker日志会发送到STDOUT和STDERR。但实际上,Docker还提供了其他的一些机制允许我们从运行的容器中提取日志,这些机制统称为 logging driver。
对Docker而言,其默认的logging driver是json-file,如果在启动时没有特别指定,都会使用这个默认的logging driver。
json-file会将我们在控制台通过docker logs命名看到的日志都保存在一个json文件中,我们可以在服务器Host上的容器目录中找到这个json文件。
容器日志路径:/var/lib/docker/containers/<container-id>/<container-id>-json.log
例如我们可以查看一个exceptionless-api容器的json日志:
一个快速查看某个容器的日志文件路径的方法:
docker inspect exceptionless_api_1
通过inspect命令,可以查到该容器的ID及一系列配置信息,我们重点关注LogPath即可:
查到LogPath后,即可复制其后面的日志路径了,打开这个json文件你就可以看到输出的容器日志了。
除了json-file,Docker还支持以下多种logging dirver,来源:Configure logging drivers
其中,none 代表禁用容器日志,不会输出任何容器日志。
其他几个logging driver解释如下:
- syslog 与 journald 是Linux上的两种日志管理服务
- awslog、splunk 与 gcplogs是第三方日志托管服务
- gelf 与 fluentd 是两种开源的日志管理方案
我们可以在容器启动时通过加上 --log-driver 来指定使用哪个具体的 logging driver,例如:
docker run -d --log-driver=syslog ......
如果想要设置默认的logging driver,那么则需要修改Docker daemon的启动脚本,例如:
{ "log-driver": "json-file", "log-opts": { "labels": "production_status", "env": "os,customer" } }
每个logging driver都有一些自己特定的log-opt,使用时可以参考具体官方文档。
三、小结
本文介绍了Docker自带的logs子命令以及logging driver,默认的logging driver是json-file,当然Docker还支持多个不同机制的logging dirver,我们可以根据自己的需要在使用时进行指定。下一篇,我们会学习流行的开源日志管理三兄弟ELK(ElasticSearch、Logstash、Kibana)。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【Kubernetes系列】第10篇 网络原理解析(下篇)
3. 覆盖网络 - Overlay Network 覆盖网络(overlay network)是将TCP数据包装在另一种网络包里面进行路由转发和通信的技术。Overlay网络不是默认必须的,但是它们在特定场景下非常有用。比如当我们没有足够的IP空间,或者网络无法处理额外路由,抑或当我们需要Overlay提供的某些额外管理特性。一个常见的场景是当云提供商的路由表能处理的路由数是有限制时,例如AWS路由表最多支持50条路由才不至于影响网络性能。因此如果我们有超过50个Kubernetes节点,AWS路由表将不够。这种情况下,使用Overlay网络将帮到我们。 本质上来说,Overlay就是在跨节点的本地网络上的包中再封装一层包。你可能不想使用Overlay网络,因为它会带来由封装和解封所有报文引起的时延和复杂度开销。通常这是不必要的,因此我们应当在知道为什么我们需要它时才使用它。 为了理解Overlay网络中流量的流向,我们拿Flannel做例子,它是CoreOS 的一个开源项目。Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UD...
- 下一篇
阿里云ECS云服务器与轻量应用服务器哪个好用?有什么区别?
轻量应用服务器是阿里云独有的机型,因为这个机型与普通的云服务器区别很大。为什么已经有了规模化ECS云服务器之后,还要单独推出轻量应用服务器这个类型呢?对于用户来说阿里云轻量应用服务器和ECS云服务器哪个好?今天和大家一起了解一下.首先我们打开阿里云,找到轻量应用服务器和云服务器ECS的入口: www.alijyun.com 一、轻量应用服务器和ECS云服务器定位不同: 这两款产品的定位不同。比如说阿里云ECS云服务器是一台放在云端的可以自主选择配置、可弹性升级的电脑主机,自己选择CPU、内存、硬盘、带宽配置,自行安装操作系统,适合有一定互联网建站经验和服务器运维基础的用户。而轻量应用服务器是已经安装好操作系统的云服务器,适合对服务器操作不熟练的新手用户,能够快速上手建站。 1、轻量应用服务器 : 是可快速搭建且易于管理的轻量级云服务器;提供基于单台服务器的应用部署,安全管理,运维监控等服务,一站式提升服务器使用体验和效率。轻量应用服务器提供定制化应用镜像且有可视化控制台可以操作,不怕新手不会用。轻量应用服务器精简了一些 ECS 的功能,把安全组的操作做了适当减法更适合用户操作。更多参阅...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装