使用 API 监控 Logstash
编辑使用 API 监控 Logstash
编辑当您运行 Logstash 时,它会自动捕获运行时指标,您可以使用这些指标来监控 Logstash 部署的健康状况和性能。
Logstash 收集的指标包括:
- Logstash 节点信息,如管道设置、操作系统信息和 JVM 信息。
- 插件信息,包括已安装插件的列表。
- 节点统计信息,如 JVM 统计信息、进程统计信息、事件相关统计信息和管道运行时统计信息。
- 热线程。
您可以使用 Logstash 提供的监控 API 来检索这些指标。这些 API 默认可用,无需任何额外配置。
或者,您可以配置 X-Pack 监控以将数据发送到监控集群。
监控是基本许可下的一个功能,因此可以免费使用。
用于监控 Logstash 的 API
编辑Logstash 提供监控 API 用于检索关于 Logstash 的运行时信息:
您可以使用根资源来检索有关 Logstash 实例的常规信息,包括主机和版本。
curl -XGET 'localhost:9600/?pretty'
示例响应
{ "host": "skywalker", "version": "8.17.0", "http_address": "127.0.0.1:9600" }
默认情况下,监控 API 尝试绑定到 tcp:9600
。如果此端口已被另一个 Logstash 实例使用,则您需要使用指定的 --api.http.port
标志启动 Logstash 以绑定到不同的端口。有关更多信息,请参阅命令行标志。
保护 Logstash API 的安全
编辑默认情况下,Logstash 监控 API 不受保护,但您可以配置 Logstash 以多种方式保护它们的安全,以满足您组织的需求。
您可以通过在 logstash.yml
中设置 api.ssl.enabled: true
并提供相关的密钥库设置 api.ssl.keystore.path
和 api.ssl.keystore.password
来启用 Logstash API 的 SSL。
api.ssl.enabled: true api.ssl.keystore.path: /path/to/keystore.jks api.ssl.keystore.password: "s3cUr3p4$$w0rd"
密钥库必须为 jks 或 p12 格式,并且必须包含证书和私钥。连接的客户端会收到此证书,从而允许他们对 Logstash 端点进行身份验证。
您还可以通过在 logstash.yml
中设置 api.auth.type: basic
并提供相关的凭据 api.auth.basic.username
和 api.auth.basic.password
来要求 HTTP 基本身份验证。
api.auth.type: basic api.auth.basic.username: "logstash" api.auth.basic.password: "s3cUreP4$$w0rD"
建议对密码类型的字段使用密钥库或环境变量替换,以避免将它们以纯文本形式存储。例如,如果存在安全密钥库的 HTTP_PASS
变量,则指定值 "${HTTP_PASS}"
将解析为该变量的值,或者从环境变量中解析为相同变量的值)。
通用选项
编辑以下选项可以应用于所有 Logstash 监控 API。
美化结果
编辑当向任何发出的请求附加 ?pretty=true
时,返回的 JSON 将以美化的格式显示(仅用于调试!)。
人类可读的输出
编辑对于 Logstash 8.17.0,仅热线程 API支持 human
选项。当您指定 human=true
时,结果将以纯文本而不是 JSON 格式返回。默认值为 false。
统计信息以适合人类的格式返回(例如 "exists_time": "1h"
或 "size": "1kb"
)和适合计算机的格式返回(例如 "exists_time_in_millis": 3600000
或 "size_in_bytes": 1024
)。可以通过向查询字符串添加 ?human=false
来关闭人类可读的值。当统计信息结果被监控工具使用,而不是供人查看时,这样做是有意义的。human
标志的默认值为 false
。