如何在Ubuntu14.04上使用Topbeat和ELK收集基础设施指标

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

介绍

Topbeat 是帮助将各种类型的服务器数据发送到 Elasticsearch 实例的几个“Beats”数据传送器之一,它允许您收集有关服务器上 CPU、内存和进程活动的信息。 当与 ELK 堆栈(Elasticsearch、Logstash 和 Kibana)一起使用时,Topbeat 可以用作其他系统指标可视化工具的替代品,例如 PrometheusStatsd

在本教程中,我们将向您展示如何使用 ELK 堆栈通过在 Ubuntu 14.04 服务器上使用 Topbeat 来收集和可视化基础设施指标。

先决条件

本教程假设您拥有本教程中描述的 ELK Stack 设置:如何在 Ubuntu 14.04 上安装 Elasticsearch、Logstash 和 Kibana。 如果您还没有 ELK 服务器,请在继续之前完成链接教程。

我们还将假设,除了 ELK 服务器之外,您还有至少一个客户端 Ubuntu 14.04 服务器,您希望使用 Topbeat 从中收集系统指标。

在 ELK 服务器上加载 Kibana 仪表板

注意: 此步骤来自先决条件教程,但也包含在此处,以防您在设置 ELK 堆栈时跳过它。 多次加载示例仪表板是安全的。


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

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

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

使用以下命令安装 unzip 包:

sudo apt-get -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

在 Elasticsearch 中加载 Topbeat 索引模板

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

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

cd ~
curl -O https://raw.githubusercontent.com/elastic/topbeat/master/etc/topbeat.template.json

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

curl -XPUT 'http://localhost:9200/_template/topbeat' -d@topbeat.template.json

现在您的 ELK 服务器已准备好接受来自 Topbeat 的数据。 接下来让我们在客户端服务器上设置 Topbeat。

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

对您希望将指标数据发送到 ELK 服务器上的 Logstash 的每个 Ubuntu 或 Debian 服务器执行这些步骤。 有关在基于 Red Hat 的 Linux 发行版上安装 Topbeat 的说明(例如 RHEL、CentOS 等),请参阅本教程的 CentOS 变体

复制 SSL 证书

注意: 此步骤来自先决条件教程,但也包括在此处,以防您设置的客户端服务器尚未连接到您的 ELK 堆栈。 如果客户端服务器已经在适当的位置拥有 ELK 服务器的 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 包了。

安装 Topbeat 软件包

Client Server 上,确保 Beats 源列表存在。 打开/etc/apt/sources.list.d/beats.list进行编辑:

sudo vi /etc/apt/sources.list.d/beats.list

确保此行存在(如果它不存在,请将其粘贴):

/etc/apt/sources.list.d/beats.list

deb https://packages.elastic.co/beats/apt stable main

保存并退出。

Topbeat 使用与 Elasticsearch 和 Filebeat 相同的 GPG 密钥,可以使用以下命令安装:

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

然后安装 Topbeat 包:

sudo apt-get update
sudo apt-get install topbeat

Tobeat 现在已安装但尚未配置。

配置 Topbeat

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

Client Server 上,创建和编辑 Topbeat 配置文件:

sudo vi /etc/topbeat/topbeat.yml

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


在文件顶部附近,您将看到 input 部分,您可以在其中指定应将哪些指标和统计信息发送到 ELK 服务器。 我们将使用默认输入设置,但您可以随意更改它以满足您的需要。

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

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

topbeat.yml — 1 of 2

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

这会将 Topbeat 配置为通过端口 5044(我们在先决条件教程中指定 Logstash 输入的端口)连接到 ELK 服务器上的 Logstash。

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

topbeat.yml — 2 个中的 2 个

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

这会将 Topbeat 配置为使用我们在先决条件教程中在 ELK 服务器上创建的 SSL 证书。

保存并退出。

现在重新启动 Topbeat 以使我们的更改到位:

sudo service topbeat restart
sudo update-rc.d topbeat defaults 95 10

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

现在,Topbeat 正在将您的客户端服务器的系统、进程和文件系统指标发送到您的 ELK 服务器! 对您希望对其进行 Topbeat 指标的所有其他服务器重复此部分。

测试 Topbeat 安装

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

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

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

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

Sample Output:{
      "_index" : "topbeat-2016.02.01",
      "_type" : "process",
      "_id" : "AVKeLSdP4HKUFv4CjZ7K",
      "_score" : 1.0,
      "_source":{"@timestamp":"2016-02-01T18:51:43.937Z","beat":{"hostname":"topbeat-01","name":"topbeat-01"},"count":1,"proc":{"cpu":{"user":0,"user_p":0,"system":50,"total":50,"start_time":"12:54"},"mem":{"size":0,"rss":0,"rss_p":0,"share":0},"name":"jbd2/vda1-8","pid":125,"ppid":2,"state":"sleeping"},"type":"process","@version":"1","host":"topbeat-01"}
}

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

连接到 Kibana

当您在要为其收集系统统计信息的所有服务器上设置完 Topbeat 后,让我们看看 Kibana。

在 Web 浏览器中,转到 ELK 服务器的 FQDN 或公共 IP 地址。 输入您的 ELK 服务器的凭据后,您应该会看到您的 Kibana Discover 页面。

继续并从 Index Patterns 菜单(左侧)中选择 [topbeat]-YYY.MM.DD 以在 Discover 视图中查看您的 Topbeat 数据:

在这里,您可以搜索并深入了解您的各种 Topbeat 条目。

接下来,您将要查看我们之前加载的示例 Topbeat 仪表板。 单击 Dashboard(顶部),然后单击 Load Saved Dashboard 图标。 导航到仪表板的第二页,然后单击 Topbeat-Dashboard

在这里,您将看到从安装了 Topbeat 的客户端服务器收集的各种指标。

结论

现在您的系统指标通过 Elasticsearch 和 Logstash 集中,并且您可以使用 Kibana 将它们可视化,您应该能够一目了然地看到您的服务器在做什么。 祝你好运!