Docker 容器日志管理及 Elasticsearch+Kibana 的使用

阅读时长 6 分钟读完

随着容器技术的发展,使用 Docker 部署前端应用已经成为了趋势。在 Docker 部署前端应用的过程中,容器日志管理尤为重要。本文将介绍如何使用 Elasticsearch+Kibana 对 Docker 容器日志进行管理和分析。

Docker 容器日志

Docker 容器具有轻量级、快速启动、易于部署等优点。但是,容器的生命周期短暂,当容器被删除时,日志等信息也会被删除。

为了解决这个问题,Docker 提供了多种方式记录容器日志,包括:

  • stdout/stderr 输出
  • 持久化存储
  • Docker 日志驱动

其中, Docker 日志驱动是最常用的方式。Docker 支持以下几种日志驱动:

  • json-file
  • syslog
  • journald
  • gelf
  • fluentd
  • awslogs
  • splunk
  • etwlogs
  • none

我们可以通过 --log-driver 参数来指定日志驱动,例如:

在这种配置下,容器的日志将会被保存到 /var/lib/docker/containers/<container_id>/<container_id>-json.log 文件中。

Elasticsearch+Kibana

Elasticsearch 是一个分布式、RESTful 的搜索和分析引擎,Kibana是一个可视化分析平台,提供了 Dashboard、Visualize 和 Discovery 等功能。Elasticsearch+Kibana 组合可以用于实时分析、搜索和可视化各种复杂数据。

安装 ElasticSearch+Kibana

首先,我们需要安装 Elasticsearch 和 Kibana。Elasticsearch 建议使用版本 7.x 或以上,Kibana 不宜与 Elasticsearch 的主版本不同。

可以通过以下命令安装 Elasticsearch 和 Kibana:

其中,--link 参数用于连接 Elasticsearch 服务。

配置 Docker 日志驱动

要将 Docker 容器日志发送到 Elasticsearch,我们需先安装 docker-elk 工具。使用以下命令:

然后,在 Docker 部署时,需指定日志驱动为 gelf:

在这种配置下,Docker 容器日志将通过 Graylog Extended Log Format (GELF) 发送到 Elasticsearch,并附带 tag=mytag 作为标签。在 Kibana 中,我们可以通过这个标签来分析日志。我们还需配置 Elasticsearch 的索引模板,以正确解析容器日志的字段。在本文中,不再详述。

使用 Kibana 分析日志

打开浏览器,输入 http://localhost:5601,进入 Kibana。

创建索引模板

在 Kibana 的 “Management” -> “Index Patterns”,创建一个新日志索引模板。在这个模板中,Docker 的日志格式以及其他日志信息必须正确设置。可以使用默认设置或者自定义模板,这里我们使用默认模板。

分析容器日志

直接在 Kibana 的搜索栏中用英文关键词搜索,如 nginx ,可以看到 Elasticsearch 服务立即搜索和查询所有匹配的日志,然后将日志以表格、图表等形式呈现出来。我们还可以使用标签等元数据对日志进行筛选和过滤。

总结

本文介绍了 Docker 容器日志的管理和 Elasticsearch+Kibana 的使用。通过这种方式,我们可以实时监控、分析和搜索 Docker 容器的日志,从而快速定位问题,优化前端应用的部署和运行。如果您对日志分析和 Docker 容器有更多的了解和实践经验,欢迎分享和讨论。

示例代码

docker-compose.yml

-- -------------------- ---- -------
-------- ---
---------
  --------------
    ------ --------------------
    ------
      - -----------
      - -----------
  -------
    ------ -------------
    ------
      - -----------
    -----------
      - -------------
  ---------
    ------ ---------------
    --------
      - ------------------------------------
    -----------
      - -------------
    -------- ------ -------------------------------------------
  ----
    ------ -------------------
    --------
      ------- ----
      --------
        ------------- ---------------------
        ---- -----
    ------
      - -------
      - ---------

logstash.conf

-- -------------------- ---- -------
----- -
  ---- -
    ---- -- -----
  -
-

------ -
  -- -------- -- -------- -
    ---- -
      ----- -- - --------- -- ---------------------- -
    -
    ---- -
      ----- -- - ------------ --------------------- -- -
    -
  -
  ------ -
    ------------ -- - ------- ------------ ------------- ----------- --------- -------- -
  -
-

------ -
  ------------- -
    ----- -- -----------------------------
    ----- -- -----------------------
    ------------- -- -----
  -
-

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65b963acadd4f0e0ff1d97c1

纠错
反馈