DataV 使用时间轴实现实时动态查询数据库、sls 等数据源

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
日志服务 SLS,月写入数据量 50GB 1个月
简介: DataV 使用时间轴实现实时动态查询数据库、sls 等数据源

SLS 配置

DataV 可以使用日志服务作为组件的数据源,数据源配置:
sls1

查询参数如下:

{
  "projectName": "xxx",
  "logStoreName": "xxx",
  "from":150000000,  
  "to": 1514164461, 
  "topic": "",
  "query": "select count(*) as c",
  "line": 1000,
  "offset": 0
}

参数说明:
projectName: 日志服务的 project 名
logStoreName: 日志服务的 logStore 名
query: 日志服务 GetLogs接口的 query 查询,详细见文档:
https://help.aliyun.com/document_detail/29029.html
from 和 to 是以秒计算的起止时间
其余的参数和 GetLogs接口的参数含义相同

产生动态回调

由于 sls 的查询里需要指定起止时间,是以秒为单位的时间戳,如果我们需要实现的查询时间段是动态的,比如最近一天,那么这个 from 和 to 就需要动态产生。

在 DataV 里,动态参数的产生使用回调 id 实现,但是多数的组件的回调 id 的产生需要联动,也就是需要人工操作,如果希望能够实时地不断地产生回调 id,需要使用时间轴组件+过滤器。

时间轴可以设置定时产生回调 id,而回调 id 的值会在时间轴的数据里轮播。我们可以通过设置时间轴的数据自动更新和配置过滤器,从而让时间轴的数据动态生成,然后通过时间轴定时产生回调 id 的功能,提供这个动态的数据给其他的组件使用。
流程如下:
时间轴数据自动更新 -> 过滤器 -> 定时产生回调 id -> 其他组件使用回调 id(数据库、sls 等)

首先产生 sls查询的 from字段:
准备时间轴的数据,由于我们需要的是最近一天的 from,不需要额外的信息,所以数据使用静态数据即可:
sls2

设置自动更新,时间根据自己的需求来确定。
设置了自动更新之后,数据会每隔一段时间自动更新。由于我们的数据是静态数据,实际上每次自动更新的数据并没有发生变化,我们设置自动更新,只是为了执行过滤器,在过滤器里面产生当前时间前一天的时间戳。
过滤器编辑:

return [{
  from: Math.round((Date.now() - 24*60*60*1000)/1000)
}];

sls3
过滤器产生的时间轴数据:
sls4

这样,时间轴就会每一秒产生一个新的数据,里面有一个字段是 from,就是一天前的以秒计算的时间戳,如果你想要产生其他的数据,就在过滤器里计算就可以了,也可以对数据源的数据进行加工、格式转换。由于这里是产生时间戳,实际上对数据源查询的数据并没有使用。

接下来就要将时间轴的数据作为回调设置:

sls5
sls7
sls6

使用回调 id

现在,我们已经有了一个动态的 from 回调 id,这个值就是一天前的时间戳,我们可以再 sls 的查询中使用:

{
  "projectName": "xxx",
  "logStoreName": "xxx",
  "from":":from",  
  "to": 1515567884, 
  "topic": "",
  "query": "select count(*) as c",
  "line": 1000,
  "offset": 0
}

也可以在 sql 中使用:

select :from as a

之后只有再加一个时间轴来产生 to 回调,值为当前的时间戳,name 动态的 sls 查询就是:

{
  "projectName": "xxx",
  "logStoreName": "xxx",
  "from":":from",  
  "to":":to", 
  "topic": "",
  "query": "select count(*) as c",
  "line": 1000,
  "offset": 0
}

总结

时间轴组件的左右就是定期地产生一个回调的值,典型应用就是轮播一系列的数据。比如轮播2010年-2017年的数据。现在我们利用其定期产生回调的特性,在过滤器里面算出一个我们需要的值(本文里是需要的 from、to),就实现了定期产生一个动态的回调值的效果,来让需要动态参数的查询,比如 sls、sql 等可以使用动态的参数作为查询条件。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
4月前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
475 2
|
5月前
|
存储 JSON Cloud Native
数据库ADB-PG问题之数据源处理如何解决
数据库ADB-PG问题之数据源处理如何解决
|
4月前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
6月前
|
存储 关系型数据库 MySQL
|
6月前
|
存储 SQL 关系型数据库
|
2月前
|
存储 关系型数据库 数据库
数据库启用慢速查询日志如何增强 Postgres 可观测性
数据库启用慢速查询日志如何增强 Postgres 可观测性
37 1
|
4月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
3月前
|
存储 SQL 专有云
支持配置审计日志的存储数据库
审计日志作为企业监管平台的重要依据,同时也是“等保三级”认证的必要考察项之一。Dataphin V4.3版本支持设置平台日志的存储数据源,帮助用户快速获取审计日志,同时介绍了不同部署模式的Dataphin如何查看审计日志的方法。
121 5
|
4月前
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
113 7