日志服务 跨主题关联分析

这篇说说腾讯云日志服务跨主题关联分析功能,通过SQL语句(JOIN、UNION等)关联多个日志主题进行统计分析,需主题为标准存储且用户有查询权限,最多同时关联5个主题。 【语法规则】:表名为主题ID,需用双引号包裹,默认沿用查询时间范围,检索条件仅对当前主题生效。 【示例】:以订单和支付服务日志为例,展示通过JOIN按请求ID关联查询各服务耗时。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、操作场景

日志数据分散在多个主题中时,可使用 SQL 跨主题进行统计分析,例如以下场景:

·微服务架构下,每个服务的日志存储在不同主题中,需按照请求 ID 汇总查询各个服务的耗时。

·日志分为报错日志和业务访问日志,存储在不同主题中,需根据报错日志中的用户 ID、订单 ID 等信息在访问日志中查询关联的访问记录。

二、前提条件

·日志接入标准存储,低频存储不支持使用 SQL 进行统计分析。

·关联分析多个主题时,需同时具备这些主题的查询权限,否则会因无权限而导致查询报错。最大支持同时关联分析5个日志主题。

三、操作步骤

跨主题关联分析通过 SQL 语句实现,在日志检索分析、仪表盘、定时 SQL、告警策略中均可使用。以日志检索分析为例,操作步骤请参见 检索分析语法规则操作步骤。

四、语法规则

在 SQL 中,每个日志主题相当于一个数据库表,可使用 JOIN、UNION、INTERSECT、EXCEPT 等语法进行关联分析。

五、表名

·表名为主题 ID,主题 ID 中包含特殊字符-,在 SQL 中需使用双引号包裹,例如"0c037c7c-dbf0-4646-bb8b-9e414e5928f7";

·查询当前主题中的数据时,可使用log代表当前主题,也可省略。例如* | select * from log、* | select *。

六、查询时间范围

·SQL 默认沿用查询语句整体指定的时间范围,如果关联查询的多个主题使用相同的时间范围,无需在 SQL 中额外指定查询时间范围,参见 示例;

·如需单独指定主题的查询时间范围,可使用 WHERE 语法 对日志时间__TIMESTAMP__进行过滤。

七、检索条件

查询语句中,管道符前的检索条件仅针对当前查询的日志主题生效,如需对其他主题进行数据过滤,请使用 SQL 中的 WHERE 语法。

例如以下查询中,18cae058-c290-xxx-ade9-97d8eca2c86a不是当前日志主题 ID,检索条件level:error并没有生效,count(*)统计到的是全部日志条数。

level:error | select count(*) from "18cae058-c290-xxx-ade9-97d8eca2c86a"

如需统计该主题的错误日志条数,可使用如下语句:

* | select count(*) from "18cae058-c290-xxx-ade9-97d8eca2c86a" where level = 'error'

八、场景描述

某业务系统包含两个服务,订单管理服务的日志存储在主题 A 中,支付服务的日志存储在主题 B 中,需根据请求 ID 查询各个服务的耗时。

日志主题 A 的 ID 为"0c037c7c-dbf0-4646-bb8b-9e414e5928f7",日志数据如下。

{ "RequestId": "4f7g2k9m", "timeCost": 856, "timestamp": "2024-01-31T19:44:08+08:00",},{ "RequestId": "6m4v1ztf", "timeCost": 1452, "timestamp": "2024-01-31T19:45:08+08:00",}

日志主题 B 的 ID 为"8c05119c-c3e8-4e8f-95b7-81eab4702b0a",日志数据如下。

{ "reqid": "4f7g2k9m", "costms": 247, "timestamp": "2024-01-31T19:44:08+08:00",},{ "reqid": "6m4v1ztf", "costms": 365, "timestamp": "2024-01-31T19:45:08+08:00",}

九、查询语句

在订单管理服务日志主题 A 中执行该查询语句。

* | SELECT order_service.RequestId, order_service.timeCost AS "订单管理服务耗时", pay_service.costms AS "支付服务耗时"FROM log AS order_service JOIN "8c05119c-c3e8-4e8f-95b7-81eab4702b0a" AS pay_service ON order_service.RequestId = pay_service.reqid LIMIT 100

十、查询结果

RequestId 订单管理服务耗时 支付服务耗时
4f7g2k9m 856 247
6m4v1ztf 1452 365
赞 (0)
上一篇 4天前
下一篇 4天前