Topbeat作为“Beats”系列方案之一,旨在帮助我们将各类服务器数据发送至Elasticsearch实例,从而收集与服务器CPU、内存以及处理活动相关的信息。在配合ELK堆栈(即Elasticsearch、Logstash与Kibana)时,Topbeat能够充当系统指标可视化工具,其作用与Prometheus或者Statsd基本一致。
在本教程中,我们将探讨如何利用ELK堆栈与Topbeat在Ubuntu 14.04服务器上收集基础设施指标并进行可视化处理。
先决条件
要完成本教程,大家需要拥有一套ELK堆栈。
除了ELK服务器外,大家还需要至少拥有一套客户Ubuntu 14.04服务器作为系统指标收集对象。
在ELK服务器上加载Kibana仪表板
注意:本步骤属于先决条件之一,如果大家已经设置完成ELK堆栈,则可直接跳过。另外,如果出现问题,可以尝试反复加载示例仪表板。
Elastic提供多种示例性Kibana仪表板与Beats索引模型,能够帮助大家快速上手Kibana。尽管我们在本教程中无需使用仪表板,但仍需要将其加载至ELK服务器中以使用由其提供的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
向Elasticsearch中载入示例仪表板、可视化与Beats目录模型:
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(添加客户服务器)
我们需要在作为指标数据收集目标的Ubuntu或者Debian服务器上执行以下步骤。对于以红帽为基础的Linux发行版(例如RHEL或CentOS)。
复制SSL证书
注意:此步骤为先决条件的组成部分,如果大家的客户服务器已经具备ELK服务器的SSL证书,则可直接跳过。
在ELK服务器上,将此前教程中创建完成的SSL证书复制到客户服务器当中:
scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp
在此之后,确保该证书复制成功。我们需要利用此证书实现客户服务器与ELK服务器间的通信。
现在在客户服务器上将ELK服务器的SSL证书复制到适当位置(/etc/pki/tls/certs):
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
这样我们就能够安装Topbeat软件包了。
安装Topbeat软件包
在客户服务器上,确保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。在这部分内容中,我们需要对示例配置文件进行修改。在完整各步骤时,大家应当确保拥有https://gist.github.com/thisismitch/0f2872d078a2c88cba4c示例文件。
在客户服务器上,创建并编辑Topbeat配置文件:
sudo vi /etc/topbeat/topbeat.yml
注意:Topbeat的配置文件为YAML格式,意味着缩进非常重要!大家要确保在各指令前使用正确的空格数量。
在文件开头处,大家会看到input部分,在这里我们可以指定向ELK服务器发送哪些指标与统计结果。这里我们使用默认输入设置,但大家也可以根据需求随意变更。
在output部分内,找到elasticsearch:一行,其代表着Elasticsearch的输出设置(在本示例中不会用到)。将其删除或者标记为注释(直到#logstash:一行)。
找到作为注释的Logstash output部分,即#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上接入ELK服务器上的Logstash(我们在此前教程中指定该端口接收Logstash输入)。
接下来,找到tls部分并取消其注释。而后,取消掉指定certificate_authorities一行的注释,将其值变更为[“/etc/pki/tls/certs/logstash-forwarder.crt”]。修改后其内容应如下:
topbeat.yml — 2 of 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示例配置(https://gist.github.com/thisismitch/0f2872d078a2c88cba4c)进行比对。
现在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"}
}
如果输出结果完全不符,则代表Elasticsearch并没有加载任何正在搜索的Topbeat数据,这时我们应当检查设置。如果输出结果符合预期,则继续进行下一步。
接入Kibana
在浏览器中,前往ELK服务器的FQDN或者公共IP地址。在输入ELK服务器凭证后,大家应该看到Kibana Discover页面。
前往Index Patterns菜单(左侧)并选定[topbeat]-YYY.MM.DD,从而查看Discover视图中的Topbeat数据:
在这里,大家可以搜索并查看各类Topbeat条目。
接下来,大家可能需要检查我们之前加载完成的示例Topbeat仪表板。点击Dashboard(顶部)而后点击Load Saved Dashboard图标。导航至仪表板的第二页面,而后点击Topbeat-Dashboard:
在这里,我们会看到多条收集自客户服务器的指标。
总结
现在我们的系统指标已经通过Elasticsearch与Logstash实现了集中组织,大家也能够利用Kibana将其转换为可视化结果。