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 中的数据。
它是一个可视化工具,提供用户友好的 UI 来查看用户数据。此功能使用户可以轻松地浏览和可视化数据。
Beta - 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 Stack 的所有组件。
如何安装 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 部分”并添加以下行。
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: ["https://:9200"]
Nginx 中的服务器块将路由 localhost 上的所有流量。为此,您必须在以下目录中创建一个新站点。
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 https://: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;
}
上述服务器将仅在端口 80 上将所有传入流量重定向到 localhost:5601,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
现在,您可以在浏览器中使用 https://:5601. 打开 Kibana。
注意 - 如果启用了 UFW 防火墙,则必须允许端口 5601 上的流量才能访问 Kibana 仪表板。
sudo ufw allow 5601/tcp
安装 Logstash
步骤 1:安装 Logstash
它是 ELK Stack 中高度可定制的组件。您可以使用以下命令直接从存储库安装 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 生成数据,用户可以借助这些数据做出合理的业务决策并解决问题。
网络抓取 - ELK Stack 可以搜索、索引和收集来自各种来源的非结构化数据,从而简化可视化和收集网络抓取信息的过程。
电子商务解决方案 - 更快的响应、聚合、索引和全文搜索提供了更好的用户体验。可视化监控 Elasticsearch 的搜索行为和趋势有助于增强趋势分析。
安全监控 - 服务器监控系统是 ELK Stack 的重要安全应用程序之一。它有助于使用实时预警系统检测服务器攻击,在注意到异常请求时立即检查并最大程度地减少其造成的损害。
总结
在本篇博文中,我们解释了有关 ELK Stack 的简要详细信息。正如我们之前提到的,ELK Stack 是一种开源工具,这意味着您可以免费获得它。此外,我们描述了设置 ELK Stack 的详细方法,包括所有相关工具。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP