之前的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. FineReport简单部署

    一.部署方式 1.官网发布包部署 2.自定义tomcat部署 二.发布包部署 1.下载一个发布包:https://www.finereport.com/product/download 解压后打开bi ...

  2. WEB程序设计 第7版

    WEB程序设计 第7版   D11章基础知识1.1internet简介1.1.1起源1.1.2internet的含义1.1.3ip地址1.1.4域名1.2万维网1.2.1起源1.2.2web还是int ...

  3. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案中使用Onvif协议控制视频设备预置位转动

    EasyNVR支持预置位控制,包括转到指定预置位,设置指定预置位,删除指定预置位.预置位在安防领域有较为普遍的应用,可以进行很多既定位置的跳转,很方便.之前我们说过如何用Onvif协议进行设备的发现, ...

  4. 【NPDP笔记】第一章 新产品开发战略

    1.1 战略很重要 1.2 战略定义 使命/愿景/核心价值观:成为领导者 公司/经营战略:市场份额扩大10% 创新战略:强调技术,外部合作 职能战略:IT战略,人力资源战略 1.3明确组织方向 组织身 ...

  5. 对于之前已经push的项目增加.gitignore配置文件不起作用的处理

    .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方法就是先把本地缓存删除(改变成未track状态),然后再提交 ...

  6. sync 简单实现 父子组件的双向绑定

    这里主要是对vue文档中的sync进行一个再解释: 如果自己尝试的话,最好在已经使用emit 和prop实现了双向绑定的组件中尝试,以免出现不必要的错误: <!DOCTYPE html> ...

  7. kafka删除topic及其相关数据

    1.删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录 2.Kafka 删除topic ...

  8. 浏览器解析js和type判断数据类型

    ### 浏览器解析: - 1.当浏览器(内核.引擎)解析和渲染js的时候,会给js提供一个运行的环境,这个环境叫做“全局作用域(后端global / 客服端window scope)” - 2.代码自 ...

  9. c++中共享内存原理及实现

    共享内存 (也叫内存映射文件) 主要是通过映射机制实现的 , Windows 下进程的地址空间在逻辑上是相互隔离的 , 但在物理上却是重叠的 ; 所谓的重叠是指同一块内存区域可能被多个进程同时使用 , ...

  10. RDA的使用和说明

    一.RDA 说明 RDA(RemoteDiagnostic Agent)是oracle用来收集.分析数据库的工具,运行该工具不会改变系统的任何参数,RDA收集的相关数据非常全面,可以简化我们日常监控. ...