filter-mutate过滤插件
之前的nginx日志使用grok匹配,但是后来发现nginx的日志中每个值之间都使用了分隔符"|",这下就可以使用mutate来分隔出每个字段的含义,同时还减少了运算。
描述
mutate过滤器允许您对字段执行常规突变。您可以重命名,删除,替换和修改事件中的字段。
长用配置选项:
- rename:重命令字段
 - update:更新字段值,如果字段不存在,则不执行操作
 - convert:将字段转换成 其它类型
 - copy:将字段复制到另一字段
 - join:使用分隔符加入数组
 - lowercase:将字符串转换为小写
 - replace:用新值替换字段的值
 - split:使用分隔符将字段拆分为数组。仅适用于字符串字段
 - uppercase:将字符串转换为大写的等效字符串
 
官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html
如下使用了分隔符进行处理,分隔出来的字段的数组下标是从0开始的。
input {
  file {
    path => "/tmp/nginx.log"
    start_position => "beginning"
  }
}
filter {
  mutate {
    split => ["message", "|"]
      add_field => {
        "timestamp" => "%{[message][0]}"
        "remote_addr" => "%{[message][1]}"
        "request_all" => "%{[message][2]}"
        "status" => "%{[message][3]}"
        "body_bytes_sent" => "%{[message][4]}"
        "request_time" => "%{[message][5]}"
        "request_body" => "%{[message][6]}"
        "http_referer" => "%{[message][7]}"
        "http_user_agent" => "%{[message][8]}"
        "http_x_forwarded_for" => "%{[message][9]}"
        "upstream_addr" => "%{[message][10]}"
        "upstream_response_time" => "%{[message][11]}"
        "upstream_cache_status" => "%{[message][12]}"
        "scheme" => "%{[message][13]}"
    }
  }
  grok {
    match => {
      "request_all" => "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}"
    }
    remove_field => [ "request_all" ]
    remove_field => [ "message" ]
  }
    convert => {
      "body_bytes_sent" => "integer"
      "request_time" => "integer"
    }
}
output {
    elasticsearch {
      hosts => ["http://192.168.20.6:9200"]
      index => "logstash-nginx_local"
    }
}
												
											filter-mutate过滤插件的更多相关文章
- Logstash收集nginx日志之使用grok过滤插件解析日志
		
grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [ ...
 - fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)(转)
		
fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤) Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或 ...
 - Logstash过滤插件
		
filter初级 Logstash安装 ### 设置YUM源 # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch # t ...
 - Vanilla Masker – 功能强大的输入过滤插件
		
Vanilla Masker 是一个纯 JavaScript 实现的输入内容过滤和自动转换插件.现在你可以使用一个简单而纯粹的 JavaScript 库来控制你的 input 元素,而不需要加载 jQ ...
 - Filter Conditions 过滤条件
		
<pre name="code" class="html">Filter Conditions 过滤条件: Rsyslog 提供4种不同类型的&qu ...
 - django-admin 仿写stark组件action,filter筛选过滤,search查询
		
写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染, ...
 - 数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤)
		
数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤) map()方法返回一个由原数组中每一个元素调用一个指定方法后返回的新数组 reduce()方法接受一个函数作 ...
 - Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]
		
如果你经常使用Firefox火狐浏览器那么一定知道Adblock Plus这款广告过滤插件,功能非常强大,但是Adblock Plus广告过滤插件自带的过滤规则并不多,而且也不太适合我们中国的网站,在 ...
 - 使用Logstash filter grok过滤日志文件
		
Logstash提供了一系列filter过滤plugin来处理收集到的log event,根据log event的特征去切分所需要的字段,方便kibana做visualize和dashboard的da ...
 
随机推荐
- Mybatis出错: Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.cyf.pojo.User with invalid types () or values ()
			
org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ib ...
 - Qt编写安防视频监控系统(界面很漂亮)
			
一.前言 视频监控系统在整个安防领域,已经做到了烂大街的程序,全国起码几百家公司做过类似的系统,当然这一方面的需求量也是非常旺盛的,各种定制化的需求越来越多,尤其是这几年借着人脸识别的东风,发展更加迅 ...
 - jenkins自动化视频地址
			
1.腾讯课堂的视频 http://www.ctnrs.com/study.html 我的课程所有列表 2.百度网盘里面的
 - url、href、src
			
一.URL的概念 统一资源定位符(或称统一资源定位器/定位地址.URL地址等,英语:Uniform Resource Locator,常缩写为URL),有时也被俗称为网页地址(网址).如同在网络上的门 ...
 - element ui + sortablejs实现表格的行列拖拽
			
<template> <div class="container"> <el-table :data="tableData" bo ...
 - sqlalchemy python中的mysql数据库神器
			
在介绍sqlalchemy之前,我们先了解一下ORM. ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.也就是说ORM 将数据库中的表与面向对象语言中的类建 ...
 - ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)
			
验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...
 - git clean用法
			
git clean用法 想批量删除branch中新加的文件(untracked files),,git reset --hard不行- 首先确认要删除的文件 git clean -fd -n ...
 - python笔记:删除列表元素和根据索引查找元素
			
查找元素 #查找元素 >>> member=['张三','李四','王五','张麻子'] >>> member[0] '张三' #交换元素 >>> ...
 - U9期间在手量控制
			
1.路径 库存管理->参数控制 2.设置节点 期间在手量控制时机 :单据实时控制.日关账控制.不控制 3.实现效果