开源软件

如何配置 Topbeat并使用 Kibana 进行集中化检视

系列教程

这是在 Ubuntu 14.04 上使用 ELK 集中化日志系列教程中的第二篇。该系列共有4篇,其他2篇敬请期待~

关于 Topbeat

Topbeat 定期收集系统信息如每个进程信息、负载、内存、磁盘等等,然后将数据发送到 Elasticsearch 进行索引。当你使用 ELK Stack 的时候, Topbeat 可以作为其他服务监控系统(如 Prometheus 或 Statsd )的替代品。

写在前面

这篇文章建立在你已经按照本系列教程的第一篇文章完成了 ELK Stack 的配置,如果你还没有 ELK Stack 的配置,请你先按照第一篇文章配置好 ELK Stack 之后,再参照这篇文章进行 Topbeat 的配置。

我们同时假定除了你的 ELK 服务器之外,你至少有一台运行着 Ubuntu 14.04 的机器用于收集系统信息。

在 ELK 服务器上装载 Kibana 仪表盘

注意:这一部分的步骤其实包含于本系列的第一篇文章中,为了防止你在配置 ELK Stack 的时候不小心跳过了这一步,我们也将其纳入到这篇文章中。
Elastic 提供了几种 Kibana 的仪表盘样例和 beat 索引模式,来帮助你开始使用 Kibana。虽然在我们的教程中不会使用仪表盘,但是不管怎么我们都可以用它包含的 Filebeat 和索引模式加载它们。
首先,下载仪表盘样例,存到你的 home 目录:

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

安装 unzip 包:

unzip beats-dashboards-*.zip

然后加载仪表盘样例、可视化和 beat 索引模式到 Elasticsearch

cd beats-dashboards-*
./load.sh</code></p>

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

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

Elasticsearch 中导入 Topbeat 引索模板

因为我们将通过 Topbeat 来向 Elasticsearch 中导入日志文件,引索模板能够帮助 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 系的,那请参照这篇教程

1、复制 SSL 安全证书

注意:如果你的客户端已经连接过你的 ELK Stack 服务器并拥有正确的 SSL 安全证书,那么你可以跳过这一步。
从你的 ELK Stack 服务器上拷贝 SSL 安全证书 到你的客户端中。

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

提交你的登录凭据之后,请确认 SSL 安全证书已经正确拷贝。然后回到你的客户端上,复制刚刚的 SSL 安全证书到他所属的目录下( /etc/pki/tls/certs )

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

完成了上述步骤之后,我们就可以开始安装 Topbeat 了。

2、安装 Topbeat 包

在客户端上确认 Beats 的源列表( Beats source list )存在,步骤如下:

打开 /etc/apt/sources.list.d/beats.list 以进行编辑

sudo vi /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

安装好 Topbeat 之后,下一步就是配置啦!

3.配置 Topbeat

在这一步中,我们将配置 Topbeat 使它连接到 ELK 服务器上的 Logstash 上去。这一节中我们将通过修改 Topbeat 的默认配置文件来完成对 Topbeat 的配置。

在客户端上打开 Topbeat 的配置文件:

sudo vi /etc/topbeat/topbeat.yml

注意:Topbeat 的配置文件是 YAML 格式,所以其对格式的要求非常高,注意要采用与原配置文件相同的缩进格式。

在该配置文件的首部是 input 小节,在这一小节中,你需要指定你要把什么类型的统计数据传到你的 ELK 服务器上,并且指定这些统计数据的单位。在这里我们将使用默认配置,但如果有需要的话你也可以自己做出更改。

