基于提示的自动发现
编辑基于提示的自动发现编辑
Heartbeat 支持基于提供者提示的自动发现。提示系统会在 Kubernetes Pod 注释或 Docker 标签中查找以 co.elastic.monitor
为前缀的提示。一旦容器启动,Heartbeat 将检查它是否包含任何提示并启动相应的配置。提示告诉 Heartbeat 如何获取给定容器的日志。默认情况下,将为暴露请求监控端口的容器创建监控器。您可以使用提示修改此行为。以下是受支持提示的完整列表
co.elastic.monitor/type
编辑
定义要使用的监控器类型。例如:http、tcp、icmp
co.elastic.monitor/hosts
编辑
要监控的 URI。示例
co.elastic.monitor/type: icmp co.elastic.monitor/hosts: ${data.host}
这将确保每个主机都启用了 ICMP 监控。
co.elastic.monitor/schedule
编辑
定义监控器应执行的计划。
co.elastic.monitor/schedule: "@every 5s"
co.elastic.monitor/processors
编辑
定义要添加到 Heartbeat 监控器配置的处理器。有关支持的处理器的列表,请参阅 处理器。
为了提供处理器定义的顺序,可以提供数字。如果没有,提示构建器将进行任意排序
co.elastic.monitor/processors.1.drop_fields.fields: "field1, field2" co.elastic.monitor/processors.drop_fields.fields: "field3"
在上面的示例中,标记为 1
的处理器定义将首先执行。
当提示与模板一起使用时,只有在没有解析为真的模板条件的情况下才会评估提示。例如
heartbeat.autodiscover: - type: docker hints.enabled: true templates: - condition: contains: docker.container.image: redis config: - type: tcp hosts: ["${data.host}:${data.port}"] schedule: "@every 1s" timeout: 1s
在此示例中,首先评估条件 docker.container.image: redis
,如果未匹配,则处理提示,如果仍然没有有效的配置,则使用 hints.default_config
。
Kubernetes编辑
Kubernetes 自动发现提供者支持 Pod 注释中的提示。要启用它,只需设置 hints.enabled
heartbeat.autodiscover: providers: - type: kubernetes hints.enabled: true
您可以使用有用的信息为 Kubernetes Pod 添加注释以启动 Heartbeat 监控器
annotations: co.elastic.monitor/type: icmp co.elastic.monitor/hosts: ${data.host} co.elastic.monitor/schedule: "@every 5s"
多个容器编辑
当 Pod 具有多个容器时,除非您在提示中添加容器名称,否则设置将共享。例如,这些提示配置暴露端口 8080 的容器执行 HTTP 检查,并让 sidecar
容器进行 TCP 检查。
annotations: co.elastic.monitor/type: http co.elastic.monitor/hosts: ${data.host}:8080/healthz co.elastic.monitor/schedule: "@every 5s" co.elastic.monitor.sidecar/type: tcp co.elastic.monitor.sidecar/hosts: ${data.host}:8081 co.elastic.monitor.sidecar/schedule: "@every 5s"
多组提示编辑
当容器需要在其上定义多个监控器时,可以使用数字前缀提供注释集。没有数字前缀的注释将默认设置为单个监控器配置。
annotations: co.elastic.monitor/type: http co.elastic.monitor/hosts: ${data.host}:8080/healthz co.elastic.monitor/schedule: "@every 5s" co.elastic.monitor/1.type: tcp co.elastic.monitor/1.hosts: ${data.host}:8080 co.elastic.monitor/1.schedule: "@every 5s"
Docker编辑
Docker 自动发现提供者支持标签中的提示。要启用它,只需设置 hints.enabled
heartbeat.autodiscover: providers: - type: docker hints.enabled: true
您可以使用与 Kubernetes 示例类似的有用信息为 Docker 容器添加标签以启动 Heartbeat 监控器
LABEL co.elastic.monitor/1.type=tcp co.elastic.monitor/1.hosts='${data.host}:6379' co.elastic.monitor/1.schedule='@every 10s' LABEL co.elastic.monitor/2.type=icmp co.elastic.monitor/2.hosts='${data.host}' co.elastic.monitor/2.schedule='@every 10s'