一、Kafka ->logstash ->elasticsearch

   logstash 5.X以上版本不兼容5.x以下版本,因此在升级logstash时会遇到很多坑。首先是配置的变化,可以参考如下配置:

input {kafka {bootstrap_servers => "XX:9092,YY:9093,ZZ:9094"    变化点:这里监听的是kafka的端口号topics => "xxxlog"group_id => "elasticconsumer"max_partition_fetch_bytes=> "4194304"  处理消息过大的场景codec => "json"}
}output {elasticsearch {hosts => ["XXX:9200"]index => "logstash-%{+YYYY-MM-dd}"codec => "json"}
}output {file {path => "/data01/logstash.log"flush_interval => 0}
}

 完成配置后可以通过如下命令来检测配置文件是否有语法错误:

bin/logstash -t -f config/kafka-logstash-es.conf

另外,elasticsearch 5.X版本的集群安装请参见:http://www.jianshu.com/p/9e3749daeb93

二、elasticsearch数据丢失

通过kibana监控返回的数据时,无意中发现返回的数据存在数据丢失的现象。将input数据保存进elasticsearch的同时,通过写入log日志文件中。通过如下命令查询elasticsearch中保存的数据时,发现数据在保存进elasticsearch的时候就已出现丢失现象:

get  _index/_type/_count?q=monitorId:XXX
get logstash-2017-03-21/logs/_count?q=monitorId:XXX

编写测试配置,将出错的json直接通过屏幕输入:

input {stdin {codec => json}
}output {stdout {codec => rubydebug}
}

又发现数据可以正常输出。那么问题出在哪一个环节呢?

通过查看elasticsearch中的日志,发现在解析json时系统偶尔会报String_Object 转化异常。是什么原因导致此问题的发生呢?

通过一步步追踪最终发现问题出在dynamic mapping环节。

ES如何对对动态类型字段做mapping的呢?ES在内部对一个index下的type会根据mapping来进行存储,所以要求type中的每个字段类型必须一致。例如对一个User表,如果有个name字段,那么一条user数据中的name为string类型的话,后续所有的user对象中的name都必须为string,否则做index时就会出错。

但是由于一些原因平台的数据在返回时,同一个type下的值,有的为String类型,有的却为Object对象,按照上面的逻辑在进行解析时异常是必然的了。

参见:http://jiangpeng.info/blogs/2014/11/24/elasticsearch-mapping.html

http://www.cnblogs.com/ningskyer/articles/5787702.html

http://blog.arganzheng.me/posts/datatype-in-elasticsearch.html

解决措施:统一平台返回的数据格式,将同一type下字段的值统一转化为String类型。

三、json长度过长elasticsearch存储异常

在解决问题二后发现kibana中依然有数据丢失的情况。分析elasticsearch的日志,发现平台返回的json长度过长导致elasticsearch在进行数据存储时异常。

那么针对此问题需要如何进行处理呢?下面给出实际的处理方案仅供参考:

A.logstash配置

input {kafka {bootstrap_servers =>"XXX:9092,YYY:9093,ZZZ:9094"topics => "klog"group_id => "elasticconsummer"codec => "json"}output {elasticsearch {hosts => ["XXX:9200","YYY:9200"]index => "logstash-%{+YYYY-MM-dd}"codec => "json"manage_template => truetemplate_overwrite => truetemplate_name => "kTemplate"template => "/data01/xxx.json"}}output {file {path =>"data01/logstash.log"flush_interval =>0}}}

B.模板的配置

