Beats:通过 Metricbeat 实现外部对 Elastic Stack 的监控

自 Elastic 7.5 发布开始,通过外部监控 Elastic Stack 已经全面实施。 可以通过 Metricbeat 模块监视 Elasticsearch,Kibana,Logstash,APM 服务器和 Beats。

使用外部收集,用户现在可以收集和发送其 Elastic Stack 的监视数据,而不必依赖于受监视服务的运行状况。 此版本大大提高了用于监视 Elastic Stack 可靠性和选则的灵活性。 对于 Elastic Stack 监视的所有用户,建议使用外部数据收集。

 

一点背景

以前,Elastic Stack 中的服务收集并传送了自己的监视数据,该进程称为内部收集进程(internal collection)。

通过引入外部收集,用户可以与各种受监视的服务(例如 Elasticsearch)一起运行 Metricbeat,以收集有关其运行状况和性能的监视数据并将其直接传送到监视集群。

过去,Stack Monitoring 要求先将所有监视数据发送到生产集群,然后再将其转发到监视集群。 这种的设计不是我们所期望的,比如当我们的生产机器收到胁迫时,监视功能也有可能不能正常工作。

 

                                                                  过去的设置要求通过生产集群路由监视数据

通过引入 Metricbeat 作为收集和运输监视数据的代理,不再需要通过生产集群路由监视数据。 现在可以由独立的轻量级监视代理程序收集监视数据,并将其直接发送到监视集群。

                               使用 Metricbeat 进行监视,可将所有数据直接路由到监视群集,而完全无需接触生产群集

动手实践

安装 Elasticsearch 及 Kibana

在今天的练习中,我们将使用两个不同的集群来完成我们的练习:

我们把两个集群都部署在我们的同一个机器上,但是它们都分别位于不同的目录中。如果你还没有安装好自己的集群,那么请参阅我之前的文章 “Elastic:菜鸟上手指南” 来进行安装。请注意:我们通过解压安装包的办法来进行安装,并分别在两个不同的目录中进行安装。我们需要按照我上面的配置要求分别配置在 Elasticsearch 中的 config/elasticsearch.yml 及 Kibana 中的 config/kibana.yml 文件。另外为了能够满足监控的要求,我们必须对这两个集群分别配置安全账号。请参阅文章 “Elasticsearch:设置Elastic账户安全”。

通过这样的配置后,我们可以得到两个集群:

如果你能看到上面的两个 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

为了能够实现对 Elasticsearch 的外部监控,我们必须安装 Metricbeat。我们打开上面的任何一个 Kibana 界面:

点击 Add metric data 按钮:

点击上面的 System metrics:

我们选择我们电脑相匹配的操作系统。在上面我们可以看到相应安装 Metricbeat 的指令。通过这样的方法,我们可以安装好和我们的 Elasticsearch 相匹配的 Metricbeat 的版本。我们可以先不要按照上面的指令来启动 system 模块,尽管 system 模块在默认的情况下已经被启动。我们可以通过如下的指令来查看所有已经启动的模块:

./metricbeat modules list

在上面我们可以看到 elasticsearch-xpack 模块已经被成功地启动了。我们可以通过如下的指令来启动:

./metricbeat modules enable elasticsearch-xpack

如果你的 system 模块已经被启动,你可以通过如下的方式来禁止这个模块:

./metricbeat modules disable system

为了能够使得我们监控生产集群(127.0.0.1:9200),我们必须把数据数据采集并发送到监控集群(127.0.0.1:9201),我们必须配置位于 modules.d 目录下的 elasticsearch-xpack.yml 文件

$ pwd
/Users/liuxg/elastic8/metricbeat-7.6.0-darwin-x86_64
liuxg:metricbeat-7.6.0-darwin-x86_64 liuxg$ ls modules.d/elasticsearch-xpack.yml 
modules.d/elasticsearch-xpack.yml

根据我们的要求,我做了如下的配置:

# Module: elasticsearch
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.6/metricbeat-module-elasticsearch.html

- 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 进行配置:

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9201"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"
  password: "123456"

在上面我们把 hosts 配置为 localhost:9201,也就是收集的数据需要传入到这个集群里去。我们也需要根据我们自己的配置,修改上面的用户名及密码。

经过上面的配置后,我们的 Metricbeat 的配置已经完成,我们可以通过如下的命令来启动 Metricbeat:

./metricbeat -e

 

监控 Elasticsearch

接下来,我们打开监控集群的 Kibana 界面 http://localhost:5602:

我们打开 Stack Monitoring 应用。在上面我们可以看到被监控的生产环境的端口地址为 9200 的集群。在上面显示有一个 nodes 及8个索引。点击上面的 Overview:

点击上面的 nodes:

它显示我们当前的生产集群的 node 的总览情况。点击上面的 liuxg 超链接:

我们可以看到这个 node 的内存,IO,CPU 等统计情况。点击上面的 Advanced:

点击应用入口的 Indices:

我们可以看到所有的索引的状态。

 

总结

在今天的文章中,我们展示了如何使用 Metricbeat 来对 Elasticsearch 进行外部的监控。我们可以使用同样的方法来对其它的 Elastic Stack 进行监控:

  • Metricbeat logstash-xpack 模块监控 Logstash

  • Metricbeat beat-xpack 模块监控 beats

  • Metricbeat kibana-xpack 模块监控 Kibana

剩下的练习就留给你们来研究了。

参考:

【1】https://www.elastic.co/blog/external-collection-for-elastic-stack-monitoring-is-now-available-via-metricbeat

【2】https://www.elastic.co/guide/en/elasticsearch/reference/7.6/configuring-metricbeat.html

已标记关键词 清除标记
相关推荐