logstash插件配置-codec插件说明json和multiline
编码插件(Codec)
Codec 是 logstash 从 1.3.0 版开始新引入的概念(Codec 来自 Coder/decoder 两个单词的首字母缩写)。
在此之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,这全是因为有了 codec 设置。
所以,这里需要纠正之前的一个概念。Logstash 不只是一个input | filter | output 的数据流,而是一个 input | decode | filter | encode | output 的数据流!codec 就是用来 decode、encode 事件的。
codec 的引入,使得 logstash 可以更好更方便的与其他有自定义数据格式的运维产品共存,比如 graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用数据格式的其他产品等。
事实上,我们在第一个 “hello world” 用例中就已经用过 codec 了 —— rubydebug 就是一种 codec!虽然它一般只会用在 stdout 插件中,作为配置测试或者调试的工具。
1,采用json编码
这里通过nginx日志作为案例测试学习使用。修改nginx配置文件,将日志以json格式存储:
- log_format json '{"@timestamp":"$time_iso8601",'
- '"@version":"1",'
- '"host":"$server_addr",'
- '"client":"$remote_addr",'
- '"size":$body_bytes_sent,'
- '"responsetime":$request_time,'
- '"domain":"$host",'
- '"url":"$uri",'
- '"status":"$status"}';
- access_log /logs/nginx/access.log json;
重启nginx使其生效。
设置测试使用的logstash配置文件webnginx.conf:
- input {
- file {
- path => "/logs/nginx/access.log"
- type => "nginx"
- start_position => "beginning"
- add_field => { "key"=>"value"}
- codec => "json"
- }
- }
- output {
- stdout{
- codec => rubydebug{ }
- }
- }
logstash加载启动测试:
- logstash -f webnginx.conf
访问测试地址,显示如下(这里我将www.elk.com定向到了nginx所在的虚拟机)
- {
- "type" => "nginx",
- "url" => "/app/panels/timepicker/module.html",
- "tags" => [],
- "path" => "/logs/nginx/access.log",
- "@timestamp" => 2017-02-13T17:02:47.000Z,
- "size" => 2397,
- "domain" => "www.elk.com",
- "@version" => "1",
- "host" => "192.168.1.104",
- "client" => "192.168.2.16",
- "responsetime" => 0.0,
- "key" => "value",
- "status" => "200"
- }
补充说明:
日志格式中统一记录为字符串格式(即都带上双引号 “),然后再在 logstash 中用 filter/mutate 插件来变更应该是数值类型的字符字段的值类型。
2,合并多行数据(Multiline)
有些时候,应用程序调试日志会包含非常丰富的内容,为一个事件打印出很多行内容。这种日志通常都很难通过命令行解析的方式做分析。 logstash 正为此准备好了 codec/multiline 插件。测试:
- input {
- stdin {
- codec => multiline {
- pattern => "^\["
- negate => true
- what => "previous"
- }
- }
- }
- output {
- stdout {
- codec => rubydebug{ }
- }
- }
加载:logstash -f multiline.conf
效果如下:
- hello world
- hello logstash
- hello multiline
- [
- {
- "@timestamp" => 2017-02-13T17:29:47.658Z,
- "@version" => "1",
- "host" => "0.0.0.0",
- "message" => "[\nhello world\nhello logstash\nhello multiline",
- "tags" => [
- [0] "multiline"
- ]
- }
这个插件的原理很简单,就是把当前行的数据添加到前面一行后面,直到新进的当前行匹配 ^\[ 正则为止。这个正则还可以用 grok 表达式。
参考文章:
http://kibana.logstash.es/content/logstash/plugins/codec/multiline.html
logstash插件配置-codec插件说明json和multiline的更多相关文章
- [Linux实用工具]munin-node插件配置和插件编写
前面介绍了2篇munin使用的相关文章: [Linux实用工具]Linux监控工具munin的安装和配置 [Linux实用工具]Linux监控工具munin的展示(Nginx) 这次介绍一下mun ...
- Logstash学习系列之插件介绍
Logstash插件获取方式 插件获取地址: https://github.com/logstash-plugins 在线安装: /plugin install logstash-input-jdb ...
- 五十八.Kibana使用 、 Logstash配置扩展插件
1.导入数据 批量导入数据并查看 1.1 导入数据 1) 使用POST方式批量导入数据,数据格式为json,url 编码使用data-binary导入含有index配置的json文件 ]# ...
- 日志分析平台ELK之日志收集器logstash常用插件配置
前文我们了解了logstash的工作流程以及基本的收集日志相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13761906.html:今天我们来了解下l ...
- Logstash添加Protobuf解析插件
logstash收集日志时,日志部分是由google的protobuf工具打印的,直接利用json解析会造成部分无法解析的问题 搜索后发现有个logstash的protobuf插件 在logstash ...
- Logstash介绍及Input插件介绍
一.Logstash简介 Logstash是一个开源数据收集引擎,具有实时管道功能.Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地. Logstash管 ...
- ELK——Logstash 2.2 date 插件【翻译+实践】
官网地址 本文内容 语法 测试数据 可配置选项 参考资料 date 插件是日期插件,这个插件,常用而重要. 如果不用 date 插件,那么 Logstash 将处理时间作为时间戳.时间戳字段是 Log ...
- webpack快速入门——插件配置:HTML文件的发布
1.把dist中的index.html复制到src目录中,并去掉我们引入的js 2.在webpack.config.js中引入 const htmlPlugin = require('html-web ...
- k8s的flannel网络插件配置
flannel的网络插件配置 Kubernetes网络通信需要解决以下问题: (1)容器间通信:同一个Pod内的多个容器间的通信,lo (2)Pod通信:P ...
随机推荐
- 10.7 URI
URI: Uniform Resource Identifier 统一资源标识符 URL: Uniform Resource Locator 统一资源定位符 URN: Uniform R ...
- InstallSheild相关
一.关于使用InstallSheild制作安装包的总结. 1.定制化制作需要了解InstallScript语法,相关资料可以去网上查找,后续提供比较好的资料. 2.有些软件运行是需要一些环境的,譬如使 ...
- 洛谷1429 平面最近点对(KDTree)
qwq(明明可以直接分治过掉的) 但是还是当作联系了 首先,对于这种点的题,很显然的套路,我们要维护一个子树\(mx[i],mn[i]\)分别表示每个维度的最大值和最小值 (这里有一个要注意的东西!就 ...
- 洛谷3288 SCOI2014方伯伯运椰子(分数规划+spfa)
纪念博客又一次爆炸了 首先,对于本题中,我们可以发现,保证存在正整数解,就表示一定费用会降低.又因为一旦加大的流量,费用一定会变大,所以总流量一定是不变的 那么我们这时候就需要考虑一个退流的过程 对于 ...
- 安卓开发——WebView+Recyclerview文章详情页,解决高度问题
安卓开发--WebView+Recyclerview文章详情页,解决高度问题 最近在写一个APP时,需要显示文章详情页,准备使用WebView和RecyclerView实现上面文章,下面评论.出现了W ...
- 4.14——208. 实现 Trie (前缀树)
前缀树(字典树)是经典的数据结构,以下图所示: 本来处理每个节点的子节点集合需要用到set,但是因为输入规定了只有26个小写字母,可以直接用一个[26]的数组来存储. 关于ASCII代码: Java ...
- Apache Zookeeper Java客户端Curator使用及权限模式详解
这篇文章是让大家了解Zookeeper基于Java客户端Curator的基本操作,以及如何使用Zookeeper解决实际问题. Zookeeper基于Java访问 针对zookeeper,比较常用的J ...
- 浅议NetMQ常见模式和消息加密机制
浅议NetMQ常见模式和消息加密机制 概述 在传统企业级开发中,消息队列机制已经成为一种非常常见的技术实现手段,而基于NetMQ则看起来有点像一朵"奇葩",看起来从名字似乎是一个消 ...
- 【JavaScript】JS的坚实基础
前言 考虑到在后面的开发中,需要大量的使用js语言去进行开发,所以准备重新规整一下javascript的知识点,专门开了一个js的专栏,用来复习一下js语言.万事开头难,要是后面写的有问题的,欢迎 ...
- k8s入坑之路(9)k8s网络插件详解
Flannel: 最成熟.最简单的选择 Calico: 性能好.灵活性最强,目前的企业级主流 Canal: 将Flannel提供的网络层与Calico的网络策略功能集成在一起. Weave: 独有的功 ...