前言
在前端开发中,日志收集与管理一直是一个必不可少的工作。而随着技术的不断发展和进步,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. 启动服务
在项目根目录下执行以下命令启动服务:
docker-compose up -d
等待一段时间后,服务会启动完毕。可以通过访问 http://localhost:5601 来打开 Kibana 的界面。
如何将日志发送到 ELK
实现将日志发送到 ELK 上主要有两种方式:通过 Logstash 转发和直接发送到 Elasticsearch。下面分别介绍这两种方式。
通过 Logstash 转发
在应用中使用 Logstash 的监听器来将日志转发到 ELK。下面是一个示例代码:
const logstash = require('node-logstash'); const logger = logstash.createLogger({ host: 'localhost', port: 5000, }); logger.info('This is a test log');
该代码中使用了名为 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