使用旧版收集器收集 Logstash 监控数据

编辑

使用旧版收集器收集 Logstash 监控数据

编辑

在 7.9.0 中已弃用。

旧版收集的组件

编辑

使用旧版收集监控 Logstash 使用以下组件

这些部分位于默认 Logstash 管道之外的专用监控管道中。此配置确保所有数据和处理对普通 Logstash 处理的影响最小。可以重用现有的 Logstash 功能,例如 elasticsearch 输出,以从其重试策略中受益。

用于监控 Logstash 的 elasticsearch 输出完全通过在 logstash.yml 中找到的设置进行配置。它不是通过使用 Logstash 配置中的任何内容进行配置的,这些配置也可能正在使用他们自己单独的 elasticsearch 输出。

应该配置生产 Elasticsearch 集群来接收 Logstash 监控数据。此配置使生产 Elasticsearch 集群能够将元数据(例如,其集群 UUID)添加到 Logstash 监控数据,然后将其路由到监控集群。有关典型监控架构的更多信息,请参阅 监控工作原理,位于 Elasticsearch 参考中。

收集器
编辑

收集器,顾名思义,就是收集东西。在 Logstash 的监控中,收集器与普通 Logstash 配置提供输入的方式相同,都只是 输入

与 Elasticsearch 的监控类似,每个收集器可以创建零个或多个监控文档。按照目前的实现方式,每个 Logstash 节点运行两种类型的收集器:一种用于节点统计信息,另一种用于管道统计信息。

收集器 数据类型 描述

节点统计信息

logstash_stats

收集有关运行节点详细信息,例如内存利用率和 CPU 使用率(例如,GET /_stats)。

这在启用监控的每个 Logstash 节点上运行。一个常见的失败是复制 Logstash 目录时包含了它们的 path.data 目录(默认情况下为 ./data),这会复制 Logstash 节点的持久 UUID。因此,通常会出现一个或多个 Logstash 节点未能收集监控数据的情况,而实际上它们都错误地报告为同一个 Logstash 节点。仅在升级 Logstash 时重复使用 path.data 目录,以便升级后的节点替换以前的版本。

管道统计信息

logstash_state

收集有关节点正在运行的管道的详细信息,为监控管道 UI 提供支持。

每个收集间隔(默认为 10 秒(10s))都会运行每个收集器。单个收集器的失败不会影响任何其他收集器。每个收集器作为普通的 Logstash 输入,会在其隔离的监控管道中创建一个单独的 Logstash 事件。然后,Logstash 输出发送数据。

可以动态配置收集间隔,您还可以禁用数据收集。有关收集器的配置选项的更多信息,请参阅 监控设置

与 Elasticsearch 和 Kibana 监控不同,Logstash 上没有 xpack.monitoring.collection.enabled 设置。您必须使用 xpack.monitoring.enabled 设置来启用和禁用数据收集。

如果 Kibana 中的监控图表中存在空白,通常是因为收集器失败或监控集群未收到数据(例如,正在重新启动)。如果收集器失败,则尝试执行收集的节点上应存在已记录的错误。

输出

编辑

与所有 Logstash 管道一样,专用监控管道的目的是将事件发送到输出。对于 Logstash 的监控,输出始终是 elasticsearch 输出。但是,与普通的 Logstash 管道不同,输出是在 logstash.yml 设置文件中通过 xpack.monitoring.elasticsearch.* 设置进行配置的。

除了其独特的配置方式之外,此 elasticsearch 输出的行为与所有 elasticsearch 输出类似,包括在输出存在问题时暂停数据收集的能力。

至关重要的是,所有 Logstash 节点都共享相同的设置。否则,监控数据可能会以不同的方式或路由到不同的位置。

默认配置
编辑

如果 Logstash 节点没有显式定义监控输出设置,则使用以下默认配置

xpack.monitoring.elasticsearch.hosts: [ "https://127.0.0.1:9200" ]

所有由 Logstash 监控产生的数据都使用 .monitoring-logstash 模板在监控集群中建立索引,该模板由 Elasticsearch 中的 导出器管理。

如果您正在使用启用了 X-Pack 安全性的集群,则需要额外的步骤来正确配置 Logstash。有关更多信息,请参阅监控 Logstash (旧版)

在讨论与 elasticsearch 输出相关的安全性时,至关重要的是要记住,所有用户都在生产集群上进行管理,该集群在 xpack.monitoring.elasticsearch.hosts 设置中标识。当您从开发环境转移到生产环境(您通常拥有专用监控集群)时,这一点尤其重要。

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

使用旧版收集器配置 Logstash 监控

编辑

