写在前面的话
这是一篇译文,觉得写得蛮好就翻译了一下,翻译并没有严格按照字句逐句翻译,原文见点击这里,
经过测试,原教程是在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就可以看到具体的日志数据了,如下图: 在这里你可以按照之前的方式对Topbeat数据进行搜索查询。
接下来,如果你想要查看之前导入的样板Topbeat dashboard,则只需点击Dashboard,再点击Load Saved Dashboard图标,然后到第二页点击Topbeat-Dashboard就可以看到系统参数统计图啦
结论:
进过以上的配置,各个服务器的系统信息就可以在ELK服务器上集中管理了。
发布评论