通过Metricbeat实现外部对Elastic Stack的监控
对于Elastic Stack监视的所有用户,建议使用外部数据收集。
概括一下:
关闭Elastic Stack自带的监控功能,然后使用metricbeat收集Elastic Stack数据传输到另外的Elastic Stack监控集群
背景
以前,Elastic Stack中的服务收集并传送了自己的监视数据,该进程称为内部收集进程(internal collection)。
通过引入外部收集,用户可以与各种受监视的服务(例如Elasticsearch)一起运行Metricbeat,以收集有关其运行状况和性能的监视数据并将其直接传送到监视集群。
过去,Stack Monitoring要求先将所有监视数据发送到生产集群,然后再将其转发到监视集群。 这种的设计不是我们所期望的,比如当我们的生产机器收到胁迫时,监视功能也有可能不能正常工作。
过去的设置要求通过生产集群路由监视数据
通过引入Metricbeat作为收集和运输监视数据的代理,不再需要通过生产集群路由监视数据。 现在可以由独立的轻量级监视代理程序收集监视数据,并将其直接发送到监视集群。
使用Metricbeat进行监视,可将所有数据直接路由到监视群集,而完全无需接触生产群集
实践操作
环境配置
使用两个不同的集群来完成
生产集群和监控集群
把两个集群都部署在同一个机器上,但是它们都分别位于不同的目录中。
注意:通过解压安装包的办法来进行安装,并分别在两个不同的目录中进行安装。需要按照上面的配置要求分别配置在Elasticsearch中的config/elasticsearch.yml及Kibana中的config/kibana.yml文件。另外为了能够满足监控的要求,必须对这两个集群分别配置安全账号。
分别访问端口号是5601和5602的kibana,如果能看到两个Kibana的界面,则表明我们的配置已经成功。
生产集群设置
端口为9200的集群是生产集群。为了能对它的数据进行监控,必须对它进行配置。打开端口为5601的Kibana,启用监视数据收集:
PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.collection.enabled": true
}
}
可以通过如下的指令来检查修改后的结果:
GET _cluster/settings
同时禁用生产集群默认的Elasticsearch指标监控:
PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.elasticsearch.collection.enabled": false
}
}
在生产集群上安装Metricbeat
关闭默认启动的system模块,开启elasticsearch-xpack模块
./metricbeat modules disable system
./metricbeat modules enable elasticsearch-xpack
为了能够监控生产集群(127.0.0.1:9200),必须把数据数据采集并发送到监控集群(127.0.0.1:9201),必须配置位于modules.d目录下的elasticsearch-xpack.yml文件
- module: elasticsearch
metricsets:
- ccr
- cluster_stats
- enrich
- index
- index_recovery
- index_summary
- ml_job
- node_stats
- shard
period: 10s
hosts: ["http://localhost:9200"]
username: "elastic"
password: "123456"
xpack.enabled: true
在上面的配置中,它每隔10秒收集位于http://localhost:9200的集群的数据。在上面,采用了elastic这个超级用户,同时你也需要根据自己的密码进行修改。
为了能把数据传入到http://localhost:9201,也需要对metricbeat.yml进行配置:
output.elasticsearch:
hosts: ["localhost:9201"] # 注意使用的是监控集群的端口号
username: "elastic"
password: "123456"
在上面我们把hosts配置为localhost:9201,也就是收集的数据需要传入到这个集群里去。我们也需要根据我们自己的配置,修改上面的用户名及密码。
通过如下的命令来启动metricbeat:
./metricbeat -e
监控集群
打开监控集群的Kibana界面http://localhost:5602
打开Stack Monitoring应用。在上面可以看到被监控的生产环境的端口地址为9200的集群。
总结
可以使用同样的方法来对其它的Elastic Stack进行监控:
- Metricbeat logstash-xpack 模块监控logstash
- Metricbeat beat-xpack 模块监控beats
- Metricbeat kibana-xpack 模块监控Kibana