如何在 CentOS 7 上安装 Elasticsearch、Logstash 和 Kibana(ELK Stack)

2023-11-11

介绍

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

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

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

Our Goal

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

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

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

ELK Infrastructure

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

先决条件

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

如果您更愿意使用 Ubuntu,请查看本教程:如何在 Ubuntu 14.04 上安装 ELK.

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

  • 操作系统:CentOS 7
  • RAM: 4GB
  • CPU: 2

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

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

安装Java 8

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

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

  1. cd ~
  2. 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(如果您下载了不同的版本,请替换此处的文件名):

  1. sudo yum -y本地安装jdk-8u73-linux-x64.rpm

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

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

  1. rm〜/jdk-8u*-linux-x64.rpm

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

安装Elasticsearch

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

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

  1. sudo rpm --importhttp://packages.elastic.co/GPG-KEY-elasticsearch

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

  1. echo '[elasticsearch-2.x]
  2. name=2.x 包的 Elasticsearch 存储库
  3. baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
  4. gpg检查=1
  5. gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
  6. 启用=1
  7. ' | sudo tee/etc/yum.repos.d/elasticsearch.repo

使用以下命令安装 Elasticsearch:

  1. sudo yum -y install弹性搜索

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

  1. sudo vi/etc/elasticsearch/elasticsearch.yml

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

elasticsearch.yml 摘录(已更新)
network.host: localhost

保存并退出elasticsearch.yml.

现在启动Elasticsearch:

  1. sudosystemctl启动elasticsearch

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

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

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

安装 Kibana

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

为 Kibana 创建并编辑新的 yum 存储库文件:

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

添加以下存储库配置:

/etc/yum.repos.d/kibana.repo
  1. [kibana-4.4]
  2. name=4.4.x 包的 Kibana 存储库
  3. baseurl=http://packages.elastic.co/kibana/4.4/centos
  4. gpg检查=1
  5. gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
  6. 启用=1

保存并退出。

使用以下命令安装 Kibana:

  1. sudo yum -y install kibana

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

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

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

kibana.yml 摘录(已更新)
server.host: "localhost"

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

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

  1. sudosystemctl 启动 kibana
  2. sudo 检查配置基巴纳

在使用 Kibana Web 界面之前,我们必须设置反向代理。现在让我们使用 Nginx 来实现这一点。

安装 Nginx

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

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

将 EPEL 存储库添加到 yum:

  1. sudo yum -y installepel-释放

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

  1. sudo yum -y installnginx httpd 工具

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

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

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

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

  1. sudo vi/etc/nginx/nginx.conf

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

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

保存并退出。

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

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

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

/etc/nginx/conf.d/kibana.conf
  1. 服务器 {
  2. 听80;
  3. server_name example.com;
  4. auth_basic "限制访问";
  5. auth_basic_user_file /etc/nginx/htpasswd.users;
  6. 地点 / {
  7. proxy_pass http://localhost:5601;
  8. proxy_http_版本 1.1;
  9. proxy_set_header 升级 $http_upgrade;
  10. proxy_set_header 连接“升级”;
  11. proxy_set_header 主机 $host;
  12. proxy_cache_bypass $http_upgrade;
  13. }
  14. }

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

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

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

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

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

安装Logstash

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

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

添加以下存储库配置:

/etc/yum.repos.d/logstash.repo
  1. [logstash-2.2]
  2. name=2.2 包的logstash 存储库
  3. baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
  4. gpg检查=1
  5. gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
  6. 启用=1

保存并退出。

使用以下命令安装 Logstash:

  1. sudo yum -y install日志存储

Logstash 已安装,但尚未配置。

生成 SSL 证书

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

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

选项 1:IP 地址

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

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

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

openssl.cnf 摘录
  1. subjectAltName = IP: ELK_server_private_ip

保存并退出。

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

  1. cd/etc/pki/tls
  2. sudoopenssl 请求-config/etc/pki/tls/openssl.cnf-x509 -days 3650 -batch -nodes -newkeyRSA:2048-keyout私人/logstash-forwarder.key-out证书/logstash-forwarder.crt

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

选项 2:FQDN (DNS)

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

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

  1. cd/etc/pki/tls
  2. 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

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

