使用 Metricbeat 发送监控数据
编辑使用 Metricbeat 发送监控数据
编辑在 7.3 及更高版本中,您可以使用 Metricbeat 收集有关 Metricbeat 的数据并将其发送到监控集群。与内部收集相比,使用 Metricbeat 的好处是,即使 Metricbeat 实例崩溃,监控代理也会保持活动状态。
由于您将使用 Metricbeat 来_监控_ Metricbeat,因此您需要运行两个 Metricbeat 实例:一个主实例,用于收集服务器上运行的系统和服务的指标;另一个实例,仅收集 Metricbeat 的指标。使用单独的实例作为监控代理允许您将监控数据发送到专用的监控集群。如果主代理关闭,监控代理将保持活动状态。
如果您将 Metricbeat 作为服务运行,则此方法需要额外的工作,因为您需要同时运行两个已安装服务的实例。如果您不想同时运行两个实例,请使用内部收集,而不是使用 Metricbeat。
收集和发送监控数据
配置您要监控的发送器
编辑-
启用 HTTP 端点以允许外部收集监控数据
在 Metricbeat 配置文件(
metricbeat.yml
)中添加以下设置:http.enabled: true
默认情况下,指标在 5066 端口上公开。如果您需要监控在同一服务器上运行的多个 Beats 发送器,请设置
http.port
以在不同的端口号上为每个发送器公开指标。http.port: 5067
-
禁用 Metricbeat 监控指标的默认收集。
在 Metricbeat 配置文件(
metricbeat.yml
)中添加以下设置:monitoring.enabled: false
更多信息,请参见监控配置选项。
-
配置主机(可选)。
如果您打算使用安装在另一台服务器上的 Metricbeat 获取指标,则需要将 Metricbeat 绑定到主机的 IP 地址。
http.host: xxx.xxx.xxx.xxx
-
配置集群 UUID。
如果您想在 Kibana 堆栈监控视图中查看 Beats 监控,则需要集群 UUID。监控数据将在此 UUID 的集群下分组。要将 Metricbeat 与集群 UUID 关联,请设置:
monitoring.cluster_uuid: "cluster-uuid"
- 启动 Metricbeat。
安装和配置 Metricbeat 以收集监控数据
编辑-
下一步取决于您希望如何运行 Metricbeat。
- 如果您以服务方式运行并希望运行单独的监控实例,请按照您的环境要求执行的步骤,以服务方式运行两个 Metricbeat 实例。执行此操作的步骤因平台而异,不在本文档的讨论范围之内。
- 如果您直接在前台运行二进制文件并希望运行单独的监控实例,请将 Metricbeat 安装到不同的路径。如有必要,请设置
path.config
、path.data
和path.log
以指向正确的目录。有关默认位置,请参见目录布局。
-
在 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: ["https://127.0.0.1:5066"] #username: "user" #password: "secret" xpack.enabled: true
根据您的环境需要设置
hosts
、username
和password
设置。对于其他模块设置,建议您接受默认值。默认情况下,该模块从
localhost:5066
收集 Metricbeat 监控数据。如果您在启用 HTTP 端点时在不同的主机或端口上公开指标,请更新hosts
设置。要监控多个 Beats 代理,请指定主机列表,例如:
hosts: ["https://127.0.0.1:5066","https://127.0.0.1:5067","https://127.0.0.1:5068"]
如果您配置 Metricbeat 使用加密通信,则必须通过 HTTPS 访问它。例如,使用
hosts
设置,例如https://127.0.0.1:5066
。如果启用了 Elastic 安全功能,您还必须提供用户 ID 和密码,以便 Metricbeat 能够成功收集指标。
-
可选:在 Metricbeat 中禁用 system 模块。
默认情况下,system 模块 已启用。但是,它收集的信息不会显示在 Kibana 中的堆栈监控页面上。除非您想将这些信息用于其他目的,否则请运行以下命令:
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"
如果您将监控集群配置为使用加密通信,则必须通过 HTTPS 访问它。例如,使用
hosts
设置,例如https://es-mon-1:9200
。Elasticsearch 监控功能使用摄取管道。存储监控数据的集群必须至少有一个具有
ingest
角色的节点。如果在监控集群上启用了 Elasticsearch 安全功能,则必须提供有效的用户 ID 和密码,以便 Metricbeat 能够成功发送指标。
-
在监控集群上创建一个具有
remote_monitoring_agent
内置角色 的用户。或者,如果您的环境中可用,请使用remote_monitoring_user
内置用户。如果您使用索引生命周期管理,则远程监控用户需要其他权限才能创建和读取索引。更多信息,请参见授予用户访问受保护资源的权限。
- 将
username
和password
设置添加到 Metricbeat 配置文件中的 Elasticsearch 输出信息。
有关这些配置选项的更多信息,请参见配置 Elasticsearch 输出。
-
- 启动 Metricbeat 以开始收集监控数据。
- 在 Kibana 中查看监控数据.