You need to enable JavaScript to run this app.
导航

检索分析

最近更新时间2024.04.03 11:19:25

首次发布时间2023.08.09 15:06:45

为什么日志时间和其生成时间不一致?

通过 LogCollector 采集日志时,日志服务默认使用 LogCollector 采集日志的时间作为日志的时间戳。如果应用程序打印日志速度非常快,或 LogCollector 分配到的系统资源较少时,LogCollector 因进程繁忙可能会延迟采集日志,导致日志时间戳明显晚于日志生成的时间。
例如应用程序在 8:00 打印日志,但是 LogCollector 在 8:10 才采集到该日志。默认情况下,该日志时间戳为 8:10,而非 8:00。当用户检索日志时,如果选择的时间范围是 7:55~8:05,那么将无法查询出来任何日志。
为了避免这种问题,您可以在日志格式中添加一个时间字段,并将其定义为日志产生的时间。在创建采集配置时关闭使用采集时间。此时您需要填写时间键名称时间转换格式,设置方式请参考单行全文模式

说明

时间转换格式中应配置原始日志中时间字段的格式,LogCollector 采集日志数据时会根据指定的格式解析时间字段,并将其统一为 Unix 时间戳。时间字段的格式请参考时间格式

为什么定时 SQL 任务的调度实例一直不执行?

日志服务在执行调度实例之前,会先检查实例是否满足执行条件,如果前一个实例因为检索时间范围内的数据尚未完成写入等原因而暂未运行,后一个实例已符合执行条件,则后一个实例会优先运行。

说明

实例符合执行条件后,日志服务会在后端调度资源、准备执行实例,该操作可能耗时 1 分钟以上,请耐心等待。

通常情况下,实例执行同时需要满足以下条件:

  • 已达到调度时间。如果任务未设置延时时间,后端服务会根据调度时间执行实例;如果设置了延时时间,则在达到调度时间后推迟一段时间后再执行实例。
  • 实例的 SQL 时间窗口对应的日志数据已完成写入。如果日志主题中已存在晚于检索时间范围内的日志数据,则判断检索时间范围内的数据已全部完成写入。例如检索时间范围为 [10:00~11:00),如果写入了一条 11:01 的日志数据,则判断检索时间范围内的数据已全部完成写入,可以开始运行实例。
  • 未达到最大并发数。一个任务中最多只有 1 个调度实例为运行中状态。

提示“查询结果不精确”,如何解决?

在您检索分析日志时,如果日志服务控制台提示查询结果不精确,可参考本文档进行排查。

问题描述

您在检索分析日志时,如果日志服务控制台提示查询结果不精确,表示日志服务未能扫描全部日志,返回的检索和分析结果不是基于全部日志的精确结果。
图片

可能原因

造成查询结果不精确的可能原因如下:

  • 设置的检索时间范围过大(例如检索时间范围为 3 个月),日志服务无法在一次检索中扫描这个时间段内的所有日志。为了快速返回结果,先返回部分不精确的结果。
  • 设置的检索条件过于复杂(例如同时设置了 30 个检索条件),日志服务无法一次性读取所有检索结果。
  • SQL 计算的数据量太大。如果您在一个 SQL 语句中设置了多个字段,而这些字段的数据量很大,超过 Shard 读取能力(每个 Shard 仅能读取 1GiB 数据),则返回结果不精确。

解决方案

根据可能原因,重新设置检索时间范围或检索分析语句。