配置Logstash

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

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

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

插入以下内容input配置:

02-beats-input.conf
  1. input {
  2. 节拍{
  3. 端口 => 5044
  4. ssl => 真
  5. ssl_certificate =>“/etc/pki/tls/certs/logstash-forwarder.crt”
  6. ssl_key =>“/etc/pki/tls/private/logstash-forwarder.key”
  7. }
  8. }

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

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

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

插入以下系统日志filter配置:

10-syslog-filter.conf
  1. 筛选 {
  2. 如果[类型] ==“系统日志”{
  3. 领悟{
  4. 匹配 => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message} ” }
  5. add_field => [ "received_at", "%{@timestamp}" ]
  6. add_field => [ "received_from", "%{host}" ]
  7. }
  8. 系统日志_pri { }
  9. 日期 {
  10. 匹配=> [“syslog_timestamp”,“MMM d HH:mm:ss”,“MMM dd HH:mm:ss”]
  11. }
  12. }
  13. }

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

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

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

插入以下内容output配置:

/etc/logstash/conf.d/30-elasticsearch-output.conf
  1. 输出 {
  2. 弹性搜索{
  3. 主机=> [“本地主机:9200”]
  4. 嗅探=>真
  5. 管理模板=>假
  6. 索引=>“%{[@metadata][beat]}-%{+YYYY.MM.dd}”
  7. document_type =>“%{[@metadata][类型]}”
  8. }
  9. }

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

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

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

  1. sudo serviceLogstash 配置测试

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

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

  1. sudosystemctl 重新启动logstash
  2. sudo 检查配置日志存储开启

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

加载 Kibana 仪表板

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

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

  1. cd ~
  2. curl -L -Ohttps://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

安装unzip使用此命令打包:

  1. sudo yum -y install unzip

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

  1. unzipBeats-仪表板-*.zip

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

  1. cd节拍-仪表板-*
  2. ./加载.sh

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

  • [数据包节拍-]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 索引模板下载到您的主目录:

  1. cd ~
  2. curl -Ohttps://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

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

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

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

Output:
{ "acknowledged" : true }

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

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

为每个执行以下步骤CentOS 或 RHEL 7您想要将日志发送到 ELK 服务器的服务器。有关在基于 Debian 的 Linux 发行版(例如 Ubuntu、Debian 等)上安装 Filebeat 的说明,请参阅设置 Filebeat(添加客户端服务器)部分本教程的 Ubuntu 变体。

复制 SSL 证书

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

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

提供登录凭据后,请确保证书复制成功。它是客户端服务器和 ELK 服务器之间通信所必需的。

现在,在你的客户端服务器,将 ELK 服务器的 SSL 证书复制到适当的位置(/etc/pki/tls/certs):

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

现在我们将安装 Topbeat 软件包。

安装 Filebeat 包

On 客户端服务器,创建运行以下命令将Elasticsearch公共GPG密钥导入rpm:

  1. sudo rpm --importhttp://packages.elastic.co/GPG-KEY-elasticsearch

为 Filebeat 创建并编辑新的 yum 存储库文件:

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

添加以下存储库配置:

/etc/yum.repos.d/elastic-beats.repo
  1. [beats]
  2. 名称=Elastic Beats 存储库
  3. baseurl=https://packages.elastic.co/beats/yum/el/$basearch
  4. 启用=1
  5. gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
  6. gpg检查=1

保存并退出。

使用以下命令安装 Filebeat:

  1. sudo yum -y install文件节拍

Filebeat 已安装,但尚未配置。

配置Filebeat

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

On 客户端服务器、创建并编辑Filebeat配置文件:

  1. sudo vi/etc/filebeat/filebeat.yml

Note:Filebeat的配置文件是YAML格式,这意味着缩进非常重要!请务必使用与这些说明中指示的相同数量的空格。

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

