【问题标题】:Docker - Simplest way to have centralized logging with multiple machines and log driver json-file?Docker - 使用多台机器和日志驱动程序 json 文件进行集中日志记录的最简单方法?
【发布时间】:2019-06-21 20:13:11
【问题描述】:

我有几台服务器,docker部署方法是docker-compose。

所有容器都简单地记录到 stdout/stderr 并且 docker 日志记录驱动程序是默认的 json-file 驱动程序。

有没有一种简单的方法可以集中记录所有容器?

【问题讨论】:

  • 您可以使用 ELK(弹性搜索、logstash、kibana)堆栈为您的 docker 容器简单地设置集中式日志记录。
  • hackernoon.com/…,看看!
  • @SyedSaadAhmed 您能否创建一个答案,涵盖:先决条件(设置弹性搜索/kibana 服务器)和一些资源,然后在配置为使用 json- 的机器上逐步设置 logstash文件驱动程序?我会接受它作为正确答案。

标签: docker logging docker-compose


【解决方案1】:

告诉你如何设置一个完整的基础架构会有点困难和冗长。

这些是维护或从 docker 容器获取日志的一些方法。对于弹性搜索,您可以在 Kibana 中进行一些搜索,您将很容易了解如何设置。

Docker 日志,输出到 JSON 文件。所以,如果你有一个小型的 Docker 环境,你可以使用 Filebeat 来收集日志。但是,您也可以考虑另一种方法。还有很多其他的

文件节拍

Filebeat 属于 Elastic 的 Beats 日志传送器系列。 Filebeat 是用 Go 编写的,是一个轻量级的传送器,可以跟踪特定文件,支持加密,并且可以配置为导出到您的 Logstash 容器或直接导出到 Elasticsearch。

至少,您的 Filebeat 配置需要指定 JSON 日志文件的路径(位于 /var/lib/docker/containers/...)和目标的详细信息(通常是 Logstash 容器)。

一个示例配置:

prospectors:     
 - paths:        
   - /var/log/containers/<xxx>          
   document_type: syslog     
output:
 logstash:  
  enabled: true  
  hosts:   
      - elk:5044

其他一些方法是;

使用日志记录驱动程序使用 Logspoutlogzio

此外,配置 filebeat 配置文件以将日志发送到 logstash。为那个编辑 /etc/filebeat/filebeat.yml 文件

# — — — — — — — — — — Logstash output — — — — — — — — — —
output.logstash:
# The Logstash hosts
hosts: ["192.168.xx.xx:5044"]

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2023-04-08
    • 2015-12-17
    • 2023-03-14
    • 2017-06-18
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多