使用 ELK 技术栈进行 Docker 日志处理(第 1 部分) -- 知识铺
清一下草稿箱库存
译自:Docker Logging with the ELK Stack - Part One
译者:临书
注:有删改
这篇文章是《使用 ELK 技术栈进行 Docker 日志处理》系列文章第 1 部分。(共两部分)
在本部分中,我将介绍如何配置从 Docker 容器到 ELK 技术栈(Elasticsearch,Logstash 和 Kibana)日志管道的基本步骤。
第 2 部分将描述使用 ELK 记录 Docker 日志后的下一步 - 分析和可视化日志。
了解管道
一个典型的 Docker 化服务的 ELK 管道大概是下面这样:
Logstash 从各种 Docker 容器和主机中提取日志,它是 ELK 技术栈的主力,它应用过滤器来更好地解析日志。Logstash 将日志转发到 Elasticsearch 进行索引,Kibana 分析并可视化数据。
当然,这条管道并不一成不变。例如,您可以使用其他日志收集器(如 Fluentd 或 Filebeat)将日志发送到 Elasticsearch。或者,您可以添加一个由 Kafka 或 Redis 容器组成的附加层,以充当 Logstash 和 Elasticsearch 之间的缓冲区。
那么,如何建立这条管道呢?
安装 ELK Stack
有很多种方法可以将 ELK 与 Docker 环境集成起来。您可以在本地或远程计算机上安装 ELK Stack - 或直接 Docker 化不同的组件。
关于在 Docker 上部署 ELK 是否是生产环境的可行解决方案(资源消耗和网络是主要问题)仍然存在很多争议,但它绝对是一种饱含成本效益的方法。
ELK Docker 镜像建议用这个:docker-elk,它具有丰富的运行选项(所以您可以使用标签来组合不同的版本),还有优秀的文档,并且它的版本和 Elasticsearch,Logstash 和 Kibana 保持同步。
在安装前,确保一下端口打开:
- 5601(Kibana)
- 9200(Elasticsearch)
- 5044(Logstash)
还有,确保 vm_maxmap_count
内核配置至少为 262144:
|
|
启动 ELK Stack:
|
|
默认会启动所有 ELK 服务(Elasticsearch,Logstash,Kibana)
|
|
验证安装
为了确保一切都按预期工作,请执行以下操作:
你应该看到如下返回:
|
|
打开 Kibana(http://[serverIP]:5601)
如您所见,需要输入索引模式,只有在索引某些日志后才能进行索引模式。 我们稍后会谈到这个。
安装 ELK Stack 很简单。将 Docker 日志送入 ELK 就有点复杂了,您使用的方法在很大程度上取决于您输出日志的方式。
如果没有显式指定,特定容器的 stdout 和 stderr (称为docker logs
)将输出到JSON文件。 因此,如果您设置了一个小的 Docker 环境,那么使用Filebeat来收集日志是可行的方法。 但是,如果您使用的是其他日志驱动,则可能需要考虑其他方法。
以下是将日志导入 ELK 的三种不同方法。
使用 Filebeat
Filebeat 属于 Elastic 的 Beats 日志转运插件系列。Filebeat 是 Go 写的,它是一个轻量级转运插件,可以跟踪特定文件,支持加密,并且可以配置为导出到 Logstash 容器或直接导出到 Elasticsearch。
如上所述,如果您使用默认的 JSON 文件日志记录驱动程序,Filebeat 是一种相对简单的方式发送到 ELK。 Filebeat 可以部署在您的主机上,或者您当然可以将其作为容器与 ELK 容器一起运行(在这种情况下,您需要添加到ELK容器的链接)。 还有各种 Filebeat Docker 映像可用,其中一些包括运行 Filebeat 并将其连接到 Logstash 的配置。
至少,您的 Filebeat 配置需要指定 JSON 日志文件的路径(位于:/ var/lib/docker/containers /...
)和目标的详细信息(通常是 Logstash 容器)
示例配置:
|
|
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240507/%E4%BD%BF%E7%94%A8-ELK-%E6%8A%80%E6%9C%AF%E6%A0%88%E8%BF%9B%E8%A1%8C-Docker-%E6%97%A5%E5%BF%97%E5%A4%84%E7%90%86%E7%AC%AC-1-%E9%83%A8%E5%88%86--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com