我们将修改现有的探矿者以发送secure and messages记录到 Logstash。在下面paths,注释掉- /var/log/*.log文件。这将阻止 Filebeat 发送每个.log在 Logstash 的该目录中。然后添加新条目syslog and auth.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 处理日志的方式进行任何更改,请随意修改或添加 prospector 条目。

接下来,在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 配置为通过端口 5044(我们之前指定输入的端口)连接到 ELK 服务器上的 Logstash。

直属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 以将我们的更改落实到位:

  1. sudosystemctl 启动 filebeat
  2. sudo系统控制enable文件节拍

再次强调,如果您不确定您的 Filebeat 配置是否正确,请将其与此进行比较Filebeat 配置示例.

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

测试 Filebeat 安装

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

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

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

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

示例输出:
... { "_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”凭据后,您应该会看到一个页面,提示您配置默认索引模式:

Create index

继续并选择[文件节奏]-YYY.MM.DD从“索引模式”菜单(左侧),然后单击星号(设置为默认索引)按钮将 Filebeat 索引设置为默认值。

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

Discover page

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

尝试以下操作:

  • 搜索“root”以查看是否有人尝试以 root 身份登录您的服务器
  • Search for a particular hostname (search for host: "hostname")
  • 通过选择直方图上的区域或从上面的菜单中更改时间范围
  • 单击直方图下方的消息可查看数据的过滤方式

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

结论

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

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

祝你好运!

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

如何在 CentOS 7 上安装 Elasticsearch、Logstash 和 Kibana(ELK Stack) 的相关文章

  • 使用 Nginx 时缺少 HTTP 状态代码名称

    我正在使用 Nginx 将所有 HTTP 请求重定向到 HTTPS 在我的 Spring Boot 应用程序中 这是我正在使用的 nginx 配置 通过它我可以将所有请求重定向到 Https 但是当我这样做时 我得到了状态码返回正确 但没有
  • Elasticsearch GET API 获取分片大小

    在 Elasticsearch 2 3 3 中 有没有办法使用返回 JSON 的 GET API 获取分片大小 目前我找到了以下几种获取shard size的方法 这两种方法都存在问题 recovery gt 使用 JSON 进行响应并提供
  • android Studio 日志不起作用

    我无法在手机上使用日志 我只在 Android Studio 中收到此错误 11 01 03 28 56 427 24227 24375 com example segall caveofprogcourse E GED 无法获取 GED
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • Elasticsearch:将新元素附加到对象的嵌套数组

    我正在尝试将新项目添加到特定文档中的嵌套对象数组中 我已经搜索过 似乎部分文档的更新不支持我需要的内容 它用新元素替换了整个数组 所以我进行了脚本化更新 它通过 REST API 按预期工作 PUT transactions mapping
  • iFrame 在 Facebook Canvas 应用程序中显示为空白

    我有一个非常简单的页面 我试图在 Facebook iframe 中查看它 它是一个 Django 视图 但它不依赖于请求是通过 POST 还是 GET 提交 它所做的只是返回一些简单的 HTML 如果我们直接点击链接 它会正确显示 如果在
  • 记录时何时出现致命错误?

    在 log4j 和 log4net 等日志框架中 您可以记录各种级别的信息 大多数级别都有明显的意图 例如 调试 日志与 错误 日志是什么 然而 我一直害怕的一件事是将我的日志记录归类为 致命 哪种类型的错误如此严重以至于应被归类为致命错误
  • nginx - 使用 ssl 支持设置多个 server_name

    我很想使用 nginx 来为具有多个域名和 SSL 的网站提供服务 webmail example com webmail beispiel de 两者都使用相同的虚拟主机 因此我只设置 server name 两次 问题是 我需要 ngi
  • Elasticsearch,获取节点锁失败,是以下位置可写

    Elasticsearch 不会开始使用 bin elasticsearch 它引发以下异常 ElasticsearchIllegalStateException Failed to obtain node lock is the foll
  • 最佳实践 - 存储过程日志记录

    如果您有一个长时间运行的 SP 您会以某种方式记录其操作还是只是等待此消息 命令成功完成 我认为 关于这个主题可以有很多解决方案 但是有没有最佳实践 一个经常使用的简单解决方案 EDIT 我发现了一个关于这个主题的有趣链接 http web
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • ElasticSearch:设置 search_analyzer 时必须设置字段分析器

    我读过有关 ES 的早期版本 type mapper parsing exception reason analyzer on field email must be set when search analyzer is set 这是当我
  • 保存日志 - SimpleHTTPServer

    如何保存控制台的输出 例如 192 168 1 1 2014 年 8 月 18 日 12 05 59 代码 404 消息未找到文件 到一个文件 这是代码 import SimpleHTTPServer import SocketServer
  • Spring Data elasticsearch @Query 注解嵌套对象

    我有两节课 Document public class PracticeQuestion private int userId private List
  • docker环境下日志不保存到文件

    在我的生产环境中production rb 我已配置我的日志将保存到文件中 config logger Logger new log production log 当我在本地运行时 使用命令行启动服务器rails s e productio
  • 在子目录中设置 WordPress 时出现错误的 wp-admin 重定向

    我在 docker 容器中设置了 wordpress 使用 nginx 反向代理转发所有位置请求 blog到那个 docker 容器 问题是登录 wp admin 后 它重定向到domain wp admin 代替 domain blog
  • JavaMail 的 DCH 类错误

    我正在尝试使用 Glassfish 3 1 提供的 jar 文件在 Java EE 6 中使用 JavaMail 设置一个简单的日志记录测试 关于这个主题似乎有很多问题 但我还没有找到任何有帮助的答案 我的测试代码如下所示 import j
  • NodeJS 中的缩进多行日志记录

    我要打印JSON stringify d 反对控制台 将上下文作为 Mocha 测试套件输出的一部分 当测试缩进时 我希望对象日志行向右缩进足够远 例如 3 4 个制表符空格 以便它们可以识别地位于右侧describe group 我怎样才
  • 如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?

    我们很快就会推出网站的移动版本 我们的完整网站和移动网站仅在主题上有所不同 即网址相同 唯一的区别在于前端 当用户访问我们的网站时 我们需要能够执行以下操作 1 检查 cookie 移动 true 或 false 以确定是否已定义完整与移动

随机推荐

  • 如何在 Debian 9 上使用 Apache 安装和保护 phpMyAdmin

    phpMyAdmin 是一个免费 开源的基于 PHP 的应用程序 旨在通过基于 Web 的界面简化 MySQL 和 MariaDB 服务器的管理 phpMyAdmin 允许您管理 MySQL 数据库 用户帐户和权限 执行 SQL 语句 以各
  • 在 Linux 中查找大文件

    随着时间的推移 您的磁盘驱动器可能会因大量不必要的文件而变得混乱 占用大量磁盘空间 通常 Linux 系统会因日志或备份文件过大而耗尽磁盘空间 本教程介绍如何使用以下命令查找 Linux 系统中最大的文件和目录find and du命令 使
  • 如何在 Debian 10 上安装 Apache Maven

    Apache Maven 是一个开源项目管理和理解工具 主要用于 Java 项目 Maven 使用项目对象模型 POM 它本质上是一个 XML 文件 其中包含有关项目 配置详细信息 项目依赖项等的信息 本文展示了在 Debian 10 上安
  • 如何在 Linux 中删除/移除用户(userdel 命令)

    Linux 是一个多用户系统 这意味着多个人可以同时与同一个系统交互 作为系统管理员 您有责任通过以下方式管理系统的用户和组创建新用户并将它们分配给不同的groups 有时 您可能需要删除用户帐户 也许是因为用户离开了组织 或者它是为不再在
  • 如何在 CentOS 7 上设置 Nginx 服务器块

    Nginx Server Blocks 允许您在一台机器上运行多个网站 这很有用 因为对于每个站点 您可以指定站点文档根 包含网站文件的目录 创建单独的安全策略 使用不同的 SSL 证书等等 在本教程中 我们将解释如何在 CentOS 7
  • 如何在 Ubuntu 20.04 上安装 VirtualBox

    虚拟盒子是开源跨平台虚拟化软件 允许您同时运行多个来宾操作系统 虚拟机 一般来说 Virtualbox 被桌面用户用作测试和开发环境 在本教程中 我们将向您展示在 Ubuntu 20 04 上安装 VirtualBox 的两种方法 来自标准
  • Bash For 循环

    循环是编程语言的基本概念之一 当您想要一遍又一遍地运行一系列命令直到达到特定条件时 循环会很方便 在 Bash 等脚本语言中 循环对于自动执行重复任务非常有用 Bash 脚本中有三种基本的循环结构 for loop while 循环 and
  • 如何在 Ubuntu 20.04 上安装 MySQL

    MySQL是最流行的开源关系数据库管理系统 它速度快 易于使用 可扩展 是流行的LAMP and LEMP stacks 本指南介绍了如何在 Ubuntu 20 04 上安装 MySQL 并确保其安全 先决条件 确保您以以下身份登录具有 s
  • 在 Ubuntu 18.04 上使用 Let's Encrypt 保护 Apache

    Let s Encrypt 是由互联网安全研究小组 ISRG 创建的证书颁发机构 它通过完全自动化的流程提供免费的 SSL 证书 旨在消除手动证书创建 验证 安装和续订 Let s Encrypt 颁发的证书受到当今所有主要浏览器的信任 在
  • Linux 中的 RPM 命令

    RPM 包管理器 RPM 是 Red Hat Linux 及其衍生产品 例如 CentOS 和 Fedora 使用的功能强大的包管理系统 RPM 也指rpm命令和 rpm文件格式 RPM 包由文件和元数据的存档组成 其中包括依赖项和安装位置
  • 如何在 Debian 9 上安装 Nginx

    Nginx 是一个开源 高性能的 HTTP 和反向代理服务器 为互联网上一些最大的网站提供支持 Nginx 可以用作独立的 Web 服务器 也可以用作反向代理 for Apache和其他网络服务器 与 Apache 相比 Nginx 可以处
  • 如何在 Linux 中将用户添加到组

    在本教程中 我们将解释如何在 Linux 系统中将用户添加到组 我们还将向您展示如何从组中删除用户以及如何创建 删除和列出组 Linux 群组 Linux 组是用于组织和管理 Linux 中的用户帐户的组织单位 组的主要目的是定义一组权限
  • 如何在 Ubuntu 18.04 上设置 DNS 名称服务器

    域名系统 DNS 是网络基础设施的核心部分 提供了一种将域名转换为 IP 地址的方法 您可以将 DNS 视为互联网的电话簿 连接到互联网的每台设备均由其 IP 地址唯一标识 当您在浏览器中输入要访问的网站时 必须将其域名转换为相应的IP地址
  • 如何在 Debian Linux 上挂载 exFAT 驱动器

    exFAT 扩展文件分配表 是 Microsoft 专有的文件系统 针对 SD 卡和 USB 闪存驱动器等闪存设备进行了优化 它旨在取代旧的 32 位 FAT32 文件系统 该系统无法存储大于 4 GB 的文件 所有最新版本的 Window
  • 如何在 CentOS 8 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • 如何在树莓派上安装Java

    Java 是最流行的编程语言之一 用于构建不同类型的应用程序和系统 Java 有两种不同的实现 Oracle Java 和 OpenJDK OpenJDK 是 Java 平台的开源实现 Oracle Java 有一些额外的商业功能和lice
  • 如何在 CentOS 7 上安装 Tomcat 8.5

    本教程向您展示如何在 CentOS 7 上安装 Tomcat 8 5 Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 先决条件 在开始本教程
  • Python 中的 numpy.square()

    Python numpy square 函数返回一个新数组 其元素值作为源数组元素的平方 源数组保持不变 Python numpy square 示例 它是一个快速求矩阵元素平方的实用函数 让我们看一下带有整数 浮点和复数类型数组元素的 n
  • 如何在 Ubuntu 14.04 上安装和保护 phpMyAdmin

    介绍 虽然许多用户需要 MySQL 等数据库管理系统的功能 但他们可能不习惯仅通过 MySQL 提示符与系统交互 php我的管理员创建的目的是让用户可以通过 Web 界面与 MySQL 进行交互 在本指南中 我们将讨论如何安装和保护 php
  • 如何在 CentOS 7 上安装 Elasticsearch、Logstash 和 Kibana(ELK Stack)

    介绍 在本教程中 我们将介绍在 CentOS 7 即 Elasticsearch 2 2 x Logstash 2 2 x 和 Kibana 4 4 x 上安装 Elasticsearch ELK Stack 我们还将向您展示如何使用 Fi