grafana elasticsearch date类型问题

  • 大致的数据格式
{
    "createTime": 1484967199,
    "ip": "localhost",
    "appId": "10000",
    "threadName": "Thread-acceptor-1",
    "level": "info",
    "type": "error",
    "tag": "tag1",
    "module": "module1",
    "detail": "some description"
}
  • 从kafka读取数据后由storm计算后直接将es客户端写入es。

  • 使用grafana配置数据源,其中使用自定义的字段createTime。

  • 这里写图片描述

  • 配置grafana的dashboard的panel,结果报错,Invalid number format [epoch_millis#]

  • 是时间类型的错误,查下es字段的mapping,
http://132.122.252.22:9200/flume-index/_mapping
{
    "flume-index": {
        "mappings": {
            "distributed-log": {
                "properties": {
                    "appId": { "type": "string" },
                    "createTime": { "type": "long" },
                    "detail": { "type": "string" },
                    "ip": { "type": "string" },
                    "level": { "type": "string" },
                    "module": { "type": "string" },
                    "tag": { "type": "string" },
                    "threadName": { "type": "string" },
                    "type": { "type": "string" } }
            }
        }
    }
}

没有指定es的mapping,所以根据java类型,当storm推数据到es时则会当做long型,具体格式如下,这导致grafana根据createTime查询错误,需要更改createTime的mapping。

  • 先删除原来的索引,
curl -XDELETE 'localhost:9200/flume-index/?pretty'
  • 再重新建立新索引,且指定createTime字段为date类型,且格式为默认即可。
curl -XPUT 'localhost:9200/flume-index/?pretty' -d 
'
{
    "mappings": {
        "distributed-log": {
            "properties": {
                "appId": {
                    "type": "string"
                },
                "createTime": {
                    "type": "date"
                },
                "detail": {
                    "type": "string"
                },
                "ip": {
                    "type": "string"
                },
                "level": {
                    "type": "string"
                },
                "module": {
                    "type": "string"
                },
                "tag": {
                    "type": "string"
                },
                "threadName": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        }
    }
}
'
  • 再用json的字符串格式传入后,es即可以通过这个mapping进行转换。grafana也可以根据时间查出数据来。

  • 如果允许也可以直接使用es的_timestamp字段,但它并非准确的数据生成时间。es默认没有开启timestamp的记录,可以用下面开启,即有了_timestamp字段。

curl -XPOST localhost:9200/flume-index -d '
{
    "mappings": {
        "_default_": {
            "_timestamp": {
                "enabled": true
            }
        }
    }
}
'

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/241828

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。