使用 Metricbeat 发送监控数据

编辑

使用 Metricbeat 发送监控数据

编辑

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

由于您将使用 Metricbeat 来监控 Metricbeat,因此您需要运行两个 Metricbeat 实例:一个主实例,用于从服务器上运行的系统和服务收集指标;第二个实例,仅用于从 Metricbeat 收集指标。使用单独的实例作为监控代理,您可以将监控数据发送到专用的监控集群。如果主代理出现故障,监控代理仍然保持活动状态。

如果您以服务形式运行 Metricbeat,则此方法需要额外的工作,因为您需要同时运行同一安装服务的两个实例。如果您不想同时运行两个实例,请使用内部收集,而不是使用 Metricbeat。

要收集和发送监控数据

配置您要监控的发送器

编辑
  1. 启用 HTTP 端点以允许外部收集监控数据

    在 Metricbeat 配置文件 (metricbeat.yml) 中添加以下设置

    http.enabled: true

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

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

    在 Metricbeat 配置文件 (metricbeat.yml) 中添加以下设置

    monitoring.enabled: false

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

  3. 配置主机(可选)。

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

    http.host: xxx.xxx.xxx.xxx
  4. 配置集群 UUID。

    如果您想在 Kibana 堆栈监控视图中查看 Beats 监控,则集群 UUID 是必需的。监控数据将在此 UUID 的集群下进行分组。要将 Metricbeat 与集群 UUID 关联,请设置

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

安装和配置 Metricbeat 以收集监控数据

编辑
  1. 下一步取决于您要如何运行 Metricbeat

    • 如果您以服务形式运行并希望运行单独的监控实例,请采取您的环境所需的步骤来以服务形式运行两个 Metricbeat 实例。执行此操作的步骤因平台而异,超出本文档的范围。
    • 如果您直接在前台运行二进制文件并希望运行单独的监控实例,请将 Metricbeat 安装到不同的路径。如有必要,请设置 path.configpath.datapath.log 以指向正确的目录。有关默认位置,请参阅目录布局
  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: ["https://127.0.0.1:5066"]
      #username: "user"
      #password: "secret"
      xpack.enabled: true

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

    默认情况下,该模块从 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 访问它。例如,使用类似 https://127.0.0.1:5066hosts 设置。

    如果启用了 Elastic 安全功能,您还必须提供用户 ID 和密码,以便 Metricbeat 可以成功收集指标

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

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

    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"

    在此示例中,数据存储在节点为 es-mon-1es-mon-2 的监控集群上。

    指定 api_keyusername/password 之一。

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

    Elasticsearch 监控功能使用摄取管道。存储监控数据的集群必须至少有一个具有 ingest 角色的节点。

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

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

      如果您正在使用索引生命周期管理,则远程监控用户需要额外的权限才能创建和读取索引。有关更多信息,请参阅授予用户对安全资源的访问权限

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

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

  6. 启动 Metricbeat以开始收集监控数据。
  7. 在 Kibana 中查看监控数据.