docker 的两总日志docker
- 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 是三个软件的合称:Elasticsearch、Logstash、Kibana。日志
一个近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是要可以处理和搜索巨量的日志数据。code
读取原始日志,并对其进行分析和过滤,而后将其转发给其余组件(好比 Elasticsearch)进行索引或存储。Logstash 支持丰富的 Input 和 Output 类型,可以处理各类应用的日志。orm
一个基于 JavaScript 的 Web 图形界面程序,专门用于可视化 Elasticsearch 的数据。Kibana 可以查询 Elasticsearch 并经过丰富的图表展现结果。用户能够建立 Dashboard 来监控系统的日志blog