正在加载

使用 Metricbeat 发送监控数据

Elastic Stack

在 7.3 及更高版本中,您可以使用 Metricbeat 收集关于 APM Server 的数据,并将其发送到监控集群。使用 Metricbeat 而不是内部收集的好处是,即使 APM Server 实例崩溃,监控代理仍然处于活动状态。

要收集和发送监控数据

  1. 配置要监控的 shipper
  2. 安装和配置 Metricbeat 以收集监控数据
  1. 启用 HTTP 端点以允许外部收集监控数据

    在 APM Server 配置文件 (apm-server.yml) 中添加以下设置

    http.enabled: true
    

    默认情况下,指标通过端口 5066 公开。如果您需要监控在同一服务器上运行的多个 Beats shippers,请设置 http.port 以在不同的端口号上公开每个 shipper 的指标。

    http.port: 5067
    
  2. 禁用 APM Server 监控指标的默认收集。

    在 APM Server 配置文件 (apm-server.yml) 中添加以下设置

    monitoring.enabled: false
    

    有关更多信息,请参阅 监控配置选项

  3. 配置主机(可选)。

    如果您打算使用安装在另一台服务器上的 Metricbeat 获取指标,则需要将 APM Server 绑定到主机的 IP

    http.host: xxx.xxx.xxx.xxx
    
  4. 配置集群 UUID(可选)。

    如果您有集群,要在 Kibana 中查看 Beats 监控部分,则需要将 APM Server 与集群 UUID 关联

    monitoring.cluster_uuid: "cluster-uuid"
    
  5. 启动 APM Server。

  1. 在与 APM Server 相同的服务器上安装 Metricbeat。要了解如何操作,请参阅Metricbeat 入门。如果服务器上已经安装了 Metricbeat,请跳过此步骤。

  2. 在 Metricbeat 中启用 beat-xpack 模块。

    例如,要启用 modules.d 目录中的默认配置,请运行以下命令,使用适合您操作系统的正确命令语法

    metricbeat modules enable beat-xpack
    

    有关更多信息,请参阅 配置模块beat 模块

  3. 在 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
    

    根据您的环境需要设置 hostsusernamepassword 设置。 对于其他模块设置,建议您接受默认值。

    默认情况下,该模块从 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 可以成功收集指标

    1. 在 Elasticsearch 集群上创建一个具有 remote_monitoring_collector 内置角色的用户。或者,如果在您的环境中可用,请使用 remote_monitoring_user 内置用户
    2. usernamepassword 设置添加到 beat 模块配置文件。
  4. 可选:禁用 Metricbeat 中的 system 模块。

    默认情况下,system 模块已启用。 但是,它收集的信息不会显示在 Kibana 中的 Stack Monitoring 页面上。 除非您想将该信息用于其他目的,否则请运行以下命令

    metricbeat modules disable system
    
  5. 确定将监控数据发送到哪里。

    提示

    在生产环境中,我们强烈建议使用单独的集群(称为监控集群)来存储数据。 使用单独的监控集群可以防止生产集群中断影响您访问监控数据的能力。 它还可以防止监控活动影响生产集群的性能。

    例如,在 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"
    
    1. 在此示例中,数据存储在具有节点 es-mon-1es-mon-2 的监控集群上。
    2. 指定 api_keyusername/password 之一。

    如果您配置监控集群以使用加密通信,则必须通过 HTTPS 访问它。 例如,使用像 https://es-mon-1:9200 这样的 hosts 设置。

    重要提示

    Elasticsearch 监控功能使用 ingest pipelines,因此存储监控数据的集群必须至少有一个 ingest 节点。

    如果在监控集群上启用了 Elasticsearch 安全功能,您必须提供有效的用户 ID 和密码,以便 Metricbeat 可以成功发送指标

    1. 在监控集群上创建一个具有 remote_monitoring_agent 内置角色的用户。 或者,如果在您的环境中可用,请使用 remote_monitoring_user 内置用户

      提示

      如果您使用索引生命周期管理,远程监控用户需要额外的权限才能创建和读取索引。 有关更多信息,请参阅 使用功能角色

    2. usernamepassword 设置添加到 Metricbeat 配置文件中的 Elasticsearch 输出信息。

    有关这些配置选项的更多信息,请参阅 配置 Elasticsearch 输出

  6. 启动 Metricbeat 以开始收集监控数据。

  7. 在 Kibana 中查看监控数据.

© . All rights reserved.