使用 Docker Compose 部署 ELK 日志收集系统实践

阅读时长 6 分钟读完

前言

在前端开发中,日志收集与管理一直是一个必不可少的工作。而随着技术的不断发展和进步,ELK(Elasticsearch + Logstash + Kibana)日志收集系统已成为了一个非常流行的解决方案。

本文将介绍如何使用 Docker Compose 快速搭建 ELK 日志收集系统,包括安装和配置 ELK,以及通过示例代码展示如何将日志发送到 ELK。

ELK 简介

ELK 是一个完整的日志收集和管理系统,由三个组件组成:Elasticsearch、Logstash 和 Kibana。它们分别负责数据存储、数据处理和数据展示。

  • Elasticsearch:基于 Lucene 搜索引擎,提供了一个 RESTful API,用于存储和查询数据。
  • Logstash:用于收集、解析和转换数据,将数据发送到 Elasticsearch 中。
  • Kibana:提供一个 Web 界面,用于查询和可视化 Elasticsearch 中的数据。

使用 Docker Compose 搭建 ELK 日志收集系统

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。使用 Docker Compose 可以方便地管理多个容器,包括容器之间的网络、数据卷等资源的管理。下面是使用 Docker Compose 搭建 ELK 日志收集系统的步骤。

1. 安装 Docker 和 Docker Compose

首先需要安装 Docker 和 Docker Compose,在这里不做过多介绍。

2. 编写 Docker Compose 配置文件

在项目根目录下创建一个 docker-compose.yml 文件,内容如下:

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

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

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

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

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

该配置文件中包含了三个服务:elasticsearch、logstash 和 kibana。

  • elasticsearch:使用 elasticsearch:7.10.2 镜像启动,绑定 9200 和 9300 端口,使用 elasticsearch-data 数据卷保存数据。
  • logstash:使用 logstash:7.10.2 镜像启动,绑定 ./logstash/pipeline 目录作为配置文件目录,依赖于 elasticsearch 服务,并将配置文件中的 ELASTICSEARCH_HOSTS 参数设置为 http://elasticsearch:9200。
  • kibana:使用 kibana:7.10.2 镜像启动,绑定 5601 端口,依赖于 elasticsearch 服务,并将配置文件中的 ELASTICSEARCH_HOSTS 参数设置为 http://elasticsearch:9200。

3. 编写 Logstash 配置文件

在项目根目录下创建一个 logstash/pipeline 目录,用于保存 Logstash 的配置文件。

在该目录下创建一个名为 logstash.conf 的文件,内容如下:

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

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

该配置文件中定义了一个输入和一个输出。输入使用 TCP 协议监听 5000 端口,使用 json 编解码。输出将数据发送到 Elasticsearch 中。

4. 启动服务

在项目根目录下执行以下命令启动服务:

等待一段时间后,服务会启动完毕。可以通过访问 http://localhost:5601 来打开 Kibana 的界面。

如何将日志发送到 ELK

实现将日志发送到 ELK 上主要有两种方式:通过 Logstash 转发和直接发送到 Elasticsearch。下面分别介绍这两种方式。

通过 Logstash 转发

在应用中使用 Logstash 的监听器来将日志转发到 ELK。下面是一个示例代码:

该代码中使用了名为 node-logstash 的库,调用 createLogger 方法创建一个监听器。其中 host 和 port 分别为 Logstash 的地址和端口。调用 info 方法将日志信息发送到 Logstash。

直接发送到 Elasticsearch

在应用中使用 Elasticsearch 的 Node.js 客户端直接将日志发送到 Elasticsearch。下面是一个示例代码:

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

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

该代码中使用了名为 @elastic/elasticsearch 的库,调用 Client 构造函数创建一个 Elasticsearch 的客户端。其中 node 为 Elasticsearch 的地址。调用 index 方法将日志信息发送到 Elasticsearch 中。

总结

本文介绍了如何使用 Docker Compose 快速搭建 ELK 日志收集系统,并通过示例代码展示了如何将日志发送到 ELK 上。希望本文能对大家了解 ELK 日志收集系统有所帮助。

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

纠错
反馈