ELK Stack 教程:Elasticsearch、Logstash、Kibana 和 Beats 入门
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,请运行以下命令 -

此外,您还可以在终端中使用以下 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 的设置方法,包括所有相关工具。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

