Logstash

Logstash简介

具备实时数据传输能力的管道

支持多种数据源输入
支持多种过滤器
支持多种数据输出目的地
在这里插入图片描述

在ELK中作为日志收集器

在这里插入图片描述

安装Logstash

请见博文
http://blog.csdn.net/sanjiang521/article/details/108612188

Logstash如何工作

Logstash对任何事件处理分为三个阶段

输入(input):必须,如stdin、file、http、exec……
过滤器(filter):可选,如grok、mutate……
输出(output):必须,如stdout、elasticsearch、file……

编解码器

作为输入或输出插件的一部分,分离传输与序列化过程

运行Logstash的两种方式

logstash -e CONFIG_STRING	//使用给定的配置字符串,其格式同配置文件
logstash -f  CONFIG_PATH	//读取配置文件

Logstash配置语法

配置文件结构

# 输入
input {
  ...   
}
# 过滤器
filter {
  ...
}
# 输出
output {
  ...
}
# 验证文件
logstash -f CONFIG_PATH -t

Logstash数据类型

在这里插入图片描述

输入插件

file:从文件中获得事件流

input {
    file {
        path =>"/var/log/message"
        start_position =>"beginning"
        sincedb_path => "/dev/null"
    }
}
filter {}
output {
    stdout {}
}
#多文件输入
input {
    file {
        path =>["/var/log/messages","/var/log/messages-2019*"]
    }
}
……

编解码器

input {
    file {
        path =>"/data/stu.json"
        start_position =>"beginning"
        sincedb_path => "/dev/null"
        codec => "json"
    }
}
filter {}
output {
    stdout { codec => "rubydebug"}
}

json

在这里插入图片描述

rubydebug

在这里插入图片描述

过滤器

grok:使用正则表达式解析任意文本和结构

100 10.10.0.1 →%{NUMBER:duration} %{IP:client}
input{stdin{}}
filter{
        grok{
                match=>{"message"=>"%{NUMBER:duration} %{IP:client}"}
        }
}
output{ stdout{codec=>rubydebug}}

grok自定义模式

(?<field_name>the pattern here)
2019-01-01 0:0:0 100 10.10.0.1
→
(?<date>\d*[./-]\d*[./-]\d* \d*:\d*:\d*) %{NUMBER:duration} %{IP:client}

在这里插入图片描述

输出插件

stdout
file
elasticsearch

output {
    stdout{codec=>rubydebug} 
    file {
       path =>"/root/message.out" 
    } 
    elasticsearch{
       hosts=>["localhost:9200"]
       index=>"syslog"
    }
}

注:
output可以同时使用多个输出插件
file默认以JSON格式输出每行
默认为索引名称为"logstash-%{+YYYY.MM.dd}"

条件判断

控制filter和output处理特定事件

if EXPRESSION {
  ...
} else if EXPRESSION {
  ...
} else {
  ...
}

比较操作

相等: ==, !=, <, >, <=, >=
正则: =~(匹配正则), !~(不匹配正则)
包含:in(包含), not in(不包含)
布尔:and(与), or(或), nand(与非), xor(异或)
取反:!(表达式)

控制duration<100的行输出至stdout

input{stdin{}}
filter{
        grok{
                match=>{"message"=>"%{NUMBER:duration} %{IP:client}"}
        }
        mutate{convert=>["duration","integer"]}
}
output{ 
       if [duration]<100{
               stdout{codec=>rubydebug}
       }
}

注:
[字段名]表示字段引用
mutate过滤器可以重命名、删除、替换和修改字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值