{"template" : "logstash*","settings" : {"index.number_of_shards" : 5,"number_of_replicas" : 1,"index.refresh_interval" : "60s"},"mappings" : {"_default_" : {"_all" : {"enabled" : true},"dynamic_templates" : [{"string_fields" : {"match" : "*","match_mapping_type" : "string","mapping" : {"type" : "string", "index" : "not_analyzed", "omit_norms" : true, "doc_values": true,"fields" : {"raw" : {"type": "string","index" : "not_analyzed","ignore_above" : 256,"doc_values": true}}}}} ],"properties" : {//定义长度"callMethodResult": {"type": "string","index": "not_analyzed""ignore_above" : 256}}}}}
}

参见:http://m.blog.csdn.net/article/details?id=50823494

模板的配置参见:https://github.com/chenryn/ELKstack-guide-cn/blob/master/logstash/plugins/output/elasticsearch.md

其它坑请参见:http://www.jianshu.com/p/fa31f38d241e

四、离线环境下Kibana加载慢问题

在离线环境下发现kibana加载比较慢,跟踪定位后发现系统在离线环境上也会加载http://tiles.elastic.co/v2/manifest?my_app_version=5.2.0

将/kibana/src/server/config/schema.js中的manifestServiceUrl中的上述地址修改为http://localhost/即可

五、Kibana中文乱码

在实际使用过程中发现应用布署到生产环境后,在Kibana中的中文日志有乱码。将logstash采集的数据一份写入elasticsearch,另一份写入log,发现日志在写入log时已经是乱码。如果想要中文没有乱码,那么日志文件应该是UTF-8格式。我们可以用file命令查看日志的生成格式,如下:

[xxx@localhost logs]$ file app.log
app.log: UTF-8 Unicode English text, with very long lines

log4j的配置参考如下:

<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="./logs/app.log"/><param name="Encoding" value="UTF-8"/><param name="DatePattern" value="'.'yyyy-MM-dd"/>

但最终定位生产环境出现此问题的原因是没有指定tomcat的编码格式.

六、logstash TCP指定端口监听

通过./logstash-plugin list 查看logstash安装的插件

input {tcp {host => "XXX"port  =>  "5000"mode => "server"type => "microwiki"add_field => {"name"  => "Routh"}}
}output {file {path =>  "/data01/XXX"flush_interval => 0}}

定位问题参考:http://10452483.blog.51cto.com/10442483/1732225

ELK 5.X版本遇到的坑相关推荐

  1. pytorch,torch,torchvision的gpu版本安装避坑

    pytorch,torch,torchvision的gpu版本安装避坑 在线or离线安装 pytorch torch和torchvision 在线or离线安装 最近使用pytorch跑深度学习模型,需 ...

  2. YOLO V5 CPU版本安装踩坑记录

    YOLO V5 CPU版本安装踩坑记录 单纯的记录下yolov5进行检测遇到了点问题的解决方法 安装过程: 准备: 1,下载YOLOv5 github项目:https://github.com/ult ...

  3. android——记录从android studio2.3升级到android studio3.0版本遇到的坑

    今天手贱,升级到了AS3.0 ,结果遇到了坑.提示需要将gradle升级到3.5及以上版本.然后就开始动手升级.其中遇到了各种困难.首先,就是需要FQ下载.其次,就是配置后提示jcenter下的一个p ...

  4. Flink升级到1.4版本遇到的坑

    Flink 1.4没出来以前,一直使用Flink 1.3.2,感觉还算稳定,最近将运行环境升级到1.4,遇到了一些坑: 1.需要将可运行程序,基于1.4.0重新编译一次 2.对比了一下flink-co ...

  5. kubernetes1.4版本遇到的坑

    前些日子伴随着kubernetes1.4版本震撼发布,相信很多人试了一把部署,部署过程真的是很简单,我部署的过程中踩过很多很多坑,也相信很多人看过这篇哥们的博客.也看到我个人留言QQ问博主的问题,后来 ...

  6. iOS旧版微信SDK升级1.8.6版本小白踩坑记

    虽然写了多年前端,但是一直都是写的lua,这次突然接到通知要升级微信SDK,以前也不是我捣鼓的,这下可愁坏了.本着万事不明,先备份改错的心态去下了微信SDK然后对比了下,发现跟以前没太大区别.主要区别 ...

  7. ant design vue 1.7.8版本treeSelect组件坑

    treeSelect组件对于一些属性官方文档没有详细说明踩坑 勾选效果图: 搜索效果图: html: <a-tree-selectclass="treeinput"v-mod ...

  8. YSDK(应用宝)最新版本接入的坑

    2020年5月15日备注:根据国家广电局的要求,游戏内必须实名制以及添加未成年人防沉迷限制要求,所以应用宝进行了一波更新,笔者写这篇文档时,应用宝官方文档的版本是1.5.12. 某日,接到运营大佬的紧 ...

  9. 谷歌浏览器扩展V3版本遇到的坑

    据说V2版本的插件马上要用不了了,所以升级了V3,遇到一个很坑的问题 我需要在某个网站去请求跟该网站非同源的接口,会有跨域问题,V2版本可以使用content_security_policy能够支持跨 ...

最新文章

  1. Eclipse Tomcat的一些基本配置
  2. VTK:PolyData之TransformPipeline
  3. Python核心编程(第九章)--文件和输入输出
  4. Linux内核 crypto文件夹 密码学知识学习
  5. oracle中多个数据库连接池,数据库连接池为什么要建立多个连接
  6. undefined reference to `inflateInit2_'
  7. [转载] Numpy_索引操作
  8. zookeeper分布式协调服务的使用一
  9. 有谁知道千千静听中的波形特效是怎么做的?
  10. 抖音 触摸精灵_触控精灵app下载-触控精灵手机版 v1.3.2 - 安下载
  11. ART 虚拟机 — Interpreter 模式
  12. LATEX--页边距设置
  13. android 开源收藏
  14. 【教学类-30-02】10以内加法题不重复(一页两份)(包括6以内、7以内、8以内、9以内、10以内加法题 只抽取25个)
  15. 如何选择第三方鉴定机构?
  16. 移动端:js判断苹果ios各类机型
  17. windows计划任务定时任务
  18. 区块链让知识产权保护更容易
  19. spring中的loc和aop
  20. Shakira feat Lil Wayne - Give it up to me

热门文章

  1. python毕业设计开题报告-基于Python的教学互动系统的设计与实现开题报告
  2. python json.loads()中文问题-解决Python下json.loads()中文字符出错的问题
  3. python编写程序-Python 编程速成(推荐)
  4. UVa11019 Matrix Matcher(hash+kmp)
  5. Gallery的使用(一)
  6. Loadrunner12解决无法录制chrome及脚本为空问题
  7. WHUST 2015 Summer Contest #11
  8. ZOJ 3798--解题报告
  9. Mongodb数据分片的实现
  10. 下拉框选中事件ajax,LayUI中select下拉框选中触发事件