ELK(一)Logstash
来源:互联网 发布:淘宝买苹果游戏可靠吗 编辑:程序博客网 时间:2024/05/27 20:15
关于ELK的历史跟作用在此就不说了,相信网上很多,大家都能够搜到,在此我说下他们的安装及使用。
一、logstash的下载及安装
下载:wget https://artifacts.elastic.co/downloads/logstash/logstash-5.2.2.tar.gz
解压: tar –vzxf logstash-5.2.2.tar.gz
bin/logstash –f logstash.cnf
进行运行logstash.conf 配置文件里面的设置
长期运行:一句话就可以搞定,如果想让某命令在后台长期运行,需要在命令前加 nohup,后面加 &
二、input配置
file插件
在logstash中可以在input里面添加file配置,默认的最小化配置如下:
input { file { path => "E:/software/logstash-1.5.4/logstash-1.5.4/data/*" }}filter {}output { stdout {}}注意:文件路径名用绝对路径,并且支持globs写法。
file插件还有一些其他的属性。
file { #监听文件的路径 path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"] #排除不想监听的文件 exclude => "1.log" #添加自定义的字段(在输出结果中增加一个字段) add_field => {"test"=>"test"} #增加标签 tags => "tag1" #设置新事件的标志 delimiter => "\n" #设置多长时间扫描目录,发现新文件 discover_interval => 15 #设置多长时间检测文件是否修改 stat_interval => 1 #监听文件的起始位置,默认是end start_position => beginning #监听文件读取信息记录的位置 sincedb_path => "E:/software/logstash-1.5.4/logstash-1.5.4/test.txt" #设置多长时间会写入读取的位置信息 sincedb_write_interval => 15 }
其中input常用的输入源有:file,syslog,redis,log4j,apache log或nginx log等等
三、codec配置
output{stdout{codec=>jsoncodec=>json_lines{#如果你的json文件比较长,需要换行那么就得用到json_lines的编码方式了}}
multiline多行事件编码
input{stdin{codec=>multiline{charset=>...#字符编码,可选max_bytes=>#bytes类型,设置最大的字节数,可选max_lines=>#number类型,设置最大的行数,默认是500行,可选multiline_tag=>#string类型,设置一个事件标签,默认是"multiline",可选pattern=>...#string类型,设置匹配的正则表达式,必选patterns_dir=>...#array类型,可以设置多个正则表达式,可选negate=>...#boolean类型,设置正向匹配还是反向匹配,默认是false,可选what=>...#设置未匹配的内容是向前合并还是向后合并,previous,next两个值选择,必选}}}
四、filter配置
Grok正则
filter { grok { match => { "message" => "grok_pattern" } }}
这段代码中除了grok_pattern以外都是logstash的关键字。grok_pattern部分需要使用者填充自己的解析方式。
grok_pattern由零个或多个%{SYNTAX:SEMANTIC}组成,其中SYNTAX是表达式的名字,是由grok提供的,例如数字表达式的名字是NUMBER,IP地址表达式的名字是IP。SEMANTIC表示解析出来的这个字符的名字,由自己定义,例如IP字段的名字可以是client。
对于下面的这条日志
55.3.244.1 GET /index.html 15824 0.043
可以这样解析
* client: 55.3.244.1
* method: GET
* request: /index.html
* bytes: 15824
* duration: 0.043
Date插件
filter {
grok {
match => ["message", "%{HTTPDATE:logdate}"]
}
date {
match => ["logdate", "dd/MMM/yyyy:HH:mm:ss Z"]
}
}
数据修改( Mutate)
类型转换是 filters/mutate 插件最初诞生时的唯一功能。可以设置的转换类型包括:"integer","float"和 "string"。示例如下:
filter {
mutate {
convert => ["request_time", "float"]
}
}
字符串处理:
Split分割
filter {
mutate {
split => ["message", "|"]
}
}
Join 仅对数组类型字段有效
我们在之前已经用 split
割切的基础再 join
回去。配置改成:
filter {
mutate {
split => ["message","|"]
}
mutate {
join => ["message",","]
}
}
merge
合并两个数组或者哈希字段。依然在之前 split的基础上继续:
filter {
mutate {
split => ["message","|"]
}
mutate {
merge => ["message","message"]
}
}
Merge会将所有的装进一个数组里面
如果 src字段是字符串,会自动先转换成一个单元素的数组再合并。
GEOIP地址查询归类
filter {
geoip {
source => "message"
}
}
运行结果:
{
"message" =>"183.60.92.253",
"@version" =>"1",
"@timestamp" =>"2014-08-07T10:32:55.610Z",
"host" => "raochenlindeMacBook-Air.local",
"geoip" => {
"ip" => "183.60.92.253",
"country_code2" =>"CN",
"country_code3" =>"CHN",
"country_name" =>"China",
"continent_code" =>"AS",
"region_name" =>"30",
"city_name" =>"Guangzhou",
"latitude" =>23.11670000000001,
"longitude" =>113.25,
"timezone" =>"Asia/Chongqing",
"real_region_name" =>"Guangdong",
"location" => [
[0]113.25,
[1]23.11670000000001
]
}
}
GeoIP 库数据较多,如果你不需要这么多内容,可以通过 fields 选项指定自己所需要的。下例为全部可选内容:
filter {
geoip {
fields => ["city_name","continent_code", "country_code2","country_code3", "country_name", "dma_code","ip", "latitude", "longitude","postal_code", "region_name", "timezone"]
}
}
Split拆分事件:
filter {
split {
field => "message"
terminator => "#"
}
}
会分割成n个事件。
注意:split拆分事件后会直接进入到output阶段,所有的split后的其他插件都不可以用了。
output配置
标准输出:
output {
stdout {
codec => rubydebug
workers => 2
}
}
保存到文件:
output {
file {
path =>"/path/to/%{+yyyy/MM/dd/HH}/%{host}.log.gz"
message_format =>"%{message}"
gzip => true
}
}
输出到elasticsearch
output {
elasticsearch {
host => "192.168.0.2"
protocol => "http"
index =>"logstash-%{type}-%{+YYYY.MM.dd}"
index_type => "%{type}"
workers => 5
template_overwrite => true
}
}
输出到redis
input {stdin {} }
output {
redis {
data_type => "channel"
key =>"logstash-chan-%{+yyyy.MM.dd}"
}
}
- ELK(一)Logstash
- ELK logstash 学习一
- ELK-Logstash(1)
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(一) Logstash demo演示
- ELK日志检索系统--Logstash配置说明一
- ELK -Logstash
- (二)ELK学习之LogStash
- ELK(二)安装logstash
- ELK之Logstash
- ELK 之 Logstash
- ELK--Logstash入门
- ELK-ElasticSearch+Logstash+Kibana
- ELK 之 Logstash
- ELK日志收集系统调研(一)---初识ELK(ES、LogStash、Kibana)
- ELK 搭建 (一)
- 最近ELK(elasticsearch+logstash+kibana)学习小结
- elk日志分析filebeat配置(filebeat + logstash)
- windows下ELK(ElasticSearch、Logstash、Kibana)环境的搭建
- notpad++ html在浏览器中打开
- 大端与小端存储模式详解
- IDEA热部署(一)---解析关键配置。
- 分布式系统一致性
- Android 混淆提示 java.io.FileNotFoundException: ...\proguard-rules\release\aapt_rules.txt (系统找不到指定的路径)
- ELK(一)Logstash
- java list分页
- 四大组件之Activity
- 求a的b次幂的最后3位(难度:1颗星)
- Hadoop学习笔记 --- HDFS架构笔记
- Fragment抛出java.lang.IllegalStateException: Fragment not attached to Activity
- 沉浸布局的使用以及简单的设置,简单无脑
- windows下编译Matconvnet的方法(CPU和GPU)
- 我也说说Emacs吧(2)