监控 Elastic Agent
Fleet 提供了用于监控 Elastic Agent 集群的内置功能。在 Fleet 中,你可以
- 查看 Agent 状态概览
- 查看某个 Agent 的详细信息
- 查看 Agent 活动
- 查看分发给 Agent 的配置
- 查看 Agent 日志
- 更改日志记录级别
- 收集 Elastic Agent 诊断信息
- 查看 Elastic Agent 指标仪表板
- 更改 Elastic Agent 监控设置
- 将 Elastic Agent 监控数据发送到远程 Elasticsearch 集群
- Elastic Agent 开箱即用警报规则
- 基于 Fleet 和 Elastic Agent 状态启用警报和机器学习(ML)作业
除非你将其关闭,否则 Agent 监控在 Agent 策略中默认处于开启状态。想要关闭 Agent 监控以停止收集日志和指标?请参见 更改 Elastic Agent 监控设置。
当 Elastic Agent 健康状态改变时想要接收警报?请参阅 基于 Fleet 和 Elastic Agent 状态启用警报和机器学习(ML)作业 以及我们的 警报示例。
有关 Agent 如何向 Fleet 传达其状态的更多详细信息,请参阅 Elastic Agent 健康状态。
要查看由 Fleet 管理的 Agent 的整体状态,请在 Kibana 中转到 Management → Fleet → Agents。
Fleet 中的 Agents 选项卡最多显示 10,000 个 Agent,分布在 500 个页面上,每页 20 行。如果你拥有超过 10,000 个 Agent,我们建议使用本节中描述的过滤和排序选项将表格缩小到 10,000 行以下。
Elastic Agent 可以具有以下状态
| 健康 | Elastic Agent 已注册并已签到。没有正在进行的 Agent 策略更新或自动 Agent 二进制文件更新,但 Agent 二进制文件可能仍处于过时状态。Elastic Agent 会持续向 Fleet Server 签到以获取所需的更新。 |
| 不健康 | Elastic Agent 存在错误或在降级状态下运行。由于主机系统上的配置问题,Agent 将被报告为 unhealthy。例如,Elastic Agent 可能没有运行已添加到 Elastic Agent 策略的集成所需的正确权限。在这种情况下,你可能需要调查并处理该情况。 |
| 孤立 | 对于注册了 Elastic Defend 的 Elastic Agent,orphaned 状态表示主机系统上的 Elastic Agent 服务与 Elastic Defend 提供的端点安全服务之间的通信出现错误。在被报告为 orphaned 的 Agent 上,Elastic Defend 集成仍在运行并保护着主机。 |
| 更新中 | Elastic Agent 正在更新 Agent 策略、更新二进制文件,或者正在从 Fleet 注册或取消注册。 |
| 离线 | Elastic Agent 已经至少 5 分钟停止向 Fleet Server 签到。此离线检测阈值固定为 5 分钟,无法配置。离线 Agent 的 API 密钥仍然有效。你仍然可以在 Fleet UI 中看到这些 Elastic Agent,并在需要时对它们进行调查以作进一步诊断。 |
| 不活动 | Elastic Agent 离线时间超过了你在 不活动超时 中设置的时间。这些 Elastic Agent 是有效的,但已从主 Fleet UI 中移除。 |
| 已取消注册 | Elastic Agent 已被手动取消注册,其 API 密钥已从系统中移除。如果你确定某个离线的 Elastic Agent 离线且不再有效,你可以使用 Elastic Agent 操作来 取消注册 它。 这些 Agent 需要重新注册到 Fleet 才能再次运行。 |
| 已卸载 | Elastic Agent 已成功卸载并从主机系统中移除。 |
此图表显示了 Elastic Agent 状态的流程
要按状态过滤 Agent 列表,请点击 Status 下拉菜单并选择一个或多个状态。
对于高级过滤,请使用搜索栏通过 Kibana 查询语言 创建结构化查询。例如,输入 local_metadata.os.family : "darwin" 以仅查看在 macOS 上运行的 Agent。
你还可以通过点击这些字段的表格标题,按主机、最后活动时间或版本对 Agent 列表进行排序。
要对超过 10,000 个 Agent 执行批量操作,你可以选择 Select everything on all pages 按钮。
在 Fleet 中,你可以通过 Agent 策略访问单个 Agent 的详细状态以及与其关联的集成。
- 在 Fleet 中,打开 Agents 选项卡。
- 在 Host 列中,点击 Agent 的名称。
在 Agent details 选项卡上,Overview 窗格显示有关 Agent 及其性能的详细信息,包括其内存和 CPU 使用情况、最后活动时间和最后签到消息。要访问指标可视化,你还可以 查看 Elastic Agent 指标仪表板。
Integrations 窗格显示已添加至 Agent 策略的集成的状态。展开任意集成以查看其健康状态。任何错误或警告都会显示为警报。
要收集有关特定错误或警告的更多详细信息,请从 Actions 菜单中选择 View agent JSON。该 JSON 包含由 Fleet 跟踪的所有原始 Agent 数据。
目前,Integrations 窗格仅显示 Agent 输入的健康状态。Agent 输出的健康状态尚不可用。
你可以查看由 Elastic Agent 执行的所有操作的按时间排序的列表。
在 Agents 选项卡上,点击 Agent activity。将显示所有 Agent 操作,从最近的操作开始,包括任何进行中的操作。
由于发送到使用 特定版本 Agent 策略 的 Elastic Agent 的配置可能与主策略模板不同,因此 Fleet 提供了一项操作来查看分发给特定 Agent 的渲染后的 YAML。
在 Agents 选项卡上,从特定 Elastic Agent 的 Actions 菜单(或从 Agent 详情页面上的 Actions 菜单)中,选择 Maintenance and diagnostics → View agent policy。
浮出控件显示了渲染后的 YAML 配置以及 Agent 使用的主策略的版本。
此操作不同于 Agent 策略本身上的 Actions → View policy 操作,后者显示的是 Fleet 为每个 Agent 渲染之前的主策略模板。
当 Fleet 报告诸如 Offline 或 Unhealthy 之类的 Agent 状态时,你可能需要查看 Agent 日志以诊断潜在原因。如果已将 Agent 监控配置为收集日志(默认设置),你可以在 Fleet 中查看 Agent 日志。
在 Fleet 中,打开 Agents 选项卡。
在 Host 列中,点击 Agent 的名称。
在 Agent details 选项卡上,验证是否已启用 Monitor logs。如果未启用,请参阅 更改 Elastic Agent 监控设置。
点击 Logs 选项卡。
在 Logs 选项卡上,你可以过滤、搜索和浏览 Agent 日志
使用搜索栏通过 Kibana 查询语言 创建结构化查询。
选择一个或多个数据集以显示特定程序(如 Filebeat 或 Fleet Server)的日志。
更改日志级别以按日志级别过滤视图。想要查看调试日志?请参阅 更改日志记录级别。
更改时间范围以查看历史日志。
受监控 Agent 的日志记录级别默认设置为 info。你可以更改 Agent 日志记录级别,例如,远程开启调试日志
在 Fleet 中,打开 Agents 选项卡。
在 Host 列中,点击 Agent 的名称。
在 Settings 选项卡上,选择一个 Agent logging level
error记录错误和严重错误。 warning记录警告、错误和严重错误。 info记录信息性消息,包括已发布事件的数量。同时记录任何警告、错误或严重错误。 debug记录调试消息,包括刷新的所有事件的详细打印输出。同时记录信息性消息、警告、错误和严重错误。 注意在 9.1 版本之前,Agent logging level 设置位于 Logs 选项卡上。
当你选择新设置时,更改会自动保存。
Fleet 提供了远程生成和收集 Elastic Agent 诊断包的功能。如果 Agent 在 Healthy 或 Unhealthy 状态下在线,它可以收集并上传诊断信息。要下载诊断包以在本地查看
在 Fleet 中,打开 Agents 选项卡。
在 Host 列中,点击 Agent 的名称。
选择 Diagnostics 选项卡并点击 Request diagnostics .zip 按钮。
在 Request Diagnostics 弹出窗口中,如果你需要详细的 CPU 数据,请选择 Collect additional CPU metrics。
点击 Request diagnostics 按钮。
准备就绪后,新的诊断包将在此页面上列出,同时列出的还有该 Elastic Agent 任何进行中或先前收集的诊断包。
这些诊断包存储在 Elasticsearch 中,并将在 7 天后自动删除。你还可以通过点击 trash can 图标来删除任何先前创建的诊断包。
当 Agent 监控配置为收集指标时(默认设置),你可以使用 Kibana 中的 [Elastic Agent] Agent metrics 仪表板来查看有关 Elastic Agent 资源使用情况、事件吞吐量和错误的详细信息。这些信息可帮助你识别问题并做出关于扩展部署的决策。
要查看 Agent 指标
在 Fleet 中,打开 Agents 选项卡。
在 Host 列中,点击 Agent 的名称。
在 Agent details 选项卡上,验证是否已启用 Monitor metrics。如果未启用,请参阅 更改 Elastic Agent 监控设置。
点击 View more agent metrics 以导航至 [Elastic Agent] Agent metrics 仪表板。
该仪表板使用标准的 Kibana 可视化效果,你可以对其进行扩展以满足你的需求。
Agent 监控在 Agent 策略中默认处于开启状态。要更改注册到特定 Agent 策略的所有 Agent 的监控设置
- 在 Fleet 中,打开 Agent policies 选项卡。
- 点击要编辑的 Agent 策略,然后点击 Settings。
- 在 Agent monitoring 下,取消选中(或选中)以下一项或两项设置:Collect agent logs 和 Collect agent metrics。
- 在 Advanced monitoring options 下,你可以配置其他设置,包括 HTTP 监控端点、诊断速率限制和诊断文件上传限制。有关详细信息,请参阅 配置 Agent 监控。
- 保存您的更改。
在创建新的 Agent 策略时关闭 Agent 监控
- 在 Create agent policy 浮出控件中,展开 Advanced options。
- 在 Agent monitoring 下,取消选中 Collect agent logs 和 Collect agent metrics。
- 完成 Agent 策略配置后,点击 Create agent policy。
你可能希望将有关 Elastic Agent 的所有健康和状态数据存储在远程 Elasticsearch 集群中,以便它与使用 Fleet 管理 Agent 的部署保持分离和独立。
为此,请按照 远程 Elasticsearch 输出 中的步骤操作。配置好新输出后,按照步骤更新 Elastic Agent 策略,并确保启用了 Output for agent monitoring 设置。Elastic Agent 监控数据将使用你配置的远程 Elasticsearch 输出。
Elastic Agent 提供了 开箱即用的警报规则,以简化对 Agent 健康状况的监控。内置警报是许多监控用例的最佳方法,并且比早期版本所需的手动配置提供了一种更快、更简单的替代方案。
对于 9.2.0 及更高版本,Elastic Agent 包含针对最常见健康检查的开箱即用警报规则。查看 Elastic Agent 内置警报。
你可以通过内部 Fleet 索引访问由 Fleet 管理的 Elastic Agent 的健康状态以及其他 Fleet 设置。这使你能够利用 Elastic Stack 中可由所提供信息触发的各种应用程序。例如,你现在可以基于这些特定字段创建警报和机器学习 (ML) 作业。请参阅 警报文档 或查看本页上的 示例,了解如何定义在满足特定条件时可触发操作的规则。
此功能允许你有效地跟踪 Agent 的状态,并识别其离线、遇到健康问题或面临与输入或输出相关的挑战的场景。
以下数据流和字段可用。
- 数据流
-
metrics-fleet_server.agent_status-default此数据流发布处于各种状态的 Elastic Agent 的数量。
字段
@timestampfleet.agents.total- 所有 Agent 的计数fleet.agents.enrolled- 当前已注册的所有 Agent 的计数fleet.agents.unenrolled- 当前已取消注册的 Agent 的计数fleet.agents.healthy- 当前健康的 Agent 的计数fleet.agents.offline- 当前离线的 Agent 的计数fleet.agents.updating- 当前正在更新过程中的 Agent 的计数fleet.agents.unhealthy- 当前不健康的 Agent 的计数fleet.agents.inactive- 当前不活动的 Agent 的计数
注意基于输入和输出健康的有关 Agent 状态的其他字段目前正在考虑用于未来的开发。
- 数据流
-
metrics-fleet_server.agent_versions-default此索引为每个版本号发布一个单独的文档,并且仅发布已注册 Agent 的计数。
字段
@timestampfleet.agent.version- 包含版本号的关键字字段fleet.agent.count- 处于指定版本的 Agent 的计数
你可以设置一个警报,以便在一个或多个 Elastic Agent 离线时通知你
在 Kibana 中,导航至 Management > Stack Management > Rules。
点击 Create rule。
选择 Elasticsearch query 作为规则类型。
为规则选择一个名称,例如
Elastic Agent status。选择 KQL or Lucene 作为查询类型。
选择
DATA VIEW metrics-*作为数据视图。定义你的查询,例如:
fleet.agents.offline >= 1。设置警报组、阈值和时间窗口。例如
WHEN (当):
count()OVER (跨越):
all documentsIS ABOVE (大于):
0FOR THE LAST (最近):
5 minutes这将在过去五分钟内由
fleet.agents.offline字段报告一个或多个 Agent 离线时生成警报。
设置要发送的文档数量,例如
- SIZE (大小): 100
将 Check every 设置为评估规则条件的频率。默认设置是一分钟。
选择在满足规则条件时要发生的操作。例如,若要将警报设置为在发生警报时发送电子邮件,请选择 Email 连接器类型并指定
- Email 连接器:
Elastic-Cloud-SMTP - 操作频率:
For each alert和On check intervals - 运行时间:
Query matched - 收件人 (To): <收件人电子邮件地址>
- 主题 (Subject): <电子邮件主题行>
- Email 连接器:
点击 Save。
新规则将启用,并且在满足警报条件时将向指定的收件人发送电子邮件。
从 Rules 页面,你可以选择你创建的规则以启用或禁用它,并查看规则详情,包括活动警报列表和警报历史记录。