如何在CentOS7上安装Elasticsearch、Logstash和Kibana(ELK堆栈)

来自菜鸟教程
跳转至:导航、​搜索

介绍

在本教程中,我们将介绍 Elasticsearch ELK Stack 在 CentOS 7 上的安装,即 Elasticsearch 2.2.x、Logstash 2.2.x 和 Kibana 4.4.x。 我们还将向您展示如何使用 Filebeat 1.1.x 对其进行配置,以在集中位置收集和可视化系统的 syslog。 Logstash 是一个开源工具,用于收集、解析和存储日志以供将来使用。 Kibana 是一个 Web 界面,可用于搜索和查看 Logstash 已编入索引的日志。 这两个工具都基于用于存储日志的 Elasticsearch。

在尝试识别服务器或应用程序的问题时,集中式日志记录非常有用,因为它允许您在一个地方搜索所有日志。 它也很有用,因为它允许您通过在特定时间范围内关联它们的日志来识别跨多个服务器的问题。

可以使用 Logstash 收集所有类型的日志,但我们会将本教程的范围限制为 syslog 收集。

我们的目标

本教程的目标是设置 Logstash 以收集多个服务器的 syslog,并设置 Kibana 以可视化收集的日志。

我们的 ELK 堆栈设置有四个主要组件:

  • Logstash:Logstash 处理传入日志的服务器组件
  • Elasticsearch:存储所有日志
  • Kibana:用于搜索和可视化日志的Web界面,将通过Nginx代理
  • Filebeat:安装在将日志发送到 Logstash 的客户端服务器上,Filebeat 作为日志传送代理,利用 lumberjack 网络协议与 Logstash 通信

我们将在单个服务器上安装前三个组件,我们将其称为 ELK 服务器。 Filebeat 将安装在我们要为其收集日志的所有客户端服务器上,我们将它们统称为 客户端服务器

先决条件

要完成本教程,您将需要 CentOS 7 VPS 的 root 访问权限。 可以在此处找到设置说明(步骤 3 和 4): 使用 CentOS 7 进行初始服务器设置。

如果您更喜欢使用 Ubuntu,请查看本教程:如何在 Ubuntu 14.04 上安装 ELK。

ELK 服务器所需的 CPU、RAM 和存储量取决于您打算收集的日志量。 在本教程中,我们将为我们的 ELK 服务器使用具有以下规格的 VPS:

  • 操作系统:CentOS 7
  • 内存:4GB
  • 中央处理器:2

除了您的 ELK 服务器之外,您还需要一些其他服务器来收集日志。

让我们开始设置我们的 ELK 服务器吧!

安装 Java 8

Elasticsearch 和 Logstash 需要 Java,所以我们现在就安装它。 我们将安装最新版本的 Oracle Java 8,因为这是 Elasticsearch 推荐的。 但是,如果您决定走那条路,它应该可以与 OpenJDK 一起正常工作。 遵循本节中的步骤意味着您接受 Java SE 的 Oracle 二进制许可协议。

切换到您的主目录并使用以下命令下载 Oracle Java 8(更新 73,撰写本文时的最新版本)JDK RPM:

cd ~
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"

然后使用 yum 命令安装 RPM(如果您下载了不同的版本,请在此处替换文件名):

sudo yum -y localinstall jdk-8u73-linux-x64.rpm

现在 Java 应该安装在 /usr/java/jdk1.8.0_73/jre/bin/java,并从 /usr/bin/java 链接。

您可以删除之前下载的存档文件:

rm ~/jdk-8u*-linux-x64.rpm

现在已经安装了 Java 8,让我们安装 ElasticSearch。

安装 Elasticsearch

通过添加 Elastic 的包存储库,可以使用包管理器安装 Elasticsearch。

运行以下命令将 Elasticsearch 公共 GPG 密钥导入 rpm:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

为 Elasticsearch 创建一个新的 yum 存储库文件。 请注意,这是一个命令:

echo '[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
' | sudo tee /etc/yum.repos.d/elasticsearch.repo

使用以下命令安装 Elasticsearch:

sudo yum -y install elasticsearch

现在已安装 Elasticsearch。 让我们编辑配置:

sudo vi /etc/elasticsearch/elasticsearch.yml

您需要限制对 Elasticsearch 实例(端口 9200)的外部访问,因此外部人员无法通过 HTTP API 读取您的数据或关闭您的 Elasticsearch 集群。 找到指定 network.host 的行,取消注释,并将其值替换为“localhost”,如下所示:

elasticsearch.yml 摘录(更新)