output 小节下面,找到内容为 elasticsearch: 的一行,其下面的代码配置了 Elasticsearch 输出,这是我们不需要用到的,删除或者注释掉他们(直到 #logstash: 的上面一行)。

然后找到被注释掉的 Logstash 输出语句 #logstash: ,去掉它的注释使它能够作用。

同时,去掉 hosts: ["localhost:5044"] 的注释,并且将 localhost 换成你 ELK 服务器的 IP 地址,实例如下:

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

这段代码配置 Topbeat 使其通过 5044 端口连接到你 ELK 服务器上的 Logstash 。需要注意的是,这个端口号我们应与我们在上一篇文章中设置的一致。

接下来,找到 tls 小节,并去掉它的注释。然后去掉标识为 certificate_authorities 一行的注释,并将其值更改为 ["/etc/pki/tls/certs/logstash-forwarder.crt"]. ,更改后的配置文件应该是这样的:

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

这段代码配置 Topbeat 使用我们在上一篇文章中创建的 SSL 安全证书进行连接。

现在,让我们重启 Topbeat 使我们的改变生效:

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

如果你不确定你的配置是否正确,请与示例文件进行对比。

完成了上述这些之后,你的客户端就已经在向 ELK 服务器上的 Logstash 发送数据了!在你的每一台客户端上重复上述步骤。

测试 Topbeat 是否正确安装

如果你的 ELK Stack 已经正确配置,那么你客户端上的 Topbeat 应该已经开始往你的 ELK 服务器上的 Logstash 发送日志文件,而 Logstash 应该把上述的日志文件加上时间戳在 Elasticsearch 中创建 topbeat-YYYY.MM.DD. 这样的饿索引。

在你的 ELK 服务器上面执行下列命令以确定 Elasticsearch 确实在以询问 Topbeat 引索的方式接收信息。

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

你将得到这样的输出:

{
      "_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"}
}

在上面的输出中,如果 total 显示为 0 ,那么表示 Elasticsearch 没有任何 Topbeat 的数据,你需要重新安装并查错。

反之,如果你得到了像上面一样的输出,那么请继续下一步。

连接 Kibana

当你在所有的客户端上面都完成了 Topbeat 配置之后,你难免会想要比较各个客户端的状态,让我们使用 Kibana 吧!

在任意一个浏览器,在地址栏键入你 ELK 服务器的 FQDN 或者公网 IP ,登陆之后你将会看到 Kibana Discover 页面(如下图所示)。

从左侧边栏选择明为 [topbeat]-YYY.MM.DD 的记录,在右侧查看记录详情。

topbeat-index-select

在这个页面你可以搜索你的 Topbeat 记录。

如果你想要查看我们之前导入的 Topbeat 仪表盘,那么请按下面的方式操作:

点击位于顶部的 Dashboard 按钮,然后点击 Load Saved Dashboard ,然后进入列表的第二页,点击 Topbeat-Dashboard

topbeat-view-dashboard

结语

现在,你的整个系统都由 Elasticsearch 和 Logstash 集中管理,你可以通过 Kibana 动态监视他们。


 

原文链接:https://www.digitalocean.com/community/tutorials/how-to-gather-infrastructure-metrics-with-topbeat-and-elk-on-ubuntu-14-04

译文链接: http://www.linuxstory.org/how-to-gather-infrastructure-metrics-with-topbeat-and-elk-on-ubuntu-14-04

转载请注明出处,否则必究相关责任!

对这篇文章感觉如何?

太棒了
0
不错
0
爱死了
0
不太好
0
感觉很糟
0

You may also like

1 Comment

  1. Expression of profibrotic and renin angiotensin system RAS genes in the left ventricle LV of Dahl salt sensitive DS rats in the five experimental groups at 11 weeks of age finasteride online worldwide delivery Br J Surg 2004; 91 6 699 704

Leave a reply

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

More in:开源软件

开源软件

嵌入式 Linux 的瑞士军刀:BusyBox

上期文章中,笔者向各位介绍了 musl,一个 Glibc 的替代方案,它的主要优势体现在更加整洁的代码、更小的二进制体积和更优秀的静态链接支持。而本期文章的主角:BusyBox 则是 GNU Core […]
开源项目

Pwnagotchi 开箱教程

Pwnagotchi 是一个由 Bettercap 驱动的 A2C 的 “AI”,它能够从周围的 WiFi 环境中学习,以最大限度地利用它捕获的可破解 WPA 密钥材料,该材料将作为可被 hashcat 破解的 PCAP 文件收集在磁盘上。 简单来说,Pwnagotchi ...
开源软件

光速上手C++20协程

今天来学习下怎么使用基于C++20设计开发的协程框架async_simple(https://github.com/alibaba/async_simple)。async_simple是阿里巴巴开源的轻量级C++异步框架。提供了基于C++20无栈协程(Lazy),有栈协程(Uthread)以及Future/Promise等异步组件。连续两年经历天猫双十一磨砺,承担了亿级别流量洪峰,具备高性能和高稳定性。