如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)

作者选择了 Write for DOnations 计划。

介绍

Elastic Stack — 以前称为 ELK Stack — 是 Elastic 生产的开源软件的集合,允许您搜索、分析和可视化从任何来源以任何格式生成的日志,这是一种实践称为集中式日志记录。集中式日志记录在尝试识别服务器或应用程序问题时非常有用,因为它允许您在一个地方搜索所有日志。它也很有用,因为它允许您通过在特定时间范围内关联日志来识别跨越多个服务器的问题。

Elastic Stack 有四个主要组件:

  • RESTful 搜索引擎,存储所有收集的数据。
  • Logstash:Elastic Stack 的数据处理组件,用于将传入数据发送到 Elasticsearch。
  • Kibana:用于搜索和可视化日志的网络界面。
  • Beats:轻型、单一用途的数据传送器,可以将数据从成百上千台机器发送到 Logstash 或 Elasticsearch。

在本教程中,您将安装 Nginx 来代理它,以便可以通过 Web 浏览器访问它。我们会将所有这些组件安装在一个服务器上,我们将其称为我们的 Elastic Stack 服务器。

注意:安装 Elastic Stack 时,您必须在整个堆栈中使用相同的版本。在本教程中,我们将安装整个堆栈的最新版本,在撰写本文时为 Elasticsearch 7.6.1、Kibana 7.6.1、Logstash 7.6.1 和 Filebeat 7.6.1。

先决条件