network.host: localhost

保存并退出elasticsearch.yml

现在启动 Elasticsearch:

sudo systemctl start elasticsearch

然后运行以下命令以在启动时自动启动 Elasticsearch:

sudo systemctl enable elasticsearch

现在 Elasticsearch 已经启动并运行了,让我们安装 Kibana。

安装 Kibana

Kibana 包与 Elasticsearch 共享相同的 GPG 密钥,我们已经安装了该公钥。

为 Kibana 创建和编辑一个新的 yum 存储库文件:

sudo vi /etc/yum.repos.d/kibana.repo

添加以下存储库配置:

/etc/yum.repos.d/kibana.repo

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

保存并退出。

使用以下命令安装 Kibana:

sudo yum -y install kibana

打开 Kibana 配置文件进行编辑:

sudo vi /opt/kibana/config/kibana.yml

在 Kibana 配置文件中,找到指定 server.host 的行,并将 IP 地址(默认为“0.0.0.0”)替换为“localhost”:

kibana.yml 摘录(更新)

server.host: "localhost"

保存并退出。 这个设置使得 Kibana 只能被 localhost 访问。 这很好,因为我们将在同一台服务器上安装 Nginx 反向代理,以允许外部访问。

现在启动 Kibana 服务,并启用它:

sudo systemctl start kibana
sudo chkconfig kibana on

在我们可以使用 Kibana Web 界面之前,我们必须设置一个反向代理。 现在让我们用 Nginx 来做这件事。

安装 Nginx

因为我们将 Kibana 配置为侦听 localhost,所以我们必须设置反向代理以允许外部访问它。 为此,我们将使用 Nginx。

注意: 如果您已经有一个 Nginx 实例想要使用,请随意使用它。 只需确保配置 Kibana 以便您的 Nginx 服务器可以访问它(您可能希望将 /opt/kibana/config/kibana.yml 中的 host 值更改为您的 Kibana 服务器的私有 IP 地址)。 此外,建议您启用 SSL/TLS。

将 EPEL 存储库添加到 yum:

sudo yum -y install epel-release

现在使用 yum 安装 Nginx 和 httpd-tools:

sudo yum -y install nginx httpd-tools

使用 htpasswd 创建一个管理员用户,名为“kibanaadmin”(您应该使用其他名称),该用户可以访问 Kibana Web 界面:

sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin

在提示符处输入密码。 请记住此登录名,因为您将需要它来访问 Kibana Web 界面。

现在在您喜欢的编辑器中打开 Nginx 配置文件。 我们将使用 vi:

sudo vi /etc/nginx/nginx.conf

