使用 Metricbeat 发送监控数据
Elastic Stack
在 7.3 及更高版本中,您可以使用 Metricbeat 收集关于 APM Server 的数据,并将其发送到监控集群。使用 Metricbeat 而不是内部收集的好处是,即使 APM Server 实例崩溃,监控代理仍然处于活动状态。
要收集和发送监控数据
启用 HTTP 端点以允许外部收集监控数据
在 APM Server 配置文件 (
apm-server.yml
) 中添加以下设置http.enabled: true
默认情况下,指标通过端口 5066 公开。如果您需要监控在同一服务器上运行的多个 Beats shippers,请设置
http.port
以在不同的端口号上公开每个 shipper 的指标。http.port: 5067
禁用 APM Server 监控指标的默认收集。
在 APM Server 配置文件 (
apm-server.yml
) 中添加以下设置monitoring.enabled: false
有关更多信息,请参阅 监控配置选项。
配置主机(可选)。
如果您打算使用安装在另一台服务器上的 Metricbeat 获取指标,则需要将 APM Server 绑定到主机的 IP
http.host: xxx.xxx.xxx.xxx
配置集群 UUID(可选)。
如果您有集群,要在 Kibana 中查看 Beats 监控部分,则需要将 APM Server 与集群 UUID 关联
monitoring.cluster_uuid: "cluster-uuid"
启动 APM Server。
在与 APM Server 相同的服务器上安装 Metricbeat。要了解如何操作,请参阅Metricbeat 入门。如果服务器上已经安装了 Metricbeat,请跳过此步骤。
在 Metricbeat 中启用
beat-xpack
模块。例如,要启用
modules.d
目录中的默认配置,请运行以下命令,使用适合您操作系统的正确命令语法metricbeat modules enable beat-xpack
在 Metricbeat 中配置
beat-xpack
模块。modules.d/beat-xpack.yml
文件包含以下设置- module: beat metricsets: - stats - state period: 10s hosts: ["http://localhost:5066"] #username: "user" #password: "secret" xpack.enabled: true
根据您的环境需要设置
hosts
、username
和password
设置。 对于其他模块设置,建议您接受默认值。默认情况下,该模块从
localhost:5066
收集 APM Server 监控数据。 如果您在启用 HTTP 端点时在不同的主机或端口上公开了指标,请更新hosts
设置。要监控多个 APM Server 实例,请指定一个主机列表,例如
hosts: ["http://localhost:5066","http://localhost:5067","http://localhost:5068"]
如果您配置 APM Server 以使用加密通信,则必须通过 HTTPS 访问它。 例如,使用像
https://localhost:5066
这样的hosts
设置。如果启用了 Elastic 安全功能,您还必须提供用户 ID 和密码,以便 Metricbeat 可以成功收集指标
可选:禁用 Metricbeat 中的 system 模块。
默认情况下,system 模块已启用。 但是,它收集的信息不会显示在 Kibana 中的 Stack Monitoring 页面上。 除非您想将该信息用于其他目的,否则请运行以下命令
metricbeat modules disable system
确定将监控数据发送到哪里。
提示在生产环境中,我们强烈建议使用单独的集群(称为监控集群)来存储数据。 使用单独的监控集群可以防止生产集群中断影响您访问监控数据的能力。 它还可以防止监控活动影响生产集群的性能。
例如,在 Metricbeat 配置文件 (
metricbeat.yml
) 中指定 Elasticsearch 输出信息output.elasticsearch: # Array of hosts to connect to. hosts: ["http://es-mon-1:9200", "http://es-mon2:9200"] # Optional protocol and basic auth credentials. #protocol: "https" #api_key: "id:api_key" #username: "elastic" #password: "changeme"
- 在此示例中,数据存储在具有节点
es-mon-1
和es-mon-2
的监控集群上。 - 指定
api_key
或username
/password
之一。
如果您配置监控集群以使用加密通信,则必须通过 HTTPS 访问它。 例如,使用像
https://es-mon-1:9200
这样的hosts
设置。重要提示Elasticsearch 监控功能使用 ingest pipelines,因此存储监控数据的集群必须至少有一个 ingest 节点。
如果在监控集群上启用了 Elasticsearch 安全功能,您必须提供有效的用户 ID 和密码,以便 Metricbeat 可以成功发送指标
在监控集群上创建一个具有
remote_monitoring_agent
内置角色的用户。 或者,如果在您的环境中可用,请使用remote_monitoring_user
内置用户。提示如果您使用索引生命周期管理,远程监控用户需要额外的权限才能创建和读取索引。 有关更多信息,请参阅 使用功能角色。
将
username
和password
设置添加到 Metricbeat 配置文件中的 Elasticsearch 输出信息。
有关这些配置选项的更多信息,请参阅 配置 Elasticsearch 输出。
- 在此示例中,数据存储在具有节点
启动 Metricbeat 以开始收集监控数据。