使用 Metricbeat 收集 Elasticsearch 监控数据

编辑

使用 Metricbeat 收集 Elasticsearch 监控数据

编辑

在 6.5 及更高版本中,您可以使用 Metricbeat 来收集有关 Elasticsearch 的数据并将其发送到监控集群,而不是像 旧版收集方法 中所述的那样通过导出器路由数据。

想要改用 Elastic Agent 吗?请参阅 使用 Elastic Agent 收集监控数据

Example monitoring architecture
  1. 安装 Metricbeat。理想情况下,安装一个配置了 scope: cluster 的 Metricbeat 实例,并将 hosts 配置为指向一个端点(例如,一个负载均衡代理),该端点将请求定向到集群中不符合主节点条件的节点。如果这不可行,则为生产集群中的每个 Elasticsearch 节点安装一个 Metricbeat 实例,并使用默认的 scope: node。当 Metricbeat 使用 scope: node 监控 Elasticsearch 时,您必须为每个 Elasticsearch 节点安装一个 Metricbeat 实例。否则,某些指标将不会被收集。使用 scope: node 的 Metricbeat 从集群中选出的主节点收集大多数指标,因此您必须扩展所有符合主节点条件的节点以应对这种额外的负载,并且如果您有专用的主节点,则不应使用此模式。
  2. 在每个 Elasticsearch 节点上启用 Metricbeat 中的 Elasticsearch 模块。

    例如,要在 modules.d 目录中启用 Elastic Stack 监控功能的默认配置,请运行以下命令

    metricbeat modules enable elasticsearch-xpack

    有关更多信息,请参阅 Elasticsearch 模块

  3. 在每个 Elasticsearch 节点上配置 Metricbeat 中的 Elasticsearch 模块。

    modules.d/elasticsearch-xpack.yml 文件包含以下设置

      - module: elasticsearch
        xpack.enabled: true
        period: 10s
        hosts: ["https://127.0.0.1:9200"] 
        #scope: node 
        #username: "user"
        #password: "secret"
        #ssl.enabled: true
        #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
        #ssl.certificate: "/etc/pki/client/cert.pem"
        #ssl.key: "/etc/pki/client/cert.key"
        #ssl.verification_mode: "full"

    默认情况下,该模块从 https://127.0.0.1:9200 收集 Elasticsearch 监控指标。如果该主机和端口号不正确,则必须更新 hosts 设置。如果配置 Elasticsearch 使用加密通信,则必须通过 HTTPS 访问它。例如,使用类似 https://127.0.0.1:9200hosts 设置。

    默认情况下,scope 设置为 node,并且 hosts 列表中的每个条目都指示 Elasticsearch 集群中的一个不同的节点。如果将 scope 设置为 cluster,则 hosts 列表中的每个条目都指示一个不同的 Elasticsearch 集群的单个端点(例如,一个位于集群前面的负载均衡代理)。如果集群具有专用的主节点,则应使用 scope: cluster,并在 hosts 列表中配置端点,使其不将请求定向到专用主节点。

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

    1. 在生产集群上创建一个具有 remote_monitoring_collector 内置角色的用户。或者,使用 remote_monitoring_user 内置用户
    2. usernamepassword 设置添加到 Elasticsearch 模块配置文件。
    3. 如果您的 Elasticsearch 集群的 HTTP 层启用了 TLS,则必须在 hosts 设置中使用 https 作为 URL 方案,或者添加 ssl.enabled: true 设置。根据您的 Elasticsearch 集群的 TLS 配置,您可能还需要指定其他 ssl.* 设置。
  4. 可选:禁用 Metricbeat 中的 system 模块。

    默认情况下,system 模块已启用。但是,它收集的信息不会显示在 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-mon-2:9200"] 
    
      # Optional protocol and basic auth credentials.
      #protocol: "https"
      #username: "elastic"
      #password: "changeme"

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

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

    Elasticsearch 监控功能使用摄取管道,因此存储监控数据的集群必须至少有一个摄取节点

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

    1. 在监控集群上创建一个具有 remote_monitoring_agent 内置角色的用户。或者,使用 remote_monitoring_user 内置用户
    2. usernamepassword 设置添加到 Metricbeat 配置文件中 Elasticsearch 输出信息中。

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

  6. 在每个节点上启动 Metricbeat
  7. 在 Kibana 中查看监控数据.