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,请运行以下命令 -

https://: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: ["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 的详细方法,包括所有相关工具。

更新于: 2023年5月18日

1K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.