Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第1张图片

在现代 IT 基础设施的动态环境中,高效的数据收集和分析至关重要。 Elastic Agent 是 Elastic Stack 的关键组件,通过促进将数据无缝摄取到 Elasticsearch 中,在此过程中发挥着至关重要的作用。 然而,显着影响此过程整体有效性的关键性能指标之一是延迟,即数据从 Elastic Agent 传输到 Elasticsearch 所需的时间。 在本文中,我们将深入研究捕获 Elastic Agent 和 Elasticsearch 之间的延迟时间。

有关如何设置 Agent 并采集数据,请阅读文章:

  • Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0

  • Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

捕获延迟时间指南

利用处理器 (processors) 为所有事件合并代理 (agent) 时间戳。 处理器的目的是最小化导出事件中的字段或使用附加元数据对其进行扩充。 此操作发生在代理内,发生在日志进行解析之前。

让我们以系统 (System) 集成为例,以便更好地理解和计算延迟时间。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第2张图片 System Integration

展开收集指标 (Collect metrics) 部分并打开 System process metrics -> Advance Options。 添加脚本处理器,它将为所有事件添加代理时间戳。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第3张图片

在上面点击 “Advanced options

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第4张图片

Script Processor:

- script:
   lang: javascript
   source: >
     function process(event) {
         event.Put("event.agent_timestamp",new Date());
       return event;
     }

如果你想记录每个事件的采集时间,你可以参考下面的脚步代码,并直接计算一个采集时间值。在下面的代码中,它使用运行时字段的方法来进行计算。如果数据比较多,性能还是有一些的影响。

我们必须在映射 metrics-system.process@custom 组件模板中添加 event.agent_timestamp 字段。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第5张图片

单击编辑图标,它将导航到组件模板编辑页面。 现在添加 event.agent_timestamp 字段作为日期类型并保存集成。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第6张图片

就是这样,我们已经将 event.agent_timestamp 字段添加到所有 System process metrics 事件中,我们可以在 Discover 中看到这一点。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第7张图片

现在我们可以使用运行时字段来计算延迟。 在 Kibana 中,转到 “Data Views” 部分,然后单击 “metrics-*” Data view。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第8张图片

创建一个新的运行时字段 event.agent_latency 并使用以下脚本设置延迟值。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第9张图片

通过提供包含以下内容的文档 ID 来预览延迟值 event.agent_timestamp 字段。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第10张图片

Script:

def agent_timestamp = doc["event.agent_timestamp"];
if(null != agent_timestamp){
long latency = doc['event.ingested'].value.toInstant().toEpochMilli() - agent_timestamp.value.toInstant().toEpochMilli();
 emit(latency);
 return;
}
emit(0);

该脚本将时间戳转换为自纪元以来的毫秒数并计算差值。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第11张图片

在 Discover 中,我们可以可视化 event.agent_latency 字段显示 Elastic Agent 和 Elasticsearch 之间的延迟时间。

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟_第12张图片

减少 Elastic Agent 和 Elasticsearch 之间的延迟对于维护响应迅速且高效的数据分析环境至关重要。 通过了解影响延迟的因素并实施优化策略,组织可以确保其 Elastic Stack 发挥最佳性能,从而从其处理的数据中获得及时且可操作的见解。 定期监控、性能调整和及时了解最佳实践将有助于实现良好优化和低延迟的 Elastic Stack 部署。

在最新的 Elastic Stack 8.11 中,我们开始提供 ES|QL 管道查询语言。在查询时,我们可以更方便地生成所需要的字段。详情请阅读文章 “Elasticsearch:ES|QL 查询展示”。

你可能感兴趣的:(Observability,Elastic,elasticsearch,大数据,搜索引擎,全文检索,可用性测试,数据库,时序数据库)