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

2023-11-20

笔者精选互联网档案馆接受捐赠作为为捐款而写程序。

介绍

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

Elastic Stack 有四个主要组件:

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

在本教程中,您将安装弹性堆栈在 Ubuntu 18.04 服务器上。您将学习如何安装 Elastic Stack 的所有组件 — 包括Filebeat,一个用于转发和集中日志和文件的 Beat,并将它们配置为收集和可视化系统日志。此外,由于 Kibana 通常仅在localhost,我们将使用Nginx代理它,以便可以通过网络浏览器访问它。我们将在一台服务器上安装所有这些组件,我们将其称为我们的弹性堆栈服务器.

Note:安装 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 权限的非 root 用户和配置为ufw。 Elastic Stack 服务器所需的 CPU、RAM 和存储量取决于您打算收集的日志量。在本教程中,我们将为 Elastic Stack 服务器使用具有以下规格的 VPS:

    • 操作系统:Ubuntu 18.04
    • RAM: 4GB
    • CPU: 2
  • Java 8(Elasticsearch 和 Logstash 所需)安装在您的服务器上。请注意,不支持 Java 9。要安装它,请按照“安装Oracle JDK”我们指南中有关如何在 Ubuntu 18.04 上安装 Java 8 的部分。

  • Nginx 安装在您的服务器上,我们将在本指南后面将其配置为 Kibana 的反向代理。请遵循我们的指南如何在 Ubuntu 18.04 上安装 Nginx来设置这个。

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

但是,由于您最终将在本指南的过程中对 Nginx 服务器块进行更改,因此完成以下操作可能更有意义让我们在 Ubuntu 18.04 上加密本教程第二步末尾的指南。考虑到这一点,如果您计划在服务器上配置 Let’s Encrypt,则在此之前您需要做好以下准备:

  • A fully qualified domain name (FQDN). This tutorial will use example.com throughout. You can purchase a domain name on Namecheap, get one for free on Freenom, or use the domain registrar of your choice.

  • 为您的服务器设置以下两条 DNS 记录。您可以关注DigitalOcean DNS 简介有关如何添加它们的详细信息。

    • An A record with example.com pointing to your server’s public IP address.
    • An A record with www.example.com pointing to your server’s public IP address.

第 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| sudoapt-keyadd -

接下来,将 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.yml。在这里,我们将使用nano:

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

Note:Elasticsearch的配置文件是YAML格式,这意味着缩进非常重要!确保在编辑此文件时不添加任何额外的空格。

Elasticsearch 监听端口上各处的流量9200。您需要限制外部对 Elasticsearch 实例的访问,以防止外部人员通过 REST API 读取您的数据或关闭您的 Elasticsearch 集群。找到指定的行network.host,取消注释,并将其值替换为localhost所以它看起来像这样:

/etc/elasticsearch/elasticsearch.yml
. . .
network.host: localhost
. . .

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

  1. sudosystemctl启动elasticsearch

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

  1. sudo系统控制enable弹性搜索

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

  1. curl -X GET “本地主机: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 已启动并运行,让我们安装 Kibana,Elastic Stack 的下一个组件。

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

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

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

  1. sudo apt install kibana

然后启用并启动Kibana服务:

  1. sudo系统控制enable kibana
  2. sudosystemctl 启动 kibana

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

First, use the openssl command to create an administrative Kibana user which you’ll use to access the Kibana web interface. As an example we will name this account kibanaadmin, but to ensure greater security we recommend that you choose a non-standard name for your user that would be difficult to guess.

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

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

根据提示输入并确认密码。记住或记下此登录信息,因为您将需要它来访问 Kibana Web 界面。

Next, we will create an Nginx server block file. As an example, we will refer to this file as example.com, although you may find it helpful to give yours a more descriptive name. For instance, if you have a FQDN and DNS records set up for this server, you could name this file after your FQDN:

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

Add the following code block into the file, being sure to update example.com to match your server’s FQDN or public IP address. This code configures Nginx to direct your server’s HTTP traffic to the Kibana application, which is listening on localhost:5601. Additionally, it configures Nginx to read the htpasswd.users file and require basic authentication.

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

/etc/nginx/sites-available/example.com
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. sudosystemctl 重新启动 nginx

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

  1. sudoUFW 允许“Nginx 已满”

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

  1. sudoufw 删除允许'Nginx HTTP'

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

http://your_server_ip/status

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

|Kibana status page

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

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

第 3 步 — 安装和配置 Logstash

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

使用以下命令安装 Logstash:

  1. sudo apt install日志存储

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

Logstash pipeline

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

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

插入以下内容input配置。这指定了一个beats将侦听 TCP 端口的输入5044.

