zoukankan      html  css  js  c++  java
  • logstash filter mutate output

    3、数据修改(Mutate)

    (1)正则表达式替换匹配字段
    gsub可以通过正则表达式替换字段中匹配到的值,只对字符串字段有效,下面是一个关于mutate插件中gsub的示例(仅列出filter部分):
    filter {
    mutate {
    gsub => ["filed_name_1", "/" , ""]
    }
    }
    这个示例表示将filed_name_1字段中所有"/"字符替换为"
    "。

    (2)分隔符分割字符串为数组
    split可以通过指定的分隔符分割字段中的字符串为数组,下面是一个关于mutate插件中split的示例(仅列出filter部分):
    filter {
    mutate {
    split => ["filed_name_2", "|"]
    }
    }
    这个示例表示将filed_name_2字段以"|"为区间分隔为数组。

    (3)重命名字段
    rename可以实现重命名某个字段的功能,下面是一个关于mutate插件中rename的示例(仅列出filter部分):
    filter {
    mutate {
    rename => { "old_field" => "new_field" }
    }
    }
    这个示例表示将字段old_field重命名为new_field。

    (4)删除字段
    remove_field可以实现删除某个字段的功能,下面是一个关于mutate插件中remove_field的示例(仅列出filter部分):
    filter {
    mutate {
    remove_field => ["timestamp"]
    }
    }
    这个示例表示将字段timestamp删除。

    综合例子:
    input {
    stdin {}
    }
    filter {
    grok {
    match => { "message" => "%{IP:clientip} [%{HTTPDATE:timestamp}] %{QS:referrer} %{NUMBER:response} %{NUMBER:bytes}" }
    remove_field => [ "message" ]
    }
    date {
    match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
    }
    mutate {
    rename => { "response" => "response_new" }
    convert => [ "response","float" ]
    gsub => ["referrer",""",""]
    remove_field => ["timestamp"]
    split => ["clientip", "."]
    }
    }
    output {
    stdout {
    codec => "rubydebug"
    }
    }

    7.5、Logstash输出插件(output)
    output是Logstash的最后阶段,一个事件可以经过多个输出,而一旦所有输出处理完成,整个事件就执行完成。 一些常用的输出包括:
    file: 表示将日志数据写入磁盘上的文件。
    elasticsearch:表示将日志数据发送给Elasticsearch。Elasticsearch可以高效方便和易于查询的保存数据。
    graphite:表示将日志数据发送给graphite,graphite是一种流行的开源工具,用于存储和绘制数据指标。此外,Logstash还支持输出到nagios、hdfs、email(发送邮件)和Exec(调用命令执行)。

    1、输出到标准输出(stdout)
    stdout与之前介绍过的stdin插件一样,它是最基础和简单的输出插件,下面是一个配置实例:
    output {
    stdout {
    codec => rubydebug
    }
    }
    stdout插件,主要的功能和用途就是用于调试,这个插件,在前面已经多次使用过。这里不再过多介绍。

    2、保存为文件(file)
    file插件可以将输出保存到一个文件中,配置实例如下:
    output {
    file {
    path => "/data/log3/%{+yyyy-MM-dd}/%{host}_%{+HH}.log"
    }
    上面这个配置中,使用了变量匹配,用于自动匹配时间和主机名,这在实际使用中很有帮助。

    3、输出到elasticsearch
    Logstash将过滤、分析好的数据输出到elasticsearch中进行存储和查询,是最经常使用的方法。下面是一个配置实例:
    output {
    elasticsearch {
    host => ["172.16.213.37:9200","172.16.213.77:9200","172.16.213.78:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
    manage_template => false
    template_name => "template-web_access_log"
    }
    }

    上面配置中每个配置项含义如下:
    host:是一个数组类型的值,后面跟的值是elasticsearch节点的地址与端口,默认端口是9200。可添加多个地址。
    index:写入elasticsearch的索引的名称,这里可以使用变量。Logstash提供了%{+YYYY.MM.dd}这种写法。在语法解析的时候,看到以+ 号开头的,就会自动认为后面是时间格式,尝试用时间格式来解析后续字符串。这种以天为单位分割的写法,可以很容易的删除老的数据或者搜索指定时间范围内的数据。此外,注意索引名中不能有大写字母。
    manage_template:用来设置是否开启logstash自动管理模板功能,如果设置为false将关闭自动管理模板功能。如果我们自定义了模板,那么应该设置为false。
    template_name:这个配置项用来设置在Elasticsearch中模板的名称。

  • 相关阅读:
    如何理解redo和undo的作用
    自建NAS如何使用大于2TB的硬盘(从分区开始)
    Oracle 了解 DDL 操作与 REDO 的关系
    oracle 控制文件的重建
    Oracle 表空间的日常维护与管理
    解决debian 9 重启nameserver失效问题
    Vmware复制完好的linux目录后网卡操作
    RHEL6.X设置163yum源
    【转载】Eclipse快捷键大全
    【转】Java:String、StringBuffer和StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/xuliangwei/p/12343074.html
Copyright © 2011-2022 走看看