Kibana:如何在 Canvas 中动态地显示时间
2021年1月9日 | by mebius
在使用 Canvas 的时候,我们有时希望去动态显示事件发生的时间。我们希望用我们想要的方式来显示这个时间。那么我们该如何实现呢?
如何在 Canvas 中动态地显示时间
准备数据
在今天的实验中,我们用一个很简单的数据来进行展示:
PUT _ingest/pipeline/add-timestamp
{
"processors": [
{
"set": {
"field": "@timestamp",
"value": "{{_ingest.timestamp}}"
}
}
]
}
PUT bulbs/_doc/1?pipeline=add-timestamp
{
"id": 1,
"status": 1
}
我们在 Kibana 中依次执行上面的指令,我们就可以得到一个如下的事件:
GET bulbs/_search
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
tgcode "failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "bulbs",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2020-11-19T02:33:58.419587Z",
"id" : 1,
"status" : 1
}
}
]
}
}
在上面,我们把当前的时间写入到事件中。如果你不知道是如何工作的,请参阅我之前的文章 “Elasticsearch:如何在写入文档时加上 now 时间标签”。上面的命令生成一个叫做 bulbs 的索引。在实际的物联网应用中,这可能是一个灯开的时间,或者是一个物体移动的时间。这可能是每隔几分钟才发生的一个事件。我们需要在 Canvas 中标明事件的时间。
在 Canvas 中展示时间
我们接下来在 Canvas 中动态地来展示上面的这个事件的时间:
我们使用一个 Markdown 来展示时间:
我们把如下的代码拷贝并粘贴到编辑器中:
filters
| essql
query="SELECT LAST("@timestamp") + INTERVAL '2' HOUR AS "Event Time" FROM "bulbs" WHERE id = '1'"
| markdown
{getCell | formatdate 'HH:mm:ss'}
| render
我们点击 Run 按钮,那在上面的 Markdown 中,我们可以看到显示的时间。这个时间实践上是时间的最后一个值,也就是最近的一个时间。如果我们重新去运行之前的命令的话,并点击 Run,那么我可以看到最新的时间显示值。值得指出的是:
当我们把鼠标放置于 formatdate 的位置时,我们可以看出来一个链家。里面有详细介绍如何格式化这个时间。我们点击上面的 Close 按钮:
显然上面的字体太小,展示的并不好看。我们点击右鼠标键:
在右边可以清楚地看到这个时间显示的 CSS 配置。为此,我们更新上面的代码为:
filters
| essql
qutgcodeery="SELECT LAST("@timestamp") + INTERVAL '2' HOUR AS "Event Time" FROM "bulbs" WHERE id = '1'"
| markdown
{getCell | formatdate 'HH:mm:ss'}
| render
css=".canvasMarkdown p{
font-size: 50px;
}"
在上面,我们添加了 ccs 代码部分。它可以帮我们定义字体的大小。我们设置这个字体为 50px:
重新点击 Run 按钮。这个时候,我们可以看到时间显示的字体变大了。
最终的显示结果tgcode为:
文章来源于互联网:Kibana:如何在 Canvas 中动态地显示时间
相关推荐: Observability:从零基础到能够完成微服务可观测性的专家 – Service Map 实践
现在的 IT 系统越来越复杂,而微服务也被广泛使用于越来越多的大型 IT 系统中。 微服务是一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。 对于一些大…