/etc/logstash/conf.d/02-beats-input.conf
input {
  beats {
    port => 5044
  }
}

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

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

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

/etc/logstash/conf.d/10-syslog-filter.conf
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 中,Elasticsearch 运行于localhost:9200,在以使用的节拍命名的索引中。本教程中使用的Beat是Filebeat:

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

保存并关闭文件。

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

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

  1. sudo -uLogstash /usr/share/logstash/bin/logstash--路径.设置/etc/logstash-t

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

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

  1. sudosystemctl 启动logstash
  2. sudo系统控制enable日志存储

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

第 4 步 — 安装和配置 Filebeat

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

  • Filebeat:收集并发送日志文件。
  • 度量节拍:从您的系统和服务收集指标。
  • 数据包节拍:收集和分析网络数据。
  • Winlogbeat:收集 Windows 事件日志。
  • 审核节奏:收集Linux审计框架数据并监控文件完整性。
  • 心跳:通过主动探测来监视服务的可用性。

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

使用以下命令安装 Filebeatapt:

  1. sudo apt install文件节拍

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

打开Filebeat配置文件:

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

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

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

/etc/filebeat/filebeat.yml
...
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]
...

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

/etc/filebeat/filebeat.yml
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

保存并关闭文件。

Filebeat 的功能可以通过以下方式扩展Filebeat 模块。在本教程中,我们将使用system模块,收集并解析常见Linux发行版的系统日志服务创建的日志。

让我们启用它:

  1. sudo文件节拍模块enable system

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

  1. sudofilebeat 模块列表

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

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 中。一个弹性搜索索引是具有相似特征的文档的集合。索引用一个名称来标识,该名称用于在索引中执行各种操作时引用该索引。创建新索引时将自动应用索引模板。

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

  1. sudo文件节拍设置- 模板 -E 输出.logstash.启用=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
Output
Loaded index template

Filebeat 附带示例 Kibana 仪表板,可让您在 Kibana 中可视化 Filebeat 数据。在使用仪表板之前,您需要创建索引模式并将仪表板加载到 Kibana 中。

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

  1. sudo文件节拍设置-e -E 输出.logstash.启用=false -E 输出.elasticsearch.hosts=['本地主机:9200'] -E setup.kibana.host=本地主机: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. sudosystemctl 启动 filebeat
  2. sudo系统控制enable文件节拍

如果您已正确设置 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 主页:

Kibana Homepage

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

Discover page

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

使用左侧面板导航至仪表板页面并搜索文件节拍系统仪表板。到达那里后,您可以搜索 Filebeat 附带的示例仪表板system module.

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

Syslog Dashboard

您还可以查看哪些用户使用过sudo命令和时间:

Sudo Dashboard

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

结论

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack) 的相关文章