要监控 Logstash 节点

  1. 指定将监控数据发送到哪里。此集群通常被称为生产集群。有关典型监控架构的示例,请参阅 监控工作原理

    要将 Logstash 可视化为 Elastic Stack 的一部分(如步骤 6 中所示),请将指标发送到您的生产集群。将指标发送到专用的监控集群将在监控集群下显示 Logstash 指标。

  2. 验证生产集群上的 xpack.monitoring.collection.enabled 设置是否为 true。如果该设置是 false,则在 Elasticsearch 中禁用监控数据的收集,并且忽略来自所有其他来源的数据。
  3. 通过将 xpack.monitoring.enabled 设置为 true 并在 logstash.yml 中将目标 Elasticsearch 节点指定为 xpack.monitoring.elasticsearch.hosts,来配置您的 Logstash 节点以发送指标。如果启用了安全功能,您还需要指定 内置 logstash_system 用户的凭据。有关这些设置的更多信息,请参阅 监控设置

    xpack.monitoring.enabled: true
    xpack.monitoring.elasticsearch.hosts: ["http://es-prod-node-1:9200", "http://es-prod-node-2:9200"] 
    xpack.monitoring.elasticsearch.username: "logstash_system"
    xpack.monitoring.elasticsearch.password: "changeme"

    如果在生产集群上启用了 SSL/TLS,则必须通过 HTTPS 连接。从 v5.2.1 开始,您可以将多个 Elasticsearch 主机指定为数组,也可以将单个主机指定为字符串。如果指定了多个 URL,Logstash 可以对这些生产节点进行轮询请求。

  4. 如果在生产 Elasticsearch 集群上启用了 SSL/TLS,请指定将用于验证集群中节点身份的可信 CA 证书。

    要将 CA 证书添加到 Logstash 节点的受信任证书,可以使用 certificate_authority 设置指定 PEM 编码证书的位置

    xpack.monitoring.elasticsearch.ssl.certificate_authority: /path/to/ca.crt

    要添加 CA 而无需将其加载到磁盘上,可以使用 ca_trusted_fingerprint 设置指定 DER 格式的 CA 的十六进制编码的 SHA 256 指纹

    xpack.monitoring.elasticsearch.ssl.ca_trusted_fingerprint: 2cfe62e474fb381cc7773c84044c28c9785ac5d1940325f942a3d736508de640

    自保护的 Elasticsearch 集群将在设置过程中向控制台提供其 CA 的指纹。

    您还可以使用 Elasticsearch 主机上的 openssl 命令行实用程序获取 Elasticsearch CA 的 SHA256 指纹

    openssl x509 -fingerprint -sha256 -in $ES_HOME/config/certs/http_ca.crt

    或者,您可以使用信任库(包含证书的 Java 密钥库文件)配置受信任的证书

    xpack.monitoring.elasticsearch.ssl.truststore.path: /path/to/file
    xpack.monitoring.elasticsearch.ssl.truststore.password: password

    此外,您还可以选择使用密钥库(包含证书的 Java 密钥库文件)或使用证书和密钥文件对来设置客户端证书

    xpack.monitoring.elasticsearch.ssl.keystore.path: /path/to/file
    xpack.monitoring.elasticsearch.ssl.keystore.password: password
    xpack.monitoring.elasticsearch.ssl.certificate: /path/to/certificate
    xpack.monitoring.elasticsearch.ssl.key: /path/to/key

    将嗅探设置为 true 以启用发现 Elasticsearch 集群的其他节点。它默认为 false

    xpack.monitoring.elasticsearch.sniffing: false
  5. 重新启动您的 Logstash 节点。
  6. 要验证您的监控配置,请将您的 Web 浏览器指向您的 Kibana 主机,然后从侧面导航中选择 堆栈监控。如果这是初始设置,请选择 使用自我监控进行设置,然后单击 启用监控。从您的 Logstash 节点报告的指标应该在 Logstash 部分中可见。启用安全性后,要查看监控仪表板,您必须以具有 kibana_usermonitoring_user 角色的用户身份登录到 Kibana。

    Monitoring

旧版收集的监控设置

编辑

您可以在 logstash.yml 中设置以下 xpack.monitoring 设置,以控制如何从您的 Logstash 节点收集监控数据。但是,默认值在大多数情况下效果最佳。有关配置 Logstash 的更多信息,请参阅 logstash.yml

常规监控设置

编辑
xpack.monitoring.enabled
默认情况下禁用监控。设置为 true 以启用 X-Pack 监控。
xpack.monitoring.elasticsearch.hosts
您要将 Logstash 指标发送到的 Elasticsearch 实例。这可能是您的 Logstash 配置的 outputs 部分中指定的同一个 Elasticsearch 实例,也可能是不同的实例。这不是您的专用监控集群的 URL。即使您正在使用专用的监控集群,Logstash 指标也必须通过您的生产集群进行路由。您可以将单个主机指定为字符串,也可以将多个主机指定为数组。默认为 https://127.0.0.1:9200

