docker 的两总日志
- Docker 引擎日志就是 dockerd 运行时的日志
- 在CentOS 7系统中,Docker 引擎日志一般是交给 systemd来管理
- 查询方法:journalctl -u docker
# journalctl -u docker
- 容器的日志即容器内的服务产生的日志
- 对于一个运行的容器,Docker 会将日志发送到 容器的 标准输出设备(STDOUT)和标准错误设备(STDERR),STDOUT 和 STDERR 实际上就是容器的控制台终端
Docker 提供了多种日志机制帮助用户从运行的容器中提取日志信息,这些机制被称作 logging driver
Docker 的默认 logging driver 是json-file
╭─root@du-z ~
╰─➤ docker info | grep Logging
Logging Driver: json-file
Docker支持的日志驱动列表
Driver
Description
none
运行的容器没有日志,docker logs也不返回任何输出。
local
日志以自定义格式存储,旨在实现最小开销。
json-file
日志格式为JSON。Docker的默认日志记录驱动程序。
syslog
将日志消息写入syslog。该syslog守护程序必须在主机上运行。
journald
将日志消息写入journald。该journald守护程序必须在主机上运行。
gelf
将日志消息写入Graylog扩展日志格式(GELF)端点,例如Graylog或Logstash。
fluentd
将日志消息写入fluentd(转发输入)。该fluentd守护程序必须在主机上运行。
awslogs
将日志消息写入Amazon CloudWatch Logs。
splunk
使用HTTP事件收集器将日志消息写入splunk。
etwlogs
将日志消息写为Windows事件跟踪(ETW)事件。仅适用于Windows平台。
gcplogs
将日志消息写入Google Cloud Platform(GCP)Logging。
logentries
将日志消息写入Rapid7 Logentries。
Driver网址:https://docs.docker.com/config/containers/logging/configure/
方法一:
# docker logs CONTAINER
# docker logs -f CONTAINER
- docker logs能够打印出自容器启动以来完整的日志,并且-f 参数可以实时监控
- 当日志量比较大的时候,我们使用 docker logs 来查看日志,会对 docker daemon 造成比较大的压力,容器导致容器创建慢等一系列问题
- 只有使用了 local 、json-file、journald 的日志驱动的容器才可以使用 docker logs 捕获日志
在开源的日志管理方案中,最出名的莫过于 ELK 了。ELK 是三个软件的合称:Elasticsearch、Logstash、Kibana。
一个近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是要能够处理和搜索巨量的日志数据。
读取原始日志,并对其进行分析和过滤,然后将其转发给其他组件(比如 Elasticsearch)进行索引或存储。Logstash 支持丰富的 Input 和 Output 类型,能够处理各种应用的日志。
一个基于 JavaScript 的 Web 图形界面程序,专门用于可视化 Elasticsearch 的数据。Kibana 能够查询 Elasticsearch 并通过丰富的图表展示结果。用户可以创建 Dashboard 来监控系统的日志
手机扫一扫
移动阅读更方便
你可能感兴趣的文章