当前位置: 首页 > news >正文

json logstash 解析失败 ctrl-code 1

"问题:
从windows 通过flume传输到kafka的日志(GBK),然后再logstash 消费,用json 解析。有些日志解析报错:ctrl-code 1(SOH 文本头)。
分析:
在终端上用gbk编码查看会有 方框的字符,可以判断该字符就是json 无法识别的控制字符(SOH)。
但是不知道kafka消费的时候显示成什么字符,如果知道这个(SOH)然后替换成,json 可以解析的字符就可以了。

解决办法:
在日志里发现每一个(SOH)处,都显示为\u0001,这是16进制的ascll code 1。和控制字符的code1也是对应的,断定(SOH)被解析成\u0001这个字符。
input kafka中之前都是直接codec => json{charset =>[""GBK""]},相当于在消费的时候先进行json 解析,这样很无力,一直报错。

换个思路:
1,先无格式plain消费,然后把SOH(\u0001)
2,替换成空格(因为soh无意义,替换成空格不影响源信息)gsub =>["message","\u0001"," "],
3,再用 json {source => ""message""} 进行解析,这样就可以了。
--------------------------配置信息---------------------------------
input {
kafka {
bootstrap_servers => ""ZBSZ1-LOG-KFK01:9092,ZBSZ1-LOG-KFK02:9092,ZBSZ1-LOG-KFK03:9092""
group_id => ""es-rzrqbp02""
topics_pattern => ""rzrqbp-C010001""
value_deserializer_class => ""org.apache.kafka.common.serialization.ByteArrayDeserializer"" #源字节编码转换器,因为一直以GBK编码传输
codec => plain{charset => [""GBK""]}
#codec => json
}
}
filter {
mutate {
convert => { ""[indicator][usedtime]"" => ""integer"" }
gsub =>[""message"",""\u0001"","" ""]
}
json {
source => ""message""
}
date {
match => [""[time_stamp]"",""UNIX_MS""]
target => ""@timestamp""
}

}

output {
elasticsearch {
hosts => [""ZBSZ1-LOG-ES01:9200"", ""ZBSZ1-LOG-ES02:9200"", ""ZBSZ1-LOG-ES03:9200""]
index => ""app-rzrqbp-%{+YYYY.MM.dd}""
document_id => ""%{[indicator][msgid]}""
}

}
"
json logstash 解析失败 ctrl-code 1

转载于:https://blog.51cto.com/11209357/2059041

相关文章:

  • 5-2 equal getClass or instanceOf
  • linux kernel编译配置相关
  • 不要在构造函数中抛出异常
  • 老男孩教育教您批量建立nagios配置文件的方法
  • 使用jQuery获取session中存储的list集合
  • 如何理解接口-Java系列
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Linux下的文件I/O编程
  • 作为完美主义者(强迫症)如何将linux的eth1网卡修改为eth0网卡
  • WEB服务FTP概述
  • scrapy学习之路4(itemloder的使用)
  • 基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署
  • MQL:5分钟双均线EA
  • 我的PMP备考之路
  • 苹果承认降价电池紧缺,如果你是iPhone6 Pus用户不用再等了
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 4. 路由到控制器 - Laravel从零开始教程
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript实现分页效果
  • PHP 小技巧
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 初探 Vue 生命周期和钩子函数
  • 大型网站性能监测、分析与优化常见问题QA
  • 分类模型——Logistics Regression
  • 回顾2016
  • 说说我为什么看好Spring Cloud Alibaba
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​2020 年大前端技术趋势解读
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (第一天)包装对象、作用域、创建对象
  • (算法)Game
  • .net core 6 redis操作类
  • .Net Core与存储过程(一)
  • .net refrector
  • .net6 webapi log4net完整配置使用流程
  • .net6Api后台+uniapp导出Excel
  • @property python知乎_Python3基础之:property
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [APUE]进程关系(下)
  • [BZOJ 1040] 骑士
  • [bzoj4240] 有趣的家庭菜园
  • [C++][基础]1_变量、常量和基本类型
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [java面试]宇信易诚 广州分公司 java笔试题目回忆录
  • [LeetCode] Sort List
  • [linux][调度] 内核抢占入门 —— 高优先级线程被唤醒时会立即抢占当前线程吗 ?
  • [Manacher]【学习笔记】
  • [python]python监听、操作键盘鼠标库pynput详细教程
  • [USACO16FEB]负载平衡Load Balancing_Silver(NlogNlogN解法)
  • [Vulnhub]靶场 Web Machine(N7)
  • [VulnHub靶机渗透] dpwwn: 1