要完成本教程,您需要具备以下条件:

    <李> 按照我们的 Ubuntu 18.04 初始服务器设置指南设置的 Ubuntu 18.04 服务器,包括具有 sudo 权限的非根用户和配置了 ufw 的防火墙。您的 Elastic Stack 服务器需要的 CPU、RAM 和存储量取决于您打算收集的日志量。对于本教程,我们将为 Elastic Stack 服务器使用具有以下规格的 VPS:
    • 操作系统:Ubuntu 18.04
    • 内存:4GB
    • 中央处理器:2

    Java 8——Elasticsearch 和 Logstash 需要——安装在你的服务器上。请注意,不支持 Java 9。要安装它,请按照我们关于如何在 Ubuntu 18.04 上安装 Java 8 的指南的“安装 Oracle JDK”部分进行操作。

    Nginx 安装在您的服务器上,我们将在本指南后面将其配置为 Kibana 的反向代理。按照我们关于如何在 Ubuntu 18.04 上安装 Nginx 的指南进行设置。

    此外,由于 Elastic Stack 用于访问您不希望未经授权的用户访问的有关您服务器的重要信息,因此通过安装 TLS/SSL 证书确保您的服务器安全非常重要。这是可选的,但强烈建议这样做。

    但是,由于您最终将在本指南的过程中对 Nginx 服务器块进行更改,因此在本教程的第二步结束时完成 Let's Encrypt on Ubuntu 18.04 指南可能更有意义。考虑到这一点,如果您计划在您的服务器上配置 Let's Encrypt,那么在执行此操作之前,您需要准备好以下内容:

      <李> 完全限定的域名 (FQDN)。本教程将始终使用 example.com。您可以在 Freenom 上购买域名,或使用您选择的域名注册商。 <李> 为您的服务器设置了以下两个 DNS 记录。您可以按照 DigitalOcean DNS 的介绍了解如何添加它们的详细信息。
      • 带有 example.com 的 A 记录指向您服务器的公共 IP 地址。
      • 带有 www.example.com 的 A 记录指向您服务器的公共 IP 地址。

      第 1 步 — 安装和配置 Elasticsearch

      Elastic Stack 组件在 Ubuntu 的默认包存储库中不可用。但是,它们可以在添加 Elastic 的包源列表后使用 APT 安装。

      Elastic Stack 的所有包都使用 Elasticsearch 签名密钥进行签名,以保护您的系统免受包欺骗。使用密钥验证的包将被您的包管理器视为信任。在此步骤中,您将导入 Elasticsearch 公共 GPG 密钥并添加 Elastic 包源列表以安装 Elasticsearch。

      首先,运行以下命令将 Elasticsearch 公共 GPG 密钥导入 APT:

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

      接下来,将 Elastic 源列表添加到 sources.list.d 目录,APT 将在其中寻找新的源:

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

      接下来,更新您的包列表,以便 APT 读取新的 Elastic 源:

      1. sudo apt update

      然后使用此命令安装 Elasticsearch:

      1. sudo apt install elasticsearch

      Elasticsearch 安装完成后,使用您喜欢的文本编辑器编辑 Elasticsearch 的主配置文件 elasticsearch.yml。在这里,我们将使用 nano:

      1. sudo nano /etc/elasticsearch/elasticsearch.yml

      注意:Elasticsearch的配置文件是YAML格式,也就是说缩进很重要!确保在编辑此文件时没有添加任何额外的空格。

      Elasticsearch 在端口 9200 上监听来自任何地方的流量。您将希望限制外部人员对您的 Elasticsearch 实例的访问,以防止外部人员通过 REST API 读取您的数据或关闭您的 Elasticsearch 集群。找到指定 network.host 的行,取消注释,并将其值替换为 localhost,如下所示:

      . . .
      network.host: localhost
      . . .
      

      按 CTRL+X 保存并关闭 elasticsearch.yml ,然后按 Y ,然后按 ENTER 如果你是使用 nano。然后,使用 systemctl 启动 Elasticsearch 服务:

      1. sudo systemctl start elasticsearch

      接下来,运行以下命令使 Elasticsearch 能够在您的服务器每次启动时启动:

      1. sudo systemctl enable elasticsearch

      您可以通过发送 HTTP 请求来测试您的 Elasticsearch 服务是否正在运行:

      1. curl -X GET "localhost:9200"

      您将看到一个响应,显示有关您的本地节点的一些基本信息,类似于:

      Output
      { "name" : "ElasticSearch", "cluster_name" : "elasticsearch", "cluster_uuid" : "SMYhVWRiTwS1dF0pQ-h7SQ", "version" : { "number" : "7.6.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b", "build_date" : "2020-02-29T00:15:25.529771Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      现在 Elasticsearch 已启动并运行,让我们安装 Elastic Stack 的下一个组件 Kibana。

      第 2 步 — 安装和配置 Kibana 仪表板

      根据官方文档,您应该在安装 Elasticsearch 之后再安装 Kibana。按此顺序安装可确保每个产品所依赖的组件正确就位。

      因为您已经在上一步中添加了 Elastic 包源,所以您可以使用 apt 安装 Elastic Stack 的其余组件:

      1. sudo apt install kibana

      然后启用并启动 Kibana 服务:

      1. sudo systemctl enable kibana
      2. sudo systemctl start kibana

      因为 Kibana 配置为只监听 localhost,所以我们必须设置一个反向代理以允许外部访问它。为此,我们将使用 Nginx,它应该已经安装在您的服务器上。

      首先,使用 openssl 命令创建一个管理 Kibana 用户,您将使用该用户访问 Kibana Web 界面。例如,我们将此帐户命名为 kibanaadmin,但为了确保更高的安全性,我们建议您为您的用户选择一个难以猜到的非标准名称。

      以下命令将创建管理 Kibana 用户和密码,并将它们存储在 htpasswd.users 文件中。您将配置 Nginx 以要求使用此用户名和密码并立即读取此文件:

      1. echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

      在出现提示时输入并确认密码。请记住或记下此登录名,因为您将需要它来访问 Kibana Web 界面。

      接下来,我们将创建一个 Nginx 服务器块文件。例如,我们将此文件称为 example.com,但您可能会发现为您的文件起一个更具描述性的名称会有所帮助。例如,如果您为此服务器设置了 FQDN 和 DNS 记录,则可以在您的 FQDN 之后命名此文件:

      1. sudo nano /etc/nginx/sites-available/example.com

      将以下代码块添加到文件中,确保更新 example.com 以匹配您服务器的 FQDN 或公共 IP 地址。此代码将 Nginx 配置为将服务器的 HTTP 流量定向到正在侦听 localhost:5601 的 Kibana 应用程序。此外,它将 Nginx 配置为读取 htpasswd.users 文件并需要基本身份验证。

      请注意,如果您按照先决条件 Nginx 教程进行到最后,您可能已经创建了此文件并在其中填充了一些内容。在这种情况下,请在添加以下内容之前删除文件中的所有现有内容:

      server {
          listen 80;
      
          server_name example.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;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }
      

      完成后,保存并关闭文件。

      接下来,通过创建指向 sites-enabled 目录的符号链接来启用新配置。如果您已经在 Nginx 先决条件中创建了同名的服务器块文件,则无需运行此命令:

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

      然后检查配置是否有语法错误:

      1. sudo nginx -t

      如果输出中报告了任何错误,请返回并仔细检查您放置在配置文件中的内容是否已正确添加。在输出中看到 syntax is ok 后,继续并重新启动 Nginx 服务:

      1. sudo systemctl restart nginx

      如果您遵循初始服务器设置指南,则应该启用 UFW 防火墙。要允许连接到 Nginx,我们可以通过键入以下内容来调整规则:

      1. sudo ufw allow 'Nginx Full'

      注意:如果您遵循了先决条件 Nginx 教程,您可能已经创建了一个允许 Nginx HTTP 配置文件通过防火墙的 UFW 规则。因为 Nginx Full 配置文件允许 HTTP 和 HTTPS 流量通过防火墙,所以您可以安全地删除您在先决条件教程中创建的规则。使用以下命令执行此操作:

      1. sudo ufw delete allow 'Nginx HTTP'

      现在可以通过您的 FQDN 或 Elastic Stack 服务器的公共 IP 地址访问 Kibana。您可以通过导航到以下地址并在出现提示时输入您的登录凭据来检查 Kibana 服务器的状态页面:

      http://your_server_ip/status
      

      此状态页面显示有关服务器资源使用情况的信息并列出已安装的插件。

      注意:如先决条件部分所述,建议您在服务器上启用 SSL/TLS。您现在可以按照本教程为 Ubuntu 18.04 上的 Nginx 获取免费的 SSL 证书。获得 SSL/TLS 证书后,您可以返回并完成本教程。

      现在 Kibana 仪表板已配置,让我们安装下一个组件:Logstash。

      第 3 步 — 安装和配置 Logstash

      虽然 Beats 可以直接将数据发送到 Elasticsearch 数据库,但我们建议使用 Logstash 来处理数据。这将允许您从不同来源收集数据,将其转换为通用格式,并将其导出到另一个数据库。

      使用此命令安装 Logstash:

      1. sudo apt install logstash

      安装 Logstash 后,您可以继续配置它。 Logstash 的配置文件以 JSON 格式编写,位于 /etc/logstash/conf.d 目录中。在配置它时,将 Logstash 视为一个管道,它在一端接收数据,以一种或另一种方式处理数据,然后将其发送到目的地(在本例中,目的地是 Elasticsearch)。 Logstash 管道有两个必需元素,input 和 output,以及一个可选元素,filter。输入插件使用来自源的数据,过滤器插件处理数据,输出插件将数据写入目标。

      创建一个名为 02-beats-input.conf 的配置文件,您将在其中设置 Filebeat 输入:

      1. sudo nano /etc/logstash/conf.d/02-beats-input.conf

      插入以下 input 配置。这指定了将在 TCP 端口 5044 上侦听的 beats 输入。

      input {
        beats {
          port => 5044
        }
      }
      

      保存并关闭文件。接下来,创建一个名为 10-syslog-filter.conf 的配置文件,我们将在其中添加系统日志过滤器,也称为 syslogs:

      1. sudo nano /etc/logstash/conf.d/10-syslog-filter.conf

      插入以下系统日志过滤器配置。此示例系统日志配置取自 Elastic 官方文档。此过滤器用于解析传入的系统日志,使它们结构化并可供预定义的 Kibana 仪表板使用:

      filter {
        if [fileset][module] == "system" {
          if [fileset][name] == "auth" {
            grok {
              match => { "message" => ["%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:\[%{POSINT:[system][auth][pid]}\])?: \s*%{DATA:[system][auth][user]} :( %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:\[%{POSINT:[system][auth][pid]}\])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:\[%{POSINT:[system][auth][pid]}\])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:\[%{POSINT:[system][auth][pid]}\])?: %{GREEDYMULTILINE:[system][auth][message]}"] }
              pattern_definitions => {
                "GREEDYMULTILINE"=> "(.|\n)*"
              }
              remove_field => "message"
            }
            date {
              match => [ "[system][auth][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
            }
            geoip {
              source => "[system][auth][ssh][ip]"
              target => "[system][auth][ssh][geoip]"
            }
          }
          else if [fileset][name] == "syslog" {
            grok {
              match => { "message" => ["%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:\[%{POSINT:[system][syslog][pid]}\])?: %{GREEDYMULTILINE:[system][syslog][message]}"] }
              pattern_definitions => { "GREEDYMULTILINE" => "(.|\n)*" }
              remove_field => "message"
            }
            date {
              match => [ "[system][syslog][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
            }
          }
        }
      }
      

      完成后保存并关闭文件。

      最后,创建一个名为 30-elasticsearch-output.conf 的配置文件:

      1. sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

      插入以下 output 配置。本质上,此输出将 Logstash 配置为将 Beats 数据存储在 Elasticsearch 中,该数据在 localhost:9200 上运行,位于以所用 Beat 命名的索引中。本教程中使用的 Beat 是 Filebeat:

      output {
        elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
        }
      }
      

      保存并关闭文件。

      如果您想为使用 Filebeat 输入的其他应用程序添加过滤器,请确保为文件命名,以便它们在输入和输出配置之间排序,这意味着文件名应以 02 和 30。

      使用此命令测试您的 Logstash 配置:

      1. sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

      如果没有语法错误,您的输出将在几秒钟后显示 Configuration OK。如果您没有在输出中看到这一点,请检查输出中出现的任何错误并更新您的配置以更正它们。

      如果您的配置测试成功,请启动并启用 Logstash 以使配置更改生效:

      1. sudo systemctl start logstash
      2. sudo systemctl enable logstash

      现在 Logstash 已正确运行并已完全配置,让我们安装 Filebeat。

      第 4 步 — 安装和配置 Filebeat

      Elastic Stack 使用多个称为 Beats 的轻量级数据传送器从各种来源收集数据并将它们传输到 Logstash 或 Elasticsearch。以下是 Elastic 目前提供的 Beats:

      • Filebeat:收集和发送日志文件。
      • Metricbeat:从您的系统和服务中收集指标。
      • Packetbeat:收集和分析网络数据。
      • Winlogbeat:收集 Windows 事件日志。
      • Auditbeat:收集 Linux 审计框架数据并监控文件完整性。
      • Heartbeat:通过主动探测监控服务的可用性。

      在本教程中,我们将使用 Filebeat 将本地日志转发到我们的 Elastic Stack。

      使用 apt 安装 Filebeat:

      1. sudo apt install filebeat

      接下来,配置 Filebeat 以连接到 Logstash。这里,我们将修改Filebeat自带的示例配置文件。

      打开 Filebeat 配置文件:

      1. sudo nano /etc/filebeat/filebeat.yml

      注意:与 Elasticsearch 一样,Filebeat 的配置文件是 YAML 格式。这意味着正确的缩进至关重要,因此请务必使用与这些说明中指示的相同数量的空格。

      Filebeat 支持多种输出,但您通常只会将事件直接发送到 Elasticsearch 或 Logstash 以进行额外处理。在本教程中,我们将使用 Logstash 对 Filebeat 收集的数据执行额外的处理。 Filebeat 不需要将任何数据直接发送到 Elasticsearch,所以让我们禁用该输出。为此,找到 output.elasticsearch 部分并通过在它们前面添加 # 来注释掉以下行:

      ...
      #output.elasticsearch:
        # Array of hosts to connect to.
        #hosts: ["localhost:9200"]
      ...
      

      然后,配置 output.logstash 部分。通过删除 # 取消对行 output.logstash: 和 hosts: [localhost:5044] 的注释。这会将 Filebeat 配置为通过端口 5044 连接到 Elastic Stack 服务器上的 Logstash,我们之前为该端口指定了 Logstash 输入:

      output.logstash:
        # The Logstash hosts
        hosts: ["localhost:5044"]
      

      保存并关闭文件。

      Filebeat 的功能可以通过系统模块进行扩展,该模块收集和解析由常见 Linux 发行版的系统日志服务创建的日志。

      让我们启用它:

      1. sudo filebeat modules enable system

      您可以通过运行以下命令查看已启用和已禁用模块的列表:

      1. sudo filebeat modules list

      您将看到类似于以下内容的列表:

      Output
      Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik

      默认情况下,Filebeat 配置为使用系统日志和授权日志的默认路径。对于本教程,您不需要更改配置中的任何内容。在/etc/filebeat/modules.d/system.yml配置文件中可以看到模块的参数。

      接下来,将索引模板加载到 Elasticsearch 中。 Elasticsearch 索引 是具有相似特征的文档集合。索引用一个名称标识,该名称用于在其中执行各种操作时引用索引。创建新索引时将自动应用索引模板。

      要加载模板,请使用以下命令:

      1. sudo filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
      Output
      Loaded index template

      Filebeat 与示例 Kibana 仪表板打包在一起,允许您在 Kibana 中可视化 Filebeat 数据。在使用仪表板之前,您需要创建索引模式并将仪表板加载到 Kibana 中。

      当仪表板加载时,Filebeat 连接到 Elasticsearch 以检查版本信息。要在启用 Logstash 时加载仪表板,您需要禁用 Logstash 输出并启用 Elasticsearch 输出:

      1. sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

      您将看到如下所示的输出:

      Output
      2018-09-10T08:39:15.844Z INFO instance/beat.go:273 Setup Beat: filebeat; Version: 7.6.1 2018-09-10T08:39:15.845Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.845Z INFO pipeline/module.go:98 Beat name: elk 2018-09-10T08:39:15.845Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.849Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 7.6.1 2018-09-10T08:39:15.856Z INFO template/load.go:129 Template already exists and will not be overwritten. Loaded index template Loading dashboards (Kibana must be running and reachable) 2018-09-10T08:39:15.857Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.865Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 7.6.1 2018-09-10T08:39:15.865Z INFO kibana/client.go:113 Kibana url: http://localhost:5601 2018-09-10T08:39:45.357Z INFO instance/beat.go:659 Kibana dashboards successfully loaded. Loaded dashboards 2018-09-10T08:39:45.358Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:45.361Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 7.6.1 2018-09-10T08:39:45.361Z INFO kibana/client.go:113 Kibana url: http://localhost:5601 2018-09-10T08:39:45.455Z WARN fileset/modules.go:388 X-Pack Machine Learning is not enabled Loaded machine learning job configurations

      现在您可以启动并启用 Filebeat:

      1. sudo systemctl start filebeat
      2. sudo systemctl enable filebeat

      如果您已正确设置 Elastic Stack,Filebeat 将开始将您的系统日志和授权日志发送到 Logstash,然后 Logstash 会将这些数据加载到 Elasticsearch。

      要验证 Elasticsearch 确实接收到此数据,请使用以下命令查询 Filebeat 索引:

      1. curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      您将看到类似于此的输出:

      Output
      ... { "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-7.6.1-2020.03.22-000001", "_type" : "_doc", "_id" : "_vafAnEB9n8Ibpfym4VS", "_score" : 1.0, "_source" : { "agent" : { "hostname" : "ElasticSearch", "id" : "ee9d1a5d-75a7-4283-a126-ee90c1455173", "type" : "filebeat", "ephemeral_id" : "b927d9fb-500a-43ab-a20c-598d55c080ac", "version" : "7.6.1" }, "process" : { "name" : "kernel" }, "log" : { "file" : { "path" : "/var/log/syslog" }, "offset" : 97048 }, "fileset" : { "name" : "syslog" }, ...

      如果您的输出显示总命中数为 0,则 Elasticsearch 不会在您搜索的索引下加载任何日志,您将需要检查您的设置是否有错误。如果您收到预期的输出,请继续下一步,我们将在该步骤中了解如何浏览 Kibana 的一些仪表板。

      第 5 步 — 探索 Kibana 仪表板

      让我们看看 Kibana,这是我们之前安装的 Web 界面。

      在 Web 浏览器中,转到 Elastic Stack 服务器的 FQDN 或公共 IP 地址。输入您在第 2 步中定义的登录凭据后,您将看到 Kibana 主页:

      单击左侧导航栏中的发现链接。在 Discover 页面上,选择预定义的 filebeat-* 索引模式以查看 Filebeat 数据。默认情况下,这将显示过去 15 分钟内的所有日志数据。您将看到带有日志事件的直方图,以及下面的一些日志消息:

      在这里,您可以搜索和浏览您的日志,还可以自定义您的仪表板。不过此时,不会有太多内容,因为您只是从 Elastic Stack 服务器收集系统日志。

      使用左侧面板导航到仪表板页面并搜索 Filebeat 系统仪表板。在那里,您可以搜索 Filebeat 的 system 模块附带的示例仪表板。

      例如,您可以根据系统日志消息查看详细统计信息:

      您还可以查看哪些用户使用了 sudo 命令以及何时:

      Kibana 还有许多其他功能,例如绘图和过滤,请随意探索。

      结论

      在本教程中,您学习了如何安装和配置 Elastic Stack 以收集和分析系统日志。请记住,您可以使用 Beats 将几乎任何类型的日志或索引数据发送到 Logstash,但如果使用 Logstash 过滤器对数据进行解析和结构化,数据将变得更加有用,因为这会将数据转换为可以读取的一致格式通过 Elasticsearch 轻松实现。

©2015-2025 艾丽卡 support@alaica.com