写在前面的话

这是一篇译文,觉得写得蛮好就翻译了一下,翻译并没有严格按照字句逐句翻译,原文见点击这里

经过测试,原教程是在ubuntu 14.04上搭建,但是可以在12.04和16.04上正常搭建成功!

简介

Topbeat是“Beats”数据收集系类工具中用来帮助用户发送多种监控数据到ELK服务的工具。其可以方便的帮你收集客户端服务器上关于CPU、内存、活跃进程的数据。当配合ELK框架使用时,可以作为Prometheus和Statsd的代替。

在这篇文章中,我们将教你如何在Ubuntu 14.04上使用ELK服务和Topbeat进行服务器基础信息监控。

准备工作

这边文章默认人为你已经按照之前的文章:[翻译文]搭建日志管理系统ELK(Elasticsearch,Logstash,Kibana)已经配置好ELK服务。如果你还没有配置,那么请参照前面的文章进行配置

当然,我们除了ELK服务以外还需要一个其他的服务器,用来作为系统信息的提供者,供Topbeat来收集。

加载Kibana Dashboard 模板

此内容已经在前一篇文中设置过,具体可以查看前文。

加载Topbeat 索引模板到Elasticsearch

因为我们需要用Topbeat来传送系统信息到ELK服务器,因此我们需要加载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

下面的配置步骤是基于Ubuntu或Debian系统,如果你希望在基于Red Hat的linux发行版(比如: RHEL、CentOS等)上配置,请点击此配置文档

复制SSL证书

注意:这个步骤在前一篇文中也提过,如果你在某台咖啡机上设置了Filebeat,这个时候你就不用重新设置了,因为再前面的配置中你已经复制过这个证书了,这里再次给出简单的设置步骤

# 通过scp传送SSL证书
scp -P ssh_port /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

# 放置证书在正确的文件夹中:
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
安装Topbeat

在客户端服务器,我们需要确认一下Beats的软件源存不存在,打开/etc/apt/sources.list.d/beats.list,如果存在一下内容,则无需再添加

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

如果没有则添加上该内容:

echo "deb https://packages.elastic.co/beats/apt stable main" |  sudo tee -a /etc/apt/sources.list.d/beats.list

Topbeat使用的GPG key和Elasticsearch及Filebeat是一样的,可以通过一下命令添加:

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

然后安装Topbeat:

sudo apt-get update
sudo apt-get install topbeat

至此Topbeat就安装好了,但缺少配置。

国内(阿里云)用apt-get方法有时无法解析下载连接地址域名,因此可以直接在官网下载.deb包,然后再安装

sudo dpkg -i topbeat_1.3.1_amd64.deb

配置Topbeat

现在我们将要配置Topbeat,让其可以把数据发送到我们的ELK服务器上。

编辑Topbeat的配置文件:/etc/topbeat/topbeat.yml

在文件的开头,可以找到input项,在这里你可以配置哪些系统参数需要被传送到ELK服务器。这里我们使用了默认的输入设置,但是你可以进行相应的修改满足你自己的需求。

在这个配置项中,原文档是保持默认,但是建议可以根据自己的需求,修改period项,默认是10秒一次,可以改的时间再长一点

在output项中,找到elasticsearch项,把这个整个配置项都注释掉,因为我们的Topbeat是发送数据到Logstash而不是直接到Elasticsearch。

然后找到logstash项,去掉注释,然后进行如下的配置:

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

上面内容配置了ELK服务器的地址,让Topbeat知道发送到那个服务上。

接下来我们需要配置其tls项,此项是用于信息传输的SSL认证用的

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

最后保存,然后设置开机启动和重启Topbeat

建议再找到shipper配置项,把其中的name配置项改为你自己的名字,比如test0001,这样会比较方便的确定具体是那台服务器的数据,默认是服务器的hostname,一般比较难辨别。

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

至此,如果设置都ok,那么Topbeat就会发送客户端服务器的基础监控信息到ELK服务器上啦。

测试Topbeat是否安装配置正确

如果你的ELK服务器设置正确,那么Topbeat就已经可以传送你的系统基础信息日志到ELK服务器了。Logstash就会把Topbeat传送过来的Topbeat数据存储到Elasticsearch的时间戳格式的索引中(topbeat-YYYY.MM.DD

在ELK服务端,输入一下命令进行验证: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 total hits则说明哪里配置出错了,需要根据上面的步骤仔细检查一下。

在Kibana查看Topbeat数据

打开Kibana,在Discover页左侧的索引版面选择 [topbeat]-YYY.MM.DD就可以看到具体的日志数据了,如下图: alt 在这里你可以按照之前的方式对Topbeat数据进行搜索查询。

接下来,如果你想要查看之前导入的样板Topbeat dashboard,则只需点击Dashboard,再点击Load Saved Dashboard图标,然后到第二页点击Topbeat-Dashboard就可以看到系统参数统计图啦 alt

结论:

进过以上的配置,各个服务器的系统信息就可以在ELK服务器上集中管理了。