美文网首页Docker容器系统运维专家
docker容器技术学习笔记(11、日志管理之docker lo

docker容器技术学习笔记(11、日志管理之docker lo

作者: 阳一yayi | 来源:发表于2018-09-08 15:17 被阅读1次

    几个已经广泛应用的日志管理方案:ELK、Fluentd 和 Graylog。


    Docker logs

    docker logs 能够打印出自容器启动以来完整的日志,并且 -f 参数可以继续打印出新产生的日志,效果上与 Linux 命令 tail -f 一样。

    logging driver

    Docker 的默认 logging driver 是 json-file。

    # docker info |grep 'Logging Driver'
    Logging Driver: json-file
    

    json-file 会将容器的日志保存在 json 文件中,Docker 负责格式化其内容并输出到 STDOUT 和 STDERR。

    我们可以在 Host 的容器目录中找到这个文件,器路径为 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log

    除了 json-file,Docker 还支持多种 logging driver。完整列表可访问官方文档 https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers

    none 是 disable 容器日志功能。
    syslog 和 journald 是 Linux 上的两种日志管理服务。
    awslogs、splunk 和 gcplogs 是第三方日志托管服务。
    gelf 和 fluentd 是两种开源的日志管理方案

    容器启动时可以通过 --log-driver 指定使用的 logging driver。如果要设置 Docker 默认的 logging driver,需要修改 Docker daemon 的启动脚本,指定 --log-driver 参数,比如:

    ExecStart=/usr/bin/dockerd -H fd:// --log-driver=syslog --log-opt ......
    每种 logging driver 都有自己的 --log-opt,使用时请参考官方文档。

    ELK

    • Elasticsearch

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

    • Logstash

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

    • Kibana

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

    • 日志处理流程

    下图展示了 Docker 部署环境下典型的 ELK 日志处理流程:

    Logstash 负责从各个 Docker 容器中提取日志,Logstash将日志转发到 Elasticsearch 进行索引和保存,Kibana 分析和可视化数据。

    几乎所有的软件和应用都有自己的日志文件,容器也不例外。前面我们已经知道 Docker 会将容器日志记录到 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log,那么只要我们能够将此文件发送给 ELK 就可以实现日志管理。实现这一步其实不难,因为 ELK 提供了一个配套小工具 Filebeat,它能将指定路径下的日志文件转发给 ELK。

    当前的日志处理流程如下图所示:

    Fluentd

    Fluentd 是一个开源的数据收集器,它目前有超过 500 种的 plugin,可以连接各种数据源和数据输出组件。Fluentd 会负责收集容器日志,然后发送给 Elasticsearch。日志处理流程如下:


    Filebeat 将 Fluentd 收集到的日志转发给 Elasticsearch。这当然不是唯一的方案,Fluentd 有一个 plugin fluent-plugin-elasticsearch 可以直接将日志发送给 Elasticsearch。条条道路通罗马,开源世界给予了我们多种可能性,可以根据需要选择合适的方案。

    Graylog日志系统

    • Graylog 架构

    Graylog 负责接收来自各种设备和应用的日志,并为用户提供 Web 访问接口。
    Elasticsearch 用于索引和保存 Graylog 接收到的日志。
    MongoDB 负责保存 Graylog 自身的配置信息。

    相关文章

      网友评论

        本文标题:docker容器技术学习笔记(11、日志管理之docker lo

        本文链接:https://www.haomeiwen.com/subject/tsdcgftx.html