如何解析所需字段-ELK应用

标签:无 1921人阅读 评论(0)

常说的ELK是指包括 elasticsearchlogstash kibana 的一套技术栈,常用来处理日志等数据。

其部署架构多种多样。常见的一种分离式的部署方式为:应用->kafka->logstash->elasticsearch->kibana。采用这种部署架构,需要解决的问题就是从kafka中获取的message字段是一个单独的完整json串,如何将它解析成不同的字段以供之后做聚合等数据分析操作。

目前的解决方法是:

logstash配置文件中添加filter项。

filter {

         dissect {

                   mapping => {

                            “message” => “{%{?arg1}:%{&arg1},%{?arg2}:%{&arg2}}”

}

}

}

dissect适合对具有简单模式的字段进行解析切分。

而采用cjson生成的json串中会带有\n\t,\n\t字符,dissect不支持对此类字符的匹配,所以有了以下修改,现将这些字符去掉。

filter {

         mutate {

                   gsub => [“message”,”\n”,””]

gsub => [“message”,”\t”,””]

}

         dissect {

                   mapping => {

                            “message” => “{%{?arg1}:%{&arg1},%{?arg2}:%{&arg2}}”

}

}

}

 

至此,kibana中会出现json中各个字段。

 

该解决方法仍有不足之处:

1.       如果字段本身含有:,等分割符,则会被误匹配截断。

2.       无法动态调整json串中的字段个数。

 

仍待解决。


查看评论

暂无评论

发表评论
  • 评论内容:
      
    个人资料
    文章分类
    发表时间
首页
团队介绍
发展历史
组织结构
MESA大事记
新闻中心
通知
组内动态
科研成果
专利
论文
项目
获奖
软著
人才培养
MESA毕业生
MESA在读生
MESA员工
招贤纳士
走进MESA
学长分享
招聘通知
招生宣传
知识库
文章
地址:北京市朝阳区华严北里甲22号楼五层 | 邮编:100029
邮箱:nelist@iie.ac.cn
京ICP备15019404号-1