如果你的 Elasticsearch 集群配置了专用的主节点,Logstash 的指标不应路由到这些节点,因为这样做可能会导致资源竞争并影响 Elasticsearch 集群的稳定性。因此,请不要将这些节点包含在 xpack.monitoring.elasticsearch.hosts 中。

xpack.monitoring.elasticsearch.proxy
监控 Elasticsearch 实例和被监控的 Logstash 可以通过代理分隔。要使 Logstash 连接到代理的 Elasticsearch,请将此值设置为中间代理的 URI,使用标准 URI 格式,例如 <协议>://<主机>,例如 http://192.168.1.1。空字符串将被视为未设置代理。
xpack.monitoring.elasticsearch.usernamexpack.monitoring.elasticsearch.password
如果你的 Elasticsearch 使用基本身份验证保护,这些设置提供了 Logstash 实例用于验证身份以发送监控数据的用户名和密码。

监控收集设置

编辑
xpack.monitoring.collection.interval
控制在 Logstash 端收集和发送数据样本的频率。默认为 10s。如果你修改了收集间隔,请将 kibana.yml 中的 xpack.monitoring.min_interval_seconds 选项设置为相同的值。

监控 TLS/SSL 设置

编辑

你可以配置以下传输层安全性 (TLS) 或安全套接字层 (SSL) 设置。有关更多信息,请参阅配置 Logstash 监控的凭证

xpack.monitoring.elasticsearch.ssl.ca_trusted_fingerprint
可选设置,允许你指定 Elasticsearch 实例的证书颁发机构的十六进制编码 SHA-256 指纹。

自保护的 Elasticsearch 集群将在设置过程中向控制台提供其 CA 的指纹。

您还可以使用 Elasticsearch 主机上的 openssl 命令行实用程序获取 Elasticsearch CA 的 SHA256 指纹

openssl x509 -fingerprint -sha256 -in $ES_HOME/config/certs/http_ca.crt
xpack.monitoring.elasticsearch.ssl.certificate_authority
可选设置,允许你指定 Elasticsearch 实例的证书颁发机构的 .pem 文件路径。
xpack.monitoring.elasticsearch.ssl.truststore.path
可选设置,提供 Java 密钥库 (JKS) 的路径,用于验证服务器的证书。
xpack.monitoring.elasticsearch.ssl.truststore.password
可选设置,提供信任存储的密码。
xpack.monitoring.elasticsearch.ssl.keystore.path
可选设置,提供 Java 密钥库 (JKS) 的路径,用于验证客户端的证书。
xpack.monitoring.elasticsearch.ssl.keystore.password
可选设置,提供密钥库的密码。
xpack.monitoring.elasticsearch.ssl.certificate
可选设置,提供用于验证客户端身份的 SSL 证书的路径。此证书应为 OpenSSL 样式的 X.509 证书文件。

只有在设置了 xpack.monitoring.elasticsearch.ssl.key 时才能使用此设置。

xpack.monitoring.elasticsearch.ssl.key
可选设置,提供与 xpack.monitoring.elasticsearch.ssl.certificate 对应的 OpenSSL 样式 RSA 私钥的路径。

只有在设置了 xpack.monitoring.elasticsearch.ssl.certificate 时才能使用此设置。

xpack.monitoring.elasticsearch.ssl.verification_mode
用于验证服务器证书的选项。默认为 full。要禁用,请设置为 none。禁用此项会严重损害安全性。
xpack.monitoring.elasticsearch.ssl.cipher_suites
可选设置,提供要使用的密码套件列表,按优先级排列。支持的密码套件因 Java 和协议版本而异。

其他设置

编辑
xpack.monitoring.elasticsearch.cloud_id
如果你在 Elastic Cloud 中使用 Elasticsearch,则应在此处指定标识符。此设置是 xpack.monitoring.elasticsearch.hosts 的替代方案。如果配置了 cloud_id,则不应使用 xpack.monitoring.elasticsearch.hosts。你希望将 Logstash 指标发送到的 Elasticsearch 实例。这可能是 Logstash 配置的 outputs 部分中指定的同一 Elasticsearch 实例,也可能是不同的实例。
xpack.monitoring.elasticsearch.cloud_auth
如果你在 Elastic Cloud 中使用 Elasticsearch,则可以在此处设置你的身份验证凭证。此设置是 xpack.monitoring.elasticsearch.usernamexpack.monitoring.elasticsearch.password 的替代方案。如果配置了 cloud_auth,则不应使用这些设置。
xpack.monitoring.elasticsearch.api_key
使用 Elasticsearch API 密钥进行身份验证。请注意,此选项还需要使用 SSL。

API 密钥的格式为 id:api_key,其中 idapi_key 是 Elasticsearch Create API key API 返回的值。