原理讲解
http://docs.flycloud.me/docs/ELKStack/index.html
常用插件有:Grok,kv,Mutate,urldecode,dissect,geoip,date
Grok
Grok通过将文本模式组合成与您的日志匹配的内容来工作。
grok模式的语法是 %{SYNTAX:SEMANTIC}
SYNTAX
是,将匹配文本模式的名称。
SEMANTIC
是你给一段文字的标识相匹配
您可以将数据类型转换添加到grok模式。
默认情况下,所有语义都保存为字符串
。
例如%{NUMBER:num:int},
将num语义从字符串转换为整数
。目前,仅支持的转换是int
和float
。
mutate
这个 filter 允许你通过“改变”各个字段真正地转换你的日志消息。 例如,你可以使用 filter 来更改字段,将它们拼接在一起,重命名它们等等。
可以设置的转换类型包括:"integer","float" 和 "string"。示例如下:
filter {
mutate {
convert => ["request_time", "float"]
}
}
target
定义用于放置解析数据的目标字段
KV
kv {
source => "billPayment"
field_split => "\,"
value_split => ":"
}
urldecode
Nginx作为反向代理服务器,部分日志在传输的过程中是通过“urlencoded”编码的,通过logstash收集上来是一大串看不懂的字符串,这时urldecode就派上用场了,他可将字符串还原为原来的格式。
charset
- 值可以是任何的
默认值为 "UTF-8"
Urldecode常用的配置选项:
all_fields
对所有的值进行url的解码,默认值为false
dissect
切割的日志中,基本上所有的字段格式是字符串类型的,如果需要在kibana中对收集的日志的部分字段求和或做其他的计算操作,这时,需要将字符串转换为数字格式,这时就用到了dissect插件
dissect {
convert_datatype => {
totalAmount => "float"
request_time => "float"
}
geoip
geoip {
source => "remote_addr"
target => "geoip"
database => "/etc/logstash/GeoLite2-City.mmdb"
}
source
- 这是必需的设置。
- 值类型为字符串
- 此设置没有默认值。
包含要通过geoip映射的IP地址或主机名的字段。如果此字段是数组,则仅使用第一个值。
(2)常用的配置选项说明
1)Source
作用:用来指定对分割的日志中的哪个”key”对应的ip地址通过geoip插件处理。
2)target
作用:指定Logstash应该存储geoip数据的字段
3)Fields
作用:设置需要geoip中包含的字段,值类型为数组,
4)database
作用:设置geoip2数据库文件所在的地址。
date
使用 date 插件解析字段中的日期,然后使用该日期或时间戳作为事件的 logstash 时间戳
filter {
mutate {
add_field => { "logtime" => "%{Datetime}" }
}
date {
timezone => "Asia/Chongqing"
match => ["logtime", "yyyy/MM/dd HH:mm:ss SSS"]
target => "@timestamp"
remove_field => [ "logtime" ]
}
}
网友评论