找到默认服务器块(以 server { 开头),文件中的最后一个配置块,然后将其删除。 完成后,文件中的最后两行应如下所示:

nginx.conf 摘录

    include /etc/nginx/conf.d/*.conf;
}

保存并退出。

现在我们将在一个新文件中创建一个 Nginx 服务器块:

sudo vi /etc/nginx/conf.d/kibana.conf

将以下代码块粘贴到文件中。 请务必更新 server_name 以匹配您的服务器名称:

/etc/nginx/conf.d/kibana.conf

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;        
    }
}

保存并退出。 这会将 Nginx 配置为将服务器的 HTTP 流量定向到 Kibana 应用程序,该应用程序正在侦听 localhost:5601。 此外,Nginx 将使用我们之前创建的 htpasswd.users 文件,并且需要基本身份验证。

现在启动并启用 Nginx 以使我们的更改生效:

sudo systemctl start nginx
sudo systemctl enable nginx

注意: 本教程假定 SELinux 已禁用。 如果不是这种情况,您可能需要运行以下命令才能让 Kibana 正常工作:sudo setsebool -P httpd_can_network_connect 1


Kibana 现在可以通过您的 FQDN 或 ELK 服务器的公共 IP 地址访问,即 http://elk_server_public_ip/。 如果您在 Web 浏览器中访问该页面,在输入“kibanaadmin”凭据后,您应该会看到一个 Kibana 欢迎页面,该页面将要求您配置索引模式。 在我们安装完所有其他组件之后,让我们稍后再谈。

安装 Logstash

Logstash 包与 Elasticsearch 共享相同的 GPG 密钥,我们已经安装了该公钥,所以让我们为 Logstash 创建和编辑一个新的 Yum 存储库文件:

sudo vi /etc/yum.repos.d/logstash.repo

添加以下存储库配置:

/etc/yum.repos.d/logstash.repo

[logstash-2.2]
name=logstash repository for 2.2 packages
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

保存并退出。

使用以下命令安装 Logstash:

sudo yum -y install logstash

Logstash 已安装,但尚未配置。

生成 SSL 证书

由于我们将使用 Filebeat 将日志从我们的客户端服务器发送到我们的 ELK 服务器,我们需要创建一个 SSL 证书和密钥对。 Filebeat 使用该证书来验证 ELK Server 的身份。 使用以下命令创建将存储证书和私钥的目录:

现在您有两个选项可用于生成 SSL 证书。 如果您的 DNS 设置允许您的客户端服务器解析 ELK 服务器的 IP 地址,请使用 选项 2。 否则,选项 1 将允许您使用 IP 地址。

选项 1:IP 地址

如果您没有 DNS 设置——这将允许您的服务器(您将从该服务器收集日志)解析您的 ELK 服务器的 IP 地址——您必须将您的 ELK 服务器的私有 IP 地址添加到 [我们将要生成的 SSL 证书的 X207X] (SAN) 字段。 为此,请打开 OpenSSL 配置文件:

sudo vi /etc/pki/tls/openssl.cnf

在文件中找到 [ v3_ca ] 部分,并在其下添加这一行(替换为 ELK 服务器的私有 IP 地址):

openssl.cnf 摘录

subjectAltName = IP: ELK_server_private_ip

保存并退出。

现在使用以下命令在适当的位置 (/etc/pki/tls/) 生成 SSL 证书和私钥:

cd /etc/pki/tls
sudo openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

logstash-forwarder.crt 文件将被复制到将日志发送到 Logstash 的所有服务器,但我们稍后会这样做。 让我们完成我们的 Logstash 配置。 如果您选择此选项,请跳过选项 2 并继续 Configure Logstash

选项 2:FQDN (DNS)

如果你的私有网络有 DNS 设置,你应该创建一个包含 ELK 服务器私有 IP 地址的 A 记录——这个域名将在下一个命令中使用,以生成 SSL 证书。 或者,您可以使用指向服务器公共 IP 地址的记录。 只需确保您的服务器(您将从其中收集日志的服务器)能够将域名解析为您的 ELK 服务器。

现在使用以下命令(替换 ELK 服务器的 FQDN)在适当的位置(/etc/pki/tls/...)生成 SSL 证书和私钥:

cd /etc/pki/tls
sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

logstash-forwarder.crt 文件将被复制到将日志发送到 Logstash 的所有服务器,但我们稍后会这样做。 让我们完成我们的 Logstash 配置。

配置 Logstash

Logstash 配置文件采用 JSON 格式,位于 /etc/logstash/conf.d 中。 配置由三个部分组成:输入、过滤器和输出。

让我们创建一个名为 02-beats-input.conf 的配置文件并设置我们的“filebeat”输入:

sudo vi /etc/logstash/conf.d/02-beats-input.conf

插入以下 input 配置:

02-beats-input.conf

input {
  beats {
    port => 5044
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

保存并退出。 这指定了一个 beats 输入,它将侦听 tcp 端口 5044,它将使用我们之前创建的 SSL 证书和私钥。

现在让我们创建一个名为 10-syslog-filter.conf 的配置文件,我们将在其中为 syslog 消息添加一个过滤器:

sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

插入以下 syslog filter 配置:

10-syslog-filter.conf

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

保存并退出。 此过滤器查找标记为“syslog”类型(通过 Filebeat)的日志,并将尝试使用 grok 解析传入的 syslog 日志以使其结构化和可查询。

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

sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

插入以下 输出 配置:

/etc/logstash/conf.d/30-elasticsearch-output.conf

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

保存并退出。 此输出基本上将 Logstash 配置为将节拍数据存储在以 localhost:9200 运行的 Elasticsearch 中,该索引以使用的节拍命名(在我们的例子中为 filebeat)。

如果您想为使用 Filebeat 输入的其他应用程序添加过滤器,请务必命名文件,以便它们在输入和输出配置之间排序(即 在 02- 和 30- 之间)。

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

sudo service logstash configtest

如果没有语法错误,它应该显示 Configuration OK。 否则,请尝试阅读错误输出以查看您的 Logstash 配置有什么问题。

重新启动并启用 Logstash 以使我们的配置更改生效:

sudo systemctl restart logstash
sudo chkconfig logstash on

接下来,我们将加载示例 Kibana 仪表板。

加载 Kibana 仪表板

Elastic 提供了几个示例 Kibana 仪表板和 Beats 索引模式,可以帮助您开始使用 Kibana。 尽管我们不会在本教程中使用仪表板,但无论如何我们都会加载它们,以便我们可以使用它包含的 Filebeat 索引模式。

首先,将示例仪表板存档下载到您的主目录:

cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

使用以下命令安装 unzip 包:

sudo yum -y install unzip

接下来,提取存档的内容:

unzip beats-dashboards-*.zip

并使用以下命令将示例仪表板、可视化和 Beats 索引模式加载到 Elasticsearch 中:

cd beats-dashboards-*
./load.sh

这些是我们刚刚加载的索引模式:

  • [packetbeat-]YYYY.MM.DD
  • [topbeat-]YYYY.MM.DD
  • [filebeat-]YYYY.MM.DD
  • [winlogbeat-]YYYY.MM.DD

当我们开始使用 Kibana 时,我们将选择 Filebeat 索引模式作为我们的默认值。

在 Elasticsearch 中加载 Filebeat 索引模板

因为我们计划使用 Filebeat 将日志传送到 Elasticsearch,所以我们应该加载一个 Filebeat 索引模板。 索引模板将配置 Elasticsearch 以智能方式分析传入的 Filebeat 字段。

首先,将 Filebeat 索引模板下载到您的主目录:

cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

然后使用以下命令加载模板:

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json

如果模板加载正确,您应该会看到如下消息:

Output:{
  "acknowledged" : true
}

现在我们的 ELK 服务器已准备好接收 Filebeat 数据,让我们继续在每个客户端服务器上设置 Filebeat。

设置 Filebeat(添加客户端服务器)

对您希望将日志发送到 ELK 服务器的每个 CentOS 或 RHEL 7 服务器执行这些步骤。 有关在基于 Debian 的 Linux 发行版上安装 Filebeat 的说明(例如 Ubuntu、Debian 等),请参阅本教程 Ubuntu 变体的 Set Up Filebeat (Add Client Servers) 部分

复制 SSL 证书

在您的 ELK 服务器 上,将在先决条件教程中创建的 SSL 证书复制到您的 Client Server(替换客户端服务器的地址和您自己的登录名):

scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

提供您的登录凭据后,确保证书副本成功。 客户端服务器和 ELK 服务器之间的通信需要它。

现在,在您的 Client Server 上,将 ELK Server 的 SSL 证书复制到适当的位置(/etc/pki/tls/certs):

sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

现在我们将安装 Topbeat 包。

安装 Filebeat 包

Client Server 上,创建运行以下命令将 Elasticsearch 公钥 GPG 密钥导入 rpm:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

为 Filebeat 创建和编辑一个新的 yum 存储库文件:

sudo vi /etc/yum.repos.d/elastic-beats.repo

添加以下存储库配置:

/etc/yum.repos.d/elastic-beats.repo

[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

保存并退出。

使用以下命令安装 Filebeat:

sudo yum -y install filebeat

Filebeat 已安装但尚未配置。

配置 Filebeat

现在我们将配置 Filebeat 以连接到 ELK 服务器上的 Logstash。 本节将指导您修改 Filebeat 附带的示例配置文件。 完成这些步骤后,您应该有一个类似于 this 的文件。

Client Server 上,创建并编辑 Filebeat 配置文件:

sudo vi /etc/filebeat/filebeat.yml

注意: Filebeat的配置文件是YAML格式,也就是说缩进很重要! 请务必使用这些说明中指示的相同数量的空格。


在文件顶部附近,您将看到 prospectors 部分,您可以在其中定义 prospectors 指定应发送哪些日志文件以及应如何处理它们。 每个探矿者由 - 字符表示。

我们将修改现有的探矿者以将 securemessages 日志发送到 Logstash。 在 paths 下,注释掉 - /var/log/*.log 文件。 这将阻止 Filebeat 将该目录中的每个 .log 发送到 Logstash。 然后为 syslogauth.log 添加新条目。 完成后它应该看起来像这样:

filebeat.yml 摘录 1 of 5

...
      paths:
        - /var/log/secure
        - /var/log/messages
#        - /var/log/*.log
...

然后找到指定 document_type: 的行,取消注释并将其值更改为“syslog”。 修改后应该是这样的:

filebeat.yml 摘录 2 of 5

...
      document_type: syslog
...

这指定了此探矿者中的日志类型为 syslog(这是我们的 Logstash 过滤器正在寻找的类型)。

如果您想将其他文件发送到您的 ELK 服务器,或对 Filebeat 处理日志的方式进行任何更改,请随时修改或添加探矿者条目。

接下来,在 output 部分下,找到显示 elasticsearch: 的行,它表示 Elasticsearch 输出部分(我们不会使用)。 删除或注释掉整个 Elasticsearch 输出部分 (直到显示 logstash: 的行)。

找到注释掉的 Logstash 输出部分,由显示为 #logstash: 的行指示,并通过删除前面的 # 来取消注释。 在本节中,取消注释 hosts: ["localhost:5044"] 行。 将 localhost 更改为 ELK 服务器的私有 IP 地址(或主机名,如果您使用该选项):

filebeat.yml 节选 3 of 5

  ### Logstash as output
  logstash:
    # The Logstash hosts
    hosts: ["ELK_server_private_IP:5044"]

这会将 Filebeat 配置为连接到 ELK 服务器上的 Logstash 端口 5044(我们之前指定输入的端口)。

hosts 条目的正下方,并使用相同的缩进,添加以下行:

filebeat.yml 摘录 4 of 5

    bulk_max_size: 1024

接下来,找到 tls 部分,并取消注释。 然后取消注释指定 certificate_authorities 的行,并将其值更改为 ["/etc/pki/tls/certs/logstash-forwarder.crt"]。 它应该看起来像这样:

filebeat.yml 摘录 5 of 5

...
    tls:
      # List of root certificates for HTTPS server verifications
      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

这会将 Filebeat 配置为使用我们在 ELK 服务器上创建的 SSL 证书。

保存并退出。

现在启动并启用 Filebeat 以将我们的更改到位:

sudo systemctl start filebeat
sudo systemctl enable filebeat

同样,如果您不确定您的 Filebeat 配置是否正确,请将其与此 示例 Filebeat 配置 进行比较。

现在 Filebeat 正在将您的系统日志 messagessecure 文件发送到您的 ELK 服务器! 对您希望为其收集日志的所有其他服务器重复此部分。

测试 Filebeat 安装

如果您的 ELK 堆栈设置正确,Filebeat(在您的客户端服务器上)应该将您的日志传送到您的 ELK 服务器上的 Logstash。 Logstash 应该将 Filebeat 数据加载到 Elasticsearch 中的日期标记索引 filebeat-YYYY.MM.DD 中。

在您的 ELK 服务器 上,通过使用以下命令查询 Filebeat 索引来验证 Elasticsearch 确实在接收数据:

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

您应该会看到一堆如下所示的输出:

Sample Output:...
{
      "_index" : "filebeat-2016.01.29",
      "_type" : "log",
      "_id" : "AVKO98yuaHvsHQLa53HE",
      "_score" : 1.0,
      "_source":{"message":"Feb  3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
    }
...

如果您的输出显示总命中数为 0,则 Elasticsearch 没有在您搜索的索引下加载任何日志,您应该检查您的设置是否有错误。 如果您收到预期的输出,请继续执行下一步。

连接到 Kibana

当您在要为其收集日志的所有服务器上完成 Filebeat 设置后,让我们看看 Kibana,我们之前安装的 Web 界面。

在 Web 浏览器中,转到 ELK 服务器的 FQDN 或公共 IP 地址。 输入“kibanaadmin”凭据后,您应该会看到一个页面,提示您配置默认索引模式:

继续并从 Index Patterns 菜单(左侧)中选择 [filebeat]-YYY.MM.DD,然后单击 Star (Set as default index) 按钮设置 Filebeat索引为默认值。

现在单击顶部导航栏中的 Discover 链接。 默认情况下,这将显示过去 15 分钟内的所有日志数据。 您应该看到带有日志事件的直方图,日志消息如下:

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

尝试以下操作:

  • 搜索“root”以查看是否有人试图以 root 身份登录您的服务器
  • 搜索特定主机名(搜索 host: "hostname"
  • 通过选择直方图上的一个区域或从上面的菜单中更改时间范围
  • 单击直方图下方的消息以查看数据是如何被过滤的

Kibana 还有许多其他功能,例如图形和过滤,所以请随意浏览!

结论

现在您的系统日志通过 Elasticsearch 和 Logstash 集中,并且您可以使用 Kibana 将它们可视化,您应该从集中所有重要日志开始。 请记住,您几乎可以将任何类型的日志或索引数据发送到 Logstash,但如果使用 grok 解析和结构化数据,数据将变得更加有用。

为了改进您的新 ELK 堆栈,您应该考虑使用 Logstash 收集和过滤您的其他日志,并 创建 Kibana 仪表板。 您可能还想通过在您的 ELK 堆栈中使用 Topbeat 收集系统指标。 所有这些主题都包含在本系列的其他教程中。

祝你好运!