使用 MySQL 的 Grafana 仪表板:我应该如何处理“%Y%m%d%H%i%s”的时间戳以用作面板的时间列?

Posted

技术标签:

【中文标题】使用 MySQL 的 Grafana 仪表板:我应该如何处理“%Y%m%d%H%i%s”的时间戳以用作面板的时间列?【英文标题】:Grafana dashboard using MySQL: how should I deal with timestamp of "%Y%m%d%H%i%s" to use as time column of panel? 【发布时间】:2021-09-04 18:59:24 【问题描述】:

我想使用 Grafana 仪表板将我的 mysql 数据库表可视化为每小时图表。我正在使用的表具有以下属性,未提及的未使用的属性包括 PK:

SERVER_NAME varchar(250)
STAT_TYPE int(11) 
STAT_DTM varchar(14) 
CPU_MAX_USAGE int(11) 
MEMORY_MAX_USAGE int(11) 

重要的是STAT_DTM。它的格式是"%Y%m%d%H%i%s",例如"20210621090000"; 2021 年 6 月 21 日 09:00:00。我希望这是图表的 X 轴。 Grafana 指南说:

返回名为 time 或 time_sec (UTC) 的列,作为 unix 时间戳或 任何 sql 本机日期数据类型。您可以使用下面的宏。

所以我输入了unix_timestamp(date_format(str_to_date(substr(stat_dtm, 1, 10),'%Y%m%d%H'), '%Y-%m-%d %H:00:00')),但弹出了一个错误说db query error: query failed - please inspect Grafana server log for details

select
    unix_timestamp(date_format(str_to_date(substr(stat_dtm, 1, 10),'%Y%m%d%H'), '%Y-%m-%d %H:00:00')) as 'time',
    CPU_MAX_USAGE,
    MEMORY_MAX_USAGE
from lcop.tb_stat_os_day
where stat_type = 60 and server_name = 'LDFSWAS1'

The Panel I'm currently working on

The result of the query above

如何正确设置时间戳并显示图表?不幸的是,无法修改表架构,如果需要,我可以提供任何其他信息。提前致谢。

【问题讨论】:

" .. unix 时间戳或任何 sql 本机日期数据类型" 在我看来它不必是 unix 时间戳? @FaNo_FN 是的,所以我也尝试了date_format(str_to_date(stat_dtm, '%Y%m%d%H%i%s'), '%Y%m%d%H%i%s'),但我认为这个不太好用 实际上,使用该功能,您将使用 STR_TO_DATE 将 '20210621090000' 转换为 '2021-06-21 09:00:00' 然后使用 @987654333 将其转换回 '20210621090000' @..see here 【参考方案1】:

让我们在那里简化您的类型转换:

SELECT '20210621090000' as `src`,
       UNIX_TIMESTAMP(STR_TO_DATE('20210621090000', '%Y%m%d%H%i%s')) as `dts`

STR_TO_DATE() 函数可以被赋予完整的格式,然后可以被赋予UNIX_TIMESTAMPSUBSTR()DATE_FORMAT() 没有必要让事情变得更困难??

【讨论】:

谢谢哥们,我走得太远了。这就像我想要的那样工作,而且要短得多。

以上是关于使用 MySQL 的 Grafana 仪表板:我应该如何处理“%Y%m%d%H%i%s”的时间戳以用作面板的时间列?的主要内容,如果未能解决你的问题,请参考以下文章

Grafana 仪表板导致 Firefox 浏览器崩溃

如何在显示仪表板时在 Grafana 门户上启用 url 加密

[工具开发] Grafana 报警仪表盘

Grafana之Dashboard

Grafana 仪表板变量 - 在基于查询的变量中处理 NULL 值

grafana面板-使用Grafana面板