本篇已参加《.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)。
发表评论