笔者精选互联网档案馆接受捐赠作为为捐款而写程序。
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.
Elastic Stack 组件在 Ubuntu 的默认软件包存储库中不可用。但是,在添加 Elastic 的包源列表后,可以使用 APT 安装它们。
Elastic Stack 的所有软件包均使用 Elasticsearch 签名密钥进行签名,以保护您的系统免遭软件包欺骗。已使用密钥进行身份验证的包将被您的包管理器视为可信。在此步骤中,您将导入 Elasticsearch 公共 GPG 密钥并添加 Elastic 包源列表以安装 Elasticsearch。
首先,运行以下命令将 Elasticsearch 公共 GPG 密钥导入到 APT 中:
-
wget -qO- https://artifacts.elastic.co/GPG-KEY-elasticsearch| sudoapt-keyadd -
接下来,将 Elastic 源列表添加到sources.list.d
目录,APT 将在其中寻找新源:
-
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 源:
然后使用以下命令安装 Elasticsearch:
Elasticsearch 安装完成后,使用您喜欢的文本编辑器编辑 Elasticsearch 的主配置文件,elasticsearch.yml
。在这里,我们将使用nano
:
-
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
:
-
sudosystemctl启动elasticsearch
接下来,运行以下命令以使 Elasticsearch 在每次服务器启动时启动:
您可以通过发送 HTTP 请求来测试您的 Elasticsearch 服务是否正在运行:
您将看到一条响应,显示有关本地节点的一些基本信息,类似于:
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 的下一个组件。
根据官方文档,您应该仅在安装 Elasticsearch 后安装 Kibana。按此顺序安装可确保每个产品所依赖的组件正确就位。
因为您已经在上一步中添加了 Elastic 包源,所以您可以使用以下命令安装 Elastic Stack 的其余组件apt
:
然后启用并启动Kibana服务:
-
sudo系统控制enable kibana
-
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 以要求此用户名和密码并立即读取此文件:
-
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:
-
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 先决条件中创建了同名的服务器块文件,则无需运行以下命令:
-
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
然后检查配置是否有语法错误:
如果输出中报告任何错误,请返回并仔细检查您放置在配置文件中的内容是否已正确添加。一旦你看到syntax is ok
在输出中,继续并重新启动 Nginx 服务:
如果您遵循初始服务器设置指南,则应该启用 UFW 防火墙。要允许连接到 Nginx,我们可以通过键入以下内容来调整规则:
Note:如果您按照先决条件 Nginx 教程进行操作,您可能已经创建了一条 UFW 规则,允许Nginx HTTP
配置文件通过防火墙。因为Nginx Full
profile 允许 HTTP 和 HTTPS 流量通过防火墙,您可以安全地删除在先决条件教程中创建的规则。使用以下命令执行此操作:
现在可以通过您的 FQDN 或 Elastic Stack 服务器的公共 IP 地址访问 Kibana。您可以通过导航到以下地址并在出现提示时输入您的登录凭据来检查 Kibana 服务器的状态页面:
http://your_server_ip/status
此状态页面显示有关服务器资源使用情况的信息并列出已安装的插件。
Note:如先决条件部分所述,建议您在服务器上启用 SSL/TLS。您可以关注本教程现在为 Ubuntu 18.04 上的 Nginx 获取免费的 SSL 证书。获得 SSL/TLS 证书后,您可以返回并完成本教程。
现在 Kibana 仪表板已配置完毕,让我们安装下一个组件:Logstash。
虽然 Beats 可以直接将数据发送到 Elasticsearch 数据库,但我们建议使用 Logstash 来处理数据。这将允许您从不同来源收集数据,将其转换为通用格式,并将其导出到另一个数据库。
使用以下命令安装 Logstash:
安装 Logstash 后,您可以继续配置它。 Logstash的配置文件以JSON格式编写并驻留在/etc/logstash/conf.d
目录。在配置时,将 Logstash 视为一个管道会很有帮助,它在一端接收数据,以某种方式处理数据,然后将其发送到目的地(在本例中,目的地是 Elasticsearch)。 Logstash 管道有两个必需的元素,input
and output
,和一个可选元素,filter
。输入插件使用来自源的数据,过滤器插件处理数据,输出插件将数据写入目的地。
创建一个名为的配置文件02-beats-input.conf
您将在其中设置 Filebeat 输入:
-
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:
-
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
:
-
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 配置:
-
sudo -uLogstash /usr/share/logstash/bin/logstash--路径.设置/etc/logstash-t
如果没有语法错误,您的输出将显示Configuration OK
几秒钟后。如果您在输出中没有看到此内容,请检查输出中是否出现任何错误并更新配置以更正它们。
如果您的配置测试成功,请启动并启用 Logstash 以使配置更改生效:
-
sudosystemctl 启动logstash
-
sudo系统控制enable日志存储
现在 Logstash 已正确运行并已完全配置,让我们安装 Filebeat。
Elastic Stack 使用多个名为 Beats 的轻量级数据传送器来从各种来源收集数据并将其传输到 Logstash 或 Elasticsearch。以下是 Elastic 目前提供的 Beats:
-
Filebeat:收集并发送日志文件。
-
度量节拍:从您的系统和服务收集指标。
-
数据包节拍:收集和分析网络数据。
-
Winlogbeat:收集 Windows 事件日志。
-
审核节奏:收集Linux审计框架数据并监控文件完整性。
-
心跳:通过主动探测来监视服务的可用性。
在本教程中,我们将使用 Filebeat 将本地日志转发到我们的 Elastic Stack。
使用以下命令安装 Filebeatapt
:
接下来,配置 Filebeat 以连接到 Logstash。这里,我们将修改Filebeat自带的示例配置文件。
打开Filebeat配置文件:
-
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发行版的系统日志服务创建的日志。
让我们启用它:
您可以通过运行以下命令查看已启用和禁用的模块的列表:
您将看到类似于以下内容的列表:
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 中。一个弹性搜索索引是具有相似特征的文档的集合。索引用一个名称来标识,该名称用于在索引中执行各种操作时引用该索引。创建新索引时将自动应用索引模板。
要加载模板,请使用以下命令:
-
sudo文件节拍设置- 模板 -E 输出.logstash.启用=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
Output
Loaded index template
Filebeat 附带示例 Kibana 仪表板,可让您在 Kibana 中可视化 Filebeat 数据。在使用仪表板之前,您需要创建索引模式并将仪表板加载到 Kibana 中。
当仪表板加载时,Filebeat 连接到 Elasticsearch 以检查版本信息。要在启用 Logstash 时加载仪表板,您需要禁用 Logstash 输出并启用 Elasticsearch 输出:
-
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:
-
sudosystemctl 启动 filebeat
-
sudo系统控制enable文件节拍
如果您已正确设置 Elastic Stack,Filebeat 将开始将您的系统日志和授权日志发送到 Logstash,然后 Logstash 会将这些数据加载到 Elasticsearch 中。
要验证 Elasticsearch 确实正在接收此数据,请使用以下命令查询 Filebeat 索引:
-
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 的一些仪表板。
让我们看看 Kibana,我们之前安装的 Web 界面。
在 Web 浏览器中,转到 Elastic Stack 服务器的 FQDN 或公共 IP 地址。输入您在步骤 2 中定义的登录凭据后,您将看到 Kibana 主页:
点击Discover左侧导航栏中的链接。上Discover页面,选择预定义的文件节拍-* 查看 Filebeat 数据的索引模式。默认情况下,这将显示过去 15 分钟内的所有日志数据。您将看到一个包含日志事件的直方图,以及下面的一些日志消息:
在这里,您可以搜索和浏览日志,还可以自定义仪表板。但此时,其中不会有太多内容,因为您只是从 Elastic Stack 服务器收集系统日志。
使用左侧面板导航至仪表板页面并搜索文件节拍系统仪表板。到达那里后,您可以搜索 Filebeat 附带的示例仪表板system
module.
例如,您可以根据系统日志消息查看详细统计信息:
您还可以查看哪些用户使用过sudo
命令和时间:
Kibana 还有许多其他功能,例如图形和过滤,因此请随意探索。
在本教程中,您学习了如何安装和配置 Elastic Stack 来收集和分析系统日志。请记住,您可以使用以下命令将几乎任何类型的日志或索引数据发送到 LogstashBeats,但如果使用 Logstash 过滤器对数据进行解析和结构化,数据将变得更加有用,因为这会将数据转换为 Elasticsearch 可以轻松读取的一致格式。