Docker -- 日志

docker 的两总日志docker

  1. 引擎日志
  2. 容器日志

引擎日志

简介:

  • Docker 引擎日志就是 dockerd 运行时的日志
  • 在CentOS 7系统中,Docker 引擎日志通常是交给 systemd来管理
  • 查询方法:journalctl -u docker
# journalctl -u docker

容器日志

简介:

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

日志驱动

Docker 提供了多种日志机制帮助用户从运行的容器中提取日志信息,这些机制被称做 logging driverjson

Docker 的默认 logging driver 是json-fileapi

╭─root@du-z ~  
╰─➤  docker info | grep Logging
 Logging Driver: json-file

Docker支持的日志驱动列表elasticsearch

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 了。ELK 是三个软件的合称:Elasticsearch、Logstash、Kibana。日志

Elasticsearch

一个近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是要可以处理和搜索巨量的日志数据。code

Logstash

读取原始日志,并对其进行分析和过滤,而后将其转发给其余组件(好比 Elasticsearch)进行索引或存储。Logstash 支持丰富的 Input 和 Output 类型,可以处理各类应用的日志。orm

Kibana

一个基于 JavaScript 的 Web 图形界面程序,专门用于可视化 Elasticsearch 的数据。Kibana 可以查询 Elasticsearch 并经过丰富的图表展现结果。用户能够建立 Dashboard 来监控系统的日志blog