logstash.filter.kv Exception while parsing kv 解决办法

简介: logstash.filter.kv Exception while parsing kv 解决办法

异常信息如下

Exception while parsing kv


640.jpg

查看 logstash 配置文件


 

kv {
        source => "custmsg"
        field_split => ","
        value_split => "="
    }


那肯定是 custmsg 的问题了,是不是 custmsg 里面存在 “\n” 导致 kv filter 如何解析。  在 custmsg 中去掉 "\n" 试试


mutate {  
           gsub => [
                    "custmsg","\n", "" ,
                    "custmsg","\r", ""
                   ]  
           }

 

下面介绍 logstash  mutate  插件


mutate插件可以对事件中的数据进行修改,包括rename、update、replace、convert、split、gsub、uppercase、lowercase、strip、remove_field、join、merge等功能。


栗子

1、rename

对于已经存在的字段,重命名其字段名称。

 

filter {
    mutate {
        rename => ["syslog_host", "host"]
    }
}


2、update

更新字段内容,如果字段不存在,不会新建


filter {
    mutate {
        replace => { "message" => "%{source_host}: My new message" }
    }
}


3、replace


与 update 功能相同,区别在于如果字段不存在则会新建字段


filter {
    mutate {
        replace => { "message" => "%{source_host}: My new message" }
    }
}


4、convert


数据类型转换。


filter {
    mutate {
        convert => ["request_time", "float"]
    }
}

5、gsub


gsub 提供了通过正则表达式实现文本替换的功能。

filter {
    mutate {
        gsub => [
            # replace all forward slashes with underscore
            "fieldname", "/", "_",
            # replace backslashes, question marks, hashes, and minuses
            # with a dot "."
            "fieldname2", "[\\?#-]", "."
        ]
    }
}

6、uppercase/lowercase

大小写转换


filter {
    mutate {
        uppercase => [ "fieldname" ]
    }
}

7、split


将提取到的某个字段按照某个字符分割


filter {
    mutate {
        split => ["message", "|"]
    }
}

针对字符串 "123|321|adfd|dfjld*=123",可以看到输出结果:

{
    "message" => [
        [0] "123",
        [1] "321",
        [2] "adfd",
        [3] "dfjld*=123"
    ],
    "@version" => "1",
    "@timestamp" => "2014-08-20T15:58:23.120Z",
    "host" => "raochenlindeMacBook-Air.local"
}

8、strip


类似 trim,只去除首尾的空白字符

filter {
    mutate {
        strip => ["field1", "field2"]
    }
}



9、remove_field


删除字段:

filter {
    mutate {
        remove_field => [ "foo_%{somefield}" ]
    }
}

10、join


将类型为 array 的字段中的 array 元素使用指定字符为分隔符聚合成一个字符串。

如我们可以将 split 分割的结果再重新聚合起来:


filter {
    mutate {
        split => ["message", "|"]
    }
    mutate {
        join => ["message", ","]
    }
}

输出结果:


{
    "message" => "123,321,adfd,dfjld*=123",
    "@version" => "1",
    "@timestamp" => "2014-08-20T16:01:33.972Z",
    "host" => "raochenlindeMacBook-Air.local"
}

11、merge


对于几个类型为 array 或 hash 或 string 的字段,我们可以使用 merge 合并


filter {
    mutate {
        merge => [ "dest_field", "added_field" ]
    }
}


需要注意的是,array 和 hash 两个字段是不能 merge 的。

相关文章
|
程序员 编译器 C语言
最新Dev-C++下载安装以及C语言环境搭建教程(含C语言入门教程)
最新Dev-C++下载安装以及C语言环境搭建教程(含C语言入门教程)
1959 0
|
运维 网络协议 安全
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
564 0
|
Java Linux 索引
ElasticSearch常见的报错及解决
ElasticSearch常见的报错及解决
799 0
|
Web App开发 监控 Kubernetes
容器技术入门3:chaos混沌工程
参加冬季实战营第四期:零基础容器技术实战。参加学习一下,教程很好,做笔记记录一下。本文记录冬季实战营第四期:零基础容器技术实战动手实战-Chaos带你快速上手混沌工程。
1766 0
容器技术入门3:chaos混沌工程
|
消息中间件 Arthas Java
RocketMQ—一次连接namesvr失败的案例分析
项目组在使用RocketMQ时遇到Consumer连接Name Server失败的问题,异常显示连接特定地址失败。通过Arthas工具逐步分析代码执行路径,定位到创建Channel返回空值导致异常。进一步跟踪发现,问题源于Netty组件在初始化`ByteBufAllocator`时出现错误。分析依赖后确认存在Netty版本冲突。解决方法为排除冲突的Netty包,仅保留兼容版本。
979 0
RocketMQ—一次连接namesvr失败的案例分析
|
安全 API 调度
异步编程中常见的问题和处理方式
【6月更文挑战第23天】在python中`asyncio` 提供PriorityQueue和LifoQueue,用于不同检索策略。异步编程需注意任务调度、错误处理和资源管理,以提高响应性和避免阻塞。
492 7
异步编程中常见的问题和处理方式
|
JSON 前端开发 JavaScript
Web中的客户端和服务器端
Web中的客户端和服务器端
655 1
|
Java
一文搞懂:中文乱码原因以及解决方案
一文搞懂:中文乱码原因以及解决方案
382 0
|
数据可视化
R语言中实现sem进行结构方程建模和路径图可视化(上)
R语言中实现sem进行结构方程建模和路径图可视化