之前的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过滤插件的更多相关文章

  1. Logstash收集nginx日志之使用grok过滤插件解析日志

    grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [ ...

  2. fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)(转)

    fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤) Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或 ...

  3. Logstash过滤插件

    filter初级 Logstash安装 ### 设置YUM源 # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch # t ...

  4. Vanilla Masker – 功能强大的输入过滤插件

    Vanilla Masker 是一个纯 JavaScript 实现的输入内容过滤和自动转换插件.现在你可以使用一个简单而纯粹的 JavaScript 库来控制你的 input 元素,而不需要加载 jQ ...

  5. Filter Conditions 过滤条件

    <pre name="code" class="html">Filter Conditions 过滤条件: Rsyslog 提供4种不同类型的&qu ...

  6. django-admin 仿写stark组件action,filter筛选过滤,search查询

    写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染, ...

  7. 数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤)

    数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤) map()方法返回一个由原数组中每一个元素调用一个指定方法后返回的新数组 reduce()方法接受一个函数作 ...

  8. Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]

    如果你经常使用Firefox火狐浏览器那么一定知道Adblock Plus这款广告过滤插件,功能非常强大,但是Adblock Plus广告过滤插件自带的过滤规则并不多,而且也不太适合我们中国的网站,在 ...

  9. 使用Logstash filter grok过滤日志文件

    Logstash提供了一系列filter过滤plugin来处理收集到的log event,根据log event的特征去切分所需要的字段,方便kibana做visualize和dashboard的da ...

随机推荐

  1. nginx安装和命令

    1. nginx安装 1.1 mac上安装 brew search nginx brew install nginx 1.2 windows上安装 下载nginx.zip,解压到D盘,发送快捷方式到桌 ...

  2. 基于term vector深入探查数据

    1.term vector介绍 获取document中的某个field内的各个term的统计信息 term information: term frequency in the field, term ...

  3. python |elasticsearchs操作es的例子

    from elasticsearch import Elasticsearch import json import time es = Elasticsearch(['es地址:9200'],ign ...

  4. Java 面向接口的编程

    面向接口的编程 什么是面向接口编程呢?我个人的定义是:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能 ...

  5. Web API之Web Components

    本文参考<你的前端框架要被web组件替代了>. 于2011年面世的Web Components是一套功能组件,让开发者可以使用 HTML.CSS 和 JavaScript 创建可复用的组件 ...

  6. 零基础C#网站开发实战教学(全套)最新更新2019-12-16。。。

    这是林枫山自己编写制作的全套Visual Studio 2013 C# 网站开发案例实战教学教程,欢迎下载学习. 下载目录链接如下(如果链接下载不了,请加QQ:714259796获取教程): 网站界面 ...

  7. golang遍历文件夹

    golang遍历文件夹: func main() { //方式一 filepath.Walk("temp/", func (path string, info os.FileInf ...

  8. 最常见的Java面试题及答案汇总(三)

    上一篇:最常见的Java面试题及答案汇总(二) 多线程 35. 并行和并发有什么区别? 并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. 并行是在不同实体上的多个事 ...

  9. CentOS升级kernel

    CentOS升级kernel 升级命令: yum update kernel yum update kernel-devel yum update kernel-firmware yum update ...

  10. Google BERT摘要

    1.BERT模型 BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为dec ...