ELK Stack 教程:Elasticsearch、Logstash、Kibana 和 Beats 入门

linuxoperating systemopen source更新于 2026/1/29 20:07:17

ELK Stack 是查看和处理 ELK Stack 或 Elastic Stack 中文件的最佳工具之一。该工具由三个开源工具组成:E-Elasticsearch、L-Logstash 和 K-Kibana。

ELK Stack 工具用于实时处理和分析大量数据。而 Beats 是一个开放独立的平台,面向单一用途的数据采集器。它将来自数百或数千个系统和机器的数据发送到 Elasticsearch 或 Logstash。

ELK Stack 广泛应用于医疗保健、金融和 IT 等各行各业,用于故障排除、监控和日志分析。因此,这篇长文将为您详细介绍 ELK Stack 以及在 Linux 中设置它的方法。

ELK Stack 教程:Elasticsearch、Logstash、Kibana 和 Beats

正如我们上面提到的,ELK Stack 是不同工具的组合,因此我们将逐一讨论它们,以便对它们有一个大致的了解 -

  • Elasticsearch - Elasticsearch 是一个可搜索的日志文件数据库,可以高效快速地检索数据。该工具主要用于索引和存储数据。它作为一个可搜索、可扩展的数据库来存储数据。

  • Logstash - Logstash 充当数据处理管道,从各种来源读取、收集、转换和解析数据,然后将数据发送到 ElasticSearch。此工具从各种来源(包括应用程序、服务器和设备)收集日志和其他数据。

  • Kibana − Kibana 使用 Web 浏览器界面来组织和显示数据。此工具具有高度可配置性,用户可以根据需要进行调整。同时,它允许您创建报告和交互式仪表板,以分析存储在 ElasticSearch 中的数据。

    它是一款可视化工具,提供用户友好的用户界面来查看用户数据。此功能使用户能够轻松探索和可视化数据。

  • 测试版 − Beats 是轻量级数据采集器或专用于特定任务的小型数据收集应用程序。不同的 Beats 应用程序用于各种目的,例如访问服务器的其他部分、读取文件以及发送文件。例如,Packetbeat 用于分析网络流量,Filebeat 用于收集日志文件。

注意 − 有些用户直接使用 Logstash,完全跳过 Beats。同时,有些平台将 Beats 直接连接到 Elasticsearch。

ELK Stack 的功能

  • JSON 文档复制可搜索,分片存储。

  • NRT(近实时)搜索。

  • 全文搜索

  • 地理位置和多语言支持。

  • 具有带 JSON 输出的 REST API Web 界面

如何安装 ELK Stack?

您可以在 Docker、云以及 Chef、Puppet 和 Ansible 等配置管理系统上本地安装 ELK。您可以根据设备上使用的 Linux 发行版下载该工具。

安装 ELK Stack 的前提条件

我们以 Ubuntu 为例,演示如何安装 ELK Stack -

步骤 1:更新仓库

首先,请根据最新可用更新更新系统 -

sudo apt update

步骤 2:安装 Java(Elasticsearch 和 Logstash 必需)

安装 Logstash 需要系统中已安装 Java 8 或 Java 11。因此,请先通过以下命令安装 -

sudo apt install default-jre

步骤 3:安装 Nginx

Kibana 必须可公开访问,并且 nginx 已配置为反向代理。因此,请运行以下命令安装 nginx -

sudo apt install nginx -y

要检查 nginx 是否已安装,请在浏览器中输入您的本地服务器 IP 地址。如果 nginx 安装成功,您将看到与下图相同的输出。

完成后,就可以使用 apt 安装所有组件了。此外,您也可以直接从官方网站下载这些组件。这里我们将介绍如何在 Ubuntu 22.04 中分别安装 ELK 堆栈的所有组件。

如何安装 Elasticsearch

步骤 1:添加 Elasticsearch 密钥

要安装 Elasticsearch,首先,使用以下命令添加 Elasticsearch 的签名密钥 -

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

注意 − 如果您已经安装了上述软件包,则可以跳过上述步骤。

现在通过以下命令安装 transport-https 软件包 −

sudo apt-get update && sudo apt-get install apt-transport-https

接下来,在终端中运行以下命令,将存储库定义添加到您的系统中 −

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

