本节书摘来自华章出版社《ELK Stack权威指南(第2版)》一书中的第3章,第3.8节,作者 饶琛琳  更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.8 Docker日志

Docker是目前大规模互联网基础架构解决方案中最热门的技术。它带给运维工程师一个截然不同的思考角度和工作方式。

就日志层面看,Docker最大的影响在于:其最佳实践要求一个容器内部只有一个生命周期随时可以消亡的服务进程。这也就意味着:传统的写入磁盘,固定采集方式的日志系统,无法正常发挥作用。所以,在容器服务中,记录日志需要采用另外的方式。本节将介绍其中最常见的两种:记录到主机磁盘,或通过logspout收集。

3.8.1 记录到主机磁盘

默认情况下,Docker会将容器的标准输出和错误输出,保存在主机的/var/lib/docker/containers/目录下。所以,在规模比较稳定的情况下,直接记录到主机磁盘,然后通过主机上的Logstash收集日志,也是不错的方案。

以Nginx为例,将Nginx访问日志和错误日志输出到标准输出的配置如下:

daemon off;

error_log /dev/stdout info;

http {

access_log /dev/stdout;

...

}

不过,容器的特殊性在这里又一次体现出来,容器中其实是没有/dev/stdout设备的。所以我们需要自己单独处理一下,在Dockerflie里加上一句:

RUN ln -sf /proc/self/fd /dev/

这样,既保证了nginx.conf是主机和容器通用的配置,又顺利达到目的。

然后通过如下Logstash配置收集即可:

3.8.2 通过logspout收集

logspout是Docker生态圈中最有名的日志收集方式,其设计思路是:每个主机上启动一个单独容器运行logspout服务,负责将同一个主机上其他容器的日志,根据route设定,转发给不同的接收端。

logspout的基本用法如下:

这个配置的意思是,将容器名带有db字样的走错误输出的采集的日志,以syslog协议发送到remoteaddr2主机的5140端口。

注意,logspout采用的是RFC5424版本的syslog协议,所以如果使用的接收方是RFC3164版本的syslog协议解析,需要自己调整一下。比如logstash-input-syslog采用的就是RFC3164协议,所以需要自己来另外完成:

input {

tcp {

port => 5140

}

}

filter {

grok {

match => [“message”, “<SYSLOG5424PRI:syslog_pri> %{SYSLOG5424LINE:message}“]

}

}

此外,logspout支持模块化扩展,所以,我们也可以直接在logspout上处理成对Logstash更友好的格式。扩展logspout支持Logstash格式的方法如下:

1)编辑Dockerfile,修改成如下内容:

FROM gliderlabs/logspout:master

ENV ROUTE_URIS=logstash://host:port

2)编辑modules.go,修改成如下内容:

package main

import (

_ "github.com/looplab/logspout-logstash"

_ "github.com/gliderlabs/logspout/transports/udp"

)

3)构建镜像:

docker build

这样,后续Logstash就直接进行JSON解析即可。

《ELK Stack权威指南(第2版)》一3.8 Docker日志相关推荐

  1. 《ELK Stack权威指南(第2版)》一3.5 Windows系统日志

    本节书摘来自华章出版社<ELK Stack权威指南(第2版)>一书中的第3章,第3.5节,作者 饶琛琳  更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.5 ...

  2. 《ELK Stack权威指南 》第1章 入门示例

    本节书摘来自华章出版社<ELK Stack权威指南 >一书中的第1章,第1节,作者饶琛琳,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 入 门 示 例 什么是 ...

  3. 《ELK Stack权威指南 》第3章 场景示例

    本节书摘来自华章出版社<ELK Stack权威指南 >一书中的第1章,第3节,作者饶琛琳,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 场 景 示 例 前面虽 ...

  4. ELK学习7_ELK文档资料:《ELK stack 权威指南/饶琛琳》勘误

    新作<ELK stack权威指南>已经上架销售,考虑到个人精力有限,笔误.差错肯定在所难免.特开这个页面作为勘误清 单,也包括一些书中技术经过重大更新不在适用或推荐的简略说明. 如果大家有 ...

  5. ELK学习5_ELK文档资料:《ELK stack 权威指南/饶琛琳》推荐

    <ELK stack 权威指南/饶琛琳>的内容在网上共享有电子版,网站地址是: http://kibana.logstash.es/ . 作者也提供了电子版的下载,下载描述如下: You ...

  6. python网络爬虫权威指南 百度云-分析《Python网络爬虫权威指南第2版》PDF及代码...

    对那些没有学过编程的人来说,计算机编程看着就像变魔术.如果编程是魔术(magic),那么网页抓取(Web scraping)就是巫术(wizardry),也就是运用"魔术"来实现精 ...

  7. mysql5权威指南_MySQL5权威指南(第3版)

    MySQL5权威指南(第3版)是一本非常权威的MySQL5数据库使用指南,由程序员科夫勒和杨晓云两人共同编著.本书内容丰富翔实,详细的介绍了MySQL 5.0,讨论了新的程序设计接口(如PHP 5里的 ...

  8. 《Cassandra权威指南》第二版书评及访谈

    \ 关键点 \ 了解关于Cassandra NoSQL数据库3.0版的功能: \ 如何安装和配置Cassandra数据库,包括集群管理: \ Cassandra数据库的数据模型(概念.逻辑和物理方面) ...

  9. [201504][Netty 权威指南][第2版][李林锋][著]

    [201504][Netty 权威指南][第2版][李林锋][著] https://github.com/wuyinxian124/nettybook2 基础篇 走进 Java NIO 第 1 章 J ...

最新文章

  1. ASP.NET.4.5.1+MVC5.0系统角色和权限讲解
  2. 每秒处理请求数和并发的关系
  3. 豪横!程序员搭个人博客,一个 GitHub 账号足矣!
  4. 计算机硬件:内存常识知多少?内存知识盲区详解
  5. char *a 与char a[] 的区别和char** argv与char *argv[]区别
  6. jzoj1082-合并果子【堆,贪心】
  7. LeetCode 405. 数字转换为十六进制数
  8. 05_流与文件——课后作业
  9. 25张图让你读懂神经网络架构
  10. Hololens中的虚拟物体通过Vuforia的码实现虚实融合打开hololens像机
  11. 某游戏中有轰炸机、直升机、重型坦克、轻型坦克、飞行兵、步兵等六大兵种
  12. 阿里云天池大赛——机器学习篇赛题解析(赛题一)上
  13. bp神经网络误差反向传播,什么叫误差的反向传播
  14. VMware下的Ubuntu安装jink进行调试
  15. mysql 右连接(right join)
  16. 山东农业大学计算机复试,山东农业大学复试录取分数线
  17. 好佳居窗帘十大品牌 窗帘的发展故事
  18. Cannot run code from this file in conjunction with non encoded files
  19. 如何快速定位到网页中某些内容的代码位置
  20. redis统计用户日活量_使用redis统计用户日活、月活(实践版)

热门文章

  1. OpenGL概念辨析: 窗口,视口,裁剪区域
  2. C++自动生成的成员函数
  3. 什么是ThreadLocal
  4. sql_trace的介绍
  5. 【C++】【一】结构体数组
  6. UBUNTU adb连接android设备
  7. API Sanity Checker在Ubuntu中的使用
  8. 【linux】Valgrind工具集详解(九):Memcheck检查的内容和方法
  9. 未获得计算机访问权限,如何获取文件夹的访问权限
  10. javascript乘法和加法_JavaScript大数相加相乘的实现方法实例