随机推荐

  • 如何在Linux中删除组(groupdel命令)

    在 Linux 中 组用于组织和管理用户帐户 组的主要目的是定义一组权限 例如读 写或执行允许对于可以在组内的用户之间共享的给定资源 可以使用以下命令创建一个新组groupadd命令 如果不再需要某个组并且可以从系统中删除 本文介绍了如何在
  • Python 加入列表

    Python join list 的意思是将一串字符串与指定的分隔符连接起来形成一个字符串 有时 当您必须将列表转换为字符串时 它很有用 例如 将字母列表转换为逗号分隔的字符串以保存在文件中 Python 加入列表 我们可以用蟒蛇字符串jo
  • Java Hello World 程序

    每当我们开始学习一门编程语言时 第一个程序总是打印Hello World 在上一篇文章中 我们了解到如何在 Windows 10 上安装 Java 现在我们准备编写并运行我们的第一个 Hello World Java 程序 Java Hel
  • 从 Python 调用 C 函数

    我们可以使用 Python 程序调用 C 函数ctypes module 从 Python 调用 C 函数 它涉及以下步骤 创建具有所需函数的 C 文件 c 扩展名 使用 C 编译器创建共享库文件 so 扩展名 在 Python 程序中 从
  • Java中的迭代器设计模式

    迭代器设计模式中的行为模式之一 迭代器模式用于提供遍历一组对象的标准方法 迭代器模式广泛应用于Java集合框架 Iterator 接口提供了遍历集合的方法 迭代器设计模式 According to GoF iterator design p
  • 如何使用 HAProxy 在 Ubuntu VPS 上设置 HTTP 负载平衡

    关于HAProxy HAProxy 高可用性代理 是一个开源负载均衡器 可以对任何 TCP 服务进行负载均衡 它特别适合 HTTP 负载平衡 因为它支持会话持久性和第 7 层处理 与数字海洋专用网络 HAProxy 可以配置为前端 通过专用
  • SSH 要点:使用 SSH 服务器、客户端和密钥

    介绍 SSH 是一种安全协议 用作远程连接 Linux 服务器的主要方式 它通过生成远程 shell 来提供基于文本的界面 连接后 您在本地终端中输入的所有命令都会发送到远程服务器并在那里执行 在这份备忘单式的指南中 我们将介绍一些使用 S
  • 安卓谷歌智能锁

    在本教程中 我们将讨论智能锁功能并在 Android 应用程序中实现它 谷歌智能锁 Smart Lock 用于通过一劳永逸地保存凭据来自动登录您的应用程序 这意味着 如果您在一段时间后重新安装应用程序 您可以使用之前保存的凭据自动登录 前提
  • Android 运行时权限示例

    欢迎来到 Android 运行时权限示例 随着介绍安卓6 0棉花糖 Google 改变了应用程序处理权限的方式 在本教程中 我们将研究引入的新 Android 运行时权限以及如何处理它们 如果处理不当 可能会导致应用程序崩溃 什么是 And
  • 如何创建 Django 模型

    介绍 在之前的教程中 如何创建 Django 应用程序并将其连接到数据库 我们介绍了如何创建 MySQL 数据库 如何创建和启动 Django 应用程序以及如何将其连接到 MySQL 数据库 在本教程中 我们将创建 Djangomodels
  • 如何在 JavaScript 中修改 CSS 类

    介绍 在本教程中 您将学习如何使用 JavaScript 修改 CSS 类classListDOM 操作项目的对象 这classListobject 允许您调整分配给 HTML 元素的 CSS 类 先决条件 JavaScript 的一般知识
  • 如何在 Python 中将 NumPy 数组转换为列表

    介绍 With NumPy np array对象可以转换为列表tolist 功能 这tolist 函数不接受任何参数 如果数组是一维的 则返回包含数组元素的列表 对于多维数组 返回嵌套列表 先决条件 为了完成本教程 您将需要 熟悉 Pyth
  • 如何访问 DOM 中的元素

    介绍 In 了解 DOM 树和节点中 我们回顾了 DOM 如何构建为称为节点的对象树 这些节点可以是文本 注释或元素 通常当我们访问 DOM 中的内容时 会通过 HTML 元素节点 为了能够自信地访问 DOM 中的元素 最好具备 CSS 选
  • MongoDB findOne 示例

    MongoDB findOne 方法仅返回一个满足以下条件的文档criteria进入 如果输入的条件与多个文档匹配 则该方法根据自然排序仅返回一个文档 这反映了文档在数据库中存储的顺序 MongoDB findOne MongoDB fin
  • 如何在 Java 中打开文件

    有时我们需要在java程序中打开一个文件 java awt Desktop可以用java来打开文件 桌面实现与平台相关 因此首先我们应该检查操作系统是否支持桌面 此类查找注册到当前平台的关联应用程序以打开文件 Java 打开文件 Let s
  • Kotlin 类 - Kotlin 构造函数

    在本教程中 我们将讨论面向对象编程Kotlin 的概念 我们将详细讨论 Kotlin 类 我们还将了解 kotlin 构造函数 访问修饰符和抽象类 Kotlin 类 A class is a blue print defined which
  • 如何在 MySQL 中创建新用户并授予权限

    介绍 MySQL是一个开源的关系数据库管理系统 它通常部署为灯堆栈 这代表Linux Apache MySQL 和PHP 并且 截至撰写本文时 是最流行的开源数据库在世界上 本指南概述了如何创建新的 MySQL 用户并授予他们执行各种操作所
  • 如何在 Rocky Linux 9 上安装和使用 PostgreSQL

    介绍 关系数据库管理系统是许多网站和应用程序的关键组件 它们提供了一种结构化的方式来存储 组织和访问信息 PostgreSQL也称为 Postgres 是一个关系数据库管理系统 它提供结构化查询语言 更广为人知的名称为 SQL 的实现 许多
  • Linux 导航和文件管理

    介绍 导航和操作文件系统中的文件和文件夹是使用大多数计算机的关键部分 云服务器大多使用相同的常见 Linux shell 和常见 Linux 命令来处理文件和文件夹 本终端将介绍使用这些命令的一些基本技能 先决条件和目标 为了遵循本指南 您
  • 如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)

    笔者精选互联网档案馆接受捐赠作为为捐款而写程序 介绍 Elastic Stack 以前称为ELK堆栈 是由以下公司制作的开源软件集合Elastic它允许您搜索 分析和可视化从任何来源以任何格式生成的日志 这种做法称为集中记录 当尝试识别服务