使用以下命令安装具有 Apache 2.0 许可功能的 Elasticsearch 版本 -

echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

步骤 2:安装 Elasticsearch

现在,更新系统的仓库,然后安装 Elasticsearch -

sudo apt-get update && sudo apt-get install elasticsearch

步骤 3:配置 Elasticsearch

安装 Elasticsearch 后,现在来配置系统。它的配置文件允许您配置网络设置,例如端口和主机,其中包含日志文件和内存等详细信息。使用以下命令添加您的私有 IP 地址,以打开 Elasticsearch 配置文件 -

sudo nano /etc/elasticsearch/elasticsearch.yml

注意 - 您可以选择任何编辑器打开上述配置文件。

取消配置文件中上述两行的注释,并在 192.168.0.1 添加您的本地主机。

network host: <local host name>

由于您在此处配置的是单节点集群,请前往"发现"部分并添加以下行。

discovery .type: single-node

JVM 堆大小默认设置为 1GB。您不应将堆大小设置为超过总内存的一半。打开以下文件,使用以下命令设置堆大小 -

sudo nano /etc/elasticsearch/jvm.options

因此,请找到以 -Xms(最小值)和 -Xmx(最大值)开头的行,并将其大小设置为 512MB。

-xms512m
-xms512m

步骤 4:运行 Elasticsearch

完成 Elasticsearch 配置文件中的所有配置后,使用以下 systemctl 命令启动并启用 Elasticsearch 服务 -

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

之后,检查 Elasticsearch 的状态 -

sudo systemctl status elasticsearch

步骤 5:验证已安装的 Elasticsearch

如果您想验证 Elasticsearch,请运行以下命令 -

http://localhost:9200

此外,您还可以在终端中使用以下 curl 命令进行确认。

Curl -X GET "localhost:9200"

如果您的输出与上图相同,则表明 Elasticsearch 工作正常。

如何安装 Kibana?

步骤 1:安装 Kibana

您也可以通过以下命令通过存储库安装 Kibana -

sudo apt install kibana

步骤 2:配置 Kibana

运行以下命令打开 Kibana 的配置文件。

sudo nano /etc/kibana/kibana.yml

删除下面标记的"#"符号取消注释以下行 -

server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"] 

Nginx 中的服务器块会将所有流量路由到本地主机。为此,您必须在以下目录中创建一个新站点。

sudo nano /etc/nginx/sites-available/file.com

例如,我们将文件命名为"file.com",并将以下几行复制到其中 -

