Logstash中filter常用的语法

1.根据条件删除当前消息

   if "caoke" not in [docker]{
     drop {}
   }
   if "caoke" != [className]{
      drop {}
   }
  1. 删除字段
    remove_field => ["message"]
  2. 添加字段
    mutate{
         add_field => {
             "timestamp" => "%{[message]}"
       }
     }
    
  3. 转换字段类型
    mutate{
           convert => {
                   "ip" => "string"
           }
    }
    
  4. 重命名字段
    mutate{
            convert => {
                    "ip" => "string"
            }
            rename => {
                    "ip"=>"IP"
            }
    }
    
  5. 字段取值 %{message}

7.logstash 条件判断语句

  使用条件来决定filter和output处理特定的事件。logstash条件类似于编程语言。条件支持if、else if、else语句,可以嵌套。 
  比较操作有: 
  相等: ==, !=, <, >, <=, >= 
  正则: =~(匹配正则), !~(不匹配正则) 
  包含: in(包含), not in(不包含) 
  布尔操作: 
  and(与), or(或), nand(非与), xor(非或) 
  一元运算符: 
  !(取反) 
  ()(复合表达式), !()(对复合表达式结果取反) 

if[foo] in "String"在执行这样的语句是出现错误原因是没有找到叫做foo的field,无法把该字段值转化成String类型。所以最好要加field if exist判断。
判断字段是否存在,代码如下:

if ["foo"] {
   mutate {
     add_field => { "bar" => "%{foo}"}
   }
 }

 example:
   filter{
       if "start" in [message]{
           grok{
               match => xxxxxxxxx
           }
       }else if "complete" in [message]{
           grok{
               xxxxxxxxxx
           }
       }else{
           grok{
               xxxxxxx
           }
       }

   }

   

  1. 创建模板
PUT _template/temp_jiagou
{
  "order": 0,
  "index_patterns": [
    "jiagou-*"
  ],
  "settings": {
    "index": {
      "number_of_shards": "1",
      "number_of_replicas": "1",
      "refresh_interval": "5s"
    }
  },
  "mappings": {
    "_default_": {
      "properties": {
        "logTimestamp": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss.SSS||epoch_millis"
        },
        "partition": {
          "type": "integer"
        },
        "offset": {
          "type": "long"
        },
        "lineNum": {
          "type": "integer"
        }
      }
    }
  }
}
Logstash是一个开源的数据收集引擎,用于实时处理和转发日志和其他事件数据。它使用简单的配置文件来定义数据流的输入、过滤和输出。以下是Logstash的基本语法组成: 1. 输入插件(Input):用于从不同来源收集数据。常见的输入插件包括file(读取文件)、stdin(读取标准输入)、tcp(接收TCP数据)等。 2. 编码插件(Codec):用于解析和编码数据。它可以将数据从一种格式转换为另一种格式,例如将JSON数据解析为结构化数据。常见的编码插件包括json(解析JSON数据)、plain(纯文本编码)等。 3. 过滤器插件(Filter):用于对数据进行处理和转换。它可以根据条件过滤数据、添加字段、修改字段值等。常见的过滤器插件包括grok(通过正则表达式解析日志数据)、mutate(修改字段值)、date(解析日期字段)等。 4. 输出插件(Output):用于将处理后的数据发送到不同的目的地。常见的输出插件包括elasticsearch(发送数据到Elasticsearch)、stdout(输出到标准输出)、file(写入文件)等。 以下是一个示例配置文件,演示了Logstash的基本语法: ```shell input { file { path => "/var/log/nginx/access.log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["localhost:9200"] index => "nginx-access-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } } ``` 上述配置文件的含义是:从指定路径的文件读取日志数据,使用grok插件解析日志数据,然后将处理后的数据发送到Elasticsearch,并在标准输出打印调试信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值