我已经在Google Dapper(http://research.google.com/pubs/pub36356.html)和eBay CAL事务日志框架(http://devopsdotcom.files.wordpress.com/2012/11/screen-shot-2012-11-11-at-10-06-39-am.png)中实现了树状结构的分布式事务日志记录库。
日志格式
TIMESTAMP HOSTNAME DATACENTER ENVIRONMENT EVENT_GUID PARENT_GUID TRACE_GUID APPLICATION_ID TREE_LEVEL TRANSACTION_TYPE TRANSACTION_NAME STATUS_CODE DURATION(in ms) PAYLOAD(key1=value2,key2=value2)
GUID HEX NUMBER FORMAT
MURMER_HASH(HOSTNAME + DATACENTER + ENVIRONMENT)-JVM_THREAD_ID-(TIME_STAMP+Atomic Counter)
我想要做的是将此格式与Kibana UI集成,当用户想要搜索并点击TRACE_GUID时,它将显示与分布式CALL图类似的内容,以显示花费的时间。这是UI http://twitter.github.io/zipkin/。这将是伟大的。我不是UI开发人员,如果有人可以指出我如何做这将是伟大的。
此外,我想知道如何索引弹性搜索有效负载数据,以便用户指定一些表达式,如有效负载(持续时间> 1000),然后,弹性搜索将带来满足条件的所有日志。此外,我想将Payload索引为Name = Value对,以便用户可以查询某些正则表达式(key3 = value2或key4 = exception )。如果可以实现,请告诉我。任何帮助指针都会很棒..
谢谢, Bhavesh
答案 0 :(得分:1)
在elasticsearch中进行良好搜索的第一步是从数据中创建字段。使用日志,logstash是正确的工具。 grok {}过滤器使用模式(现有或用户定义的正则表达式)将输入拆分为字段。
您需要确保它已映射到整数(例如,模式中的%{INT:duration:int})。然后,您可以查询elasticsearch的“duration:> 1000”以获得结果。
Elasticsearch使用lucene查询引擎,因此您可以根据该查询找到示例查询。