server { 
listen 80; 
server_name file.com; 

auth_basic "Restricted Access"; 
auth_basic_user_file /etc/nginx/htpasswd.users; 
location / { 
   proxy_pass http://localhost:5601; 
   proxy_http_version 1.1; 
   proxy_set_header Upgrade $http_upgrade; 
   prxy_set_header Connection 'upgrade'; 
   proxy_set_header Host $host;  
   proxy_cache_bypass $http_upgrade; 
}

上述服务器会将所有传入流量重定向到 localhost:5601 的 80 端口,Kibana 正在监听该端口。此外,它还会对所有发送到 Nginx 用户列表的请求进行身份验证。

使用以下命令创建符号链接以启用新创建的站点。

sudo ln -s /etc/nginx/sites-available/file.com /etc/nginx/sites-enabled/file.com

接下来,使用以下命令验证配置文件中是否存在任何配置或语法 -

sudo nginx -t

默认站点位于 Nginx site-enabled 目录中,系统默认会加载该站点。进入 Nginx 配置目录,并添加新创建的文件"file.com"。

nano /etc/nginx/nginx.conf

最后,保存配置文件,重启 Nginx 服务。

步骤 3:启动并启用 Kibana

使用简单的 systemctl 命令启动并启用 Kibana。

sudo systemctl start kibana
sudo systemctl enable kibana

要检查 Kibana 是否正在运行,您可以使用以下命令检查其状态 -

sudo systemctl status kibana

现在,您可以在浏览器中使用 http://localhost:5601.

打开 Kibana

注意 − 如果启用了 UFW 防火墙,则必须允许端口 5601 上的流量才能访问 Kibana 仪表板。

sudo ufw allow 5601/tcp

安装 Logstash

步骤 1:安装 Logstash

它是 ELK 技术栈中高度可定制的组件。您可以使用以下命令直接从存储库安装 Logstash -

sudo apt install logstash

步骤 2:配置 Logstash

此组件的配置文件位于 /etc/logstash/conf.d/。您可以根据需要配置其输出、过滤器和输入管道。所有自定义 Logstash 配置文件都存储在 /etc/logstash/conf.d/ 中。

步骤 3:启动并启用 Logstash

要启动并启用 Logstash,请运行以下命令。

sudo systemctl start logstsash

您可以使用以下命令检查 Logstash 的状态(无论其是否处于活动状态)-

sudo systemctl status logstsash

安装 Beats

与大多数其他组件一样,Beat 的许多传输器都可以以类似的方式安装。那么,让我们来看看如何安装 Metricbeat。

Metricbeat 发送系统级指标,例如内存、CPU 使用率等。在这里,我们将数据直接发送到 Elasticsearch。

步骤 1:安装 Metricbeat

首先,我们将使用简单的 apt 命令在服务器上安装 Metricbeat -

sudo apt install metricbeat

步骤 2:配置 Metricbeat

使用任意编辑器打开 Metricbeat.yml 文件,搜索 Kibana。然后,删除"#"符号,取消注释 localhost。

sudo /etc/metricbeat/metricbeat.yml
host: "localhost:5601"

同样,取消注释 Elasticsearch,使其作为本地主机。此外,我们将保留其余默认设置进行配置。

host: ["localhost:9200"]

运行以下命令验证上述配置。

sudo metribeat test output

由于上述输出中没有错误,Kibana 和 Elasticsearch 已成功与 Metricbeat 通信。如果您的系统模块未启用,您可以使用以下命令启用它 -

sudo metricbeat modules enable <module_name>

要查看每个模块的配置文件,请转到 metricbeat 安装目录。所有配置文件都位于 modules.d 目录中。例如,要打开 system.yml 模块,请使用以下命令 -

sudo nano /etc/metricbeat/modules.d/system.yml

您可以在上述配置文件中进行更改,但我们将在此保留所有配置的默认设置。Kibana 使用多个仪表板来可视化数据。以下是每个仪表板的默认仪表板。使用以下命令设置默认 Metricbeat 仪表板:-

sudo metricbeat setup

步骤 3:启动并启用 Metricbeat

使用以下命令启动 Metricbeat:-

sudo systemctl start metricbeat

检查 Metricbeat 的当前状态。

sudo systemctl status metricbeat

现在,Metricbeat 开始监控服务器并创建 Elasticsearch 索引,您也可以在 Kibana 中定义该索引。

ELK Stack 的优缺点

Elastic Stack 有一些优点和缺点。

优点

缺点

免费上手

复杂的管理要求

多种编程语言的官方客户端

扩展挑战

实时数据分析与可视化

数据保留权衡

集中式日志记录功能

稳定性与正常运行时间问题

多种托管选项

高昂的拥有成本

ELK Stack 的用途

实时日志监控提供了来自各种资源的 Elastic Stack 的众多创新用例,如下所示 -

  • 新应用程序中的错误检测 - 在创建任何新应用程序时,ELK Stack 都会通知您其错误。借助此功能,您可以尽快修复错误和缺陷,并改进应用程序的设计。

  • 流量监控 - 它有助于监控网站流量数据,并提供有关服务器是否过载的信息。也就是说,ELK Stack 生成的数据可以帮助用户做出合理的业务决策并解决问题。

  • Web 数据抓取 − ELK Stack 可以从各种来源搜索、索引和收集非结构化数据,从而轻松地可视化和收集 Web 数据抓取的信息。

  • 电商解决方案 − 更快的响应速度、聚合、索引和全文搜索功能可提供更佳的用户体验。可视化地监控 Elasticsearch 的搜索行为和趋势有助于增强趋势分析。

  • 安全监控 − 服务器监控系统是 ELK Stack 重要的安全应用之一。它有助于通过实时预警系统检测服务器攻击,一旦发现异常请求,立即检查,并最大程度地减少其造成的损害。

总结

在这篇长文中,我们简要介绍了 ELK Stack。正如我们之前提到的,ELK Stack 是一款开源工具,这意味着您无需付费即可获得它。此外,我们还详细介绍了 ELK Stack 的设置方法,包括所有相关工具。


相关文章


有用资源