ELK=ElasticSerch+Logstash+kibana
Logstash 是一个类似于kafka的开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中,一般都是到ElasticSerch里
原理跟flume一样,直接从官网下载解压就能用
- Logstash requires Java 8
- Java 9 is not supported
- 系统配置文件:$home/config/logstash.yml
- 查看java -version
- 创建业务配置文件 xxx.conf 配置如下:文档下一章节
- 下载tar.gz包解压直接运行 bin/logstash -f xxx.conf
常用命令:
输入input插件--file插件内的小插件
bin]# ./logstash-plugin list查看插件列表
输入源插件详细列表及使用:https://www.elastic.co/guide/en/logstash/current/input-plugins.html
常用的输入命令
file {
//path表示监控文件名的路径,如果您使用/var/log/**/*.模糊匹配*.log文件
//则路径必须是绝对的,不能是相对的
path => "/data1/export/increment/day/*.es.wifiauth.*.gz"
//排除不想监听的文件
exclude => "1.log"
//添加自定义的字段
add_field => {"test"=>"test"}
#增加标签
tags => "tag1"
#设置新事件的标志
delimiter => "\n"
//对监听的文件读取到的信息记录的位置,必须是一个文件路径
sincedb_path => "/data1/export/logstash-6.4.2/data/es.increment.wifiauth.sdb"
//设置多长时间会写入读取的位置信息
sincedb_write_interval => 15
//监听文件的起始位置,默认是将数据当作一种流,所以从end开始,处理旧数据则设为beginning
start_position => "beginning"
//多长时间扫描一次目录发现新文件,时间是stat_interval的整数倍,默认是15
//每40*0.1秒扫描
discover_interval => 40
//设置多长时间检测文件是否修改,默认是1秒
stat_interval => 0.1
//您希望文件输入以何种模式进行操作。跟踪几个文件或读取许多内容完整的文件
mode => "read"
//值可以是:delete、log、log_and_delete中的任意一个。默认值是delete。
//在读取模式下,当文件完成时应该执行什么操作。如果指定了delete,那么文件将被删除。
//如果指定了log,则将被监视的文件的完整路径记录到file_completed_log_path设置中指定的文件中。也就是说当指定为log时,将path的路径记录到file_completed_log_path指定的文件中。
//如果指定了log_and_delete,则执行上述操作。
file_completed_action => "log"
//将完全读取的文件路径附加到哪个文件。只有当file_completed_action为log或log_and_delete时,才指定文件的这个路径
file_completed_log_path => "/data1/export/logstash-6.4.2/logs/gz-read-file-increment-wifiauth-completed.log"
//对监视的文件以那种属性排序,时间或字典顺序
file_sort_by => "path"
//激活筛选器,并可以让kibana搜索到,filter阶段会用到
type => "increment-wifiauth"
}
过滤器
实时解析和转换数据,插件详细列表及使用:https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
//解析json事件
json {
source => "message" //这个message是你json格式的一行行数据
}
//grok是将非结构化事件数据解析为字段,里面是用的正则表达式match函数
grok {
match => ["path","%{GREEDYDATA}/%{GREEDYDATA:file_type:WORD}\.es.*\.%{GREEDYDATA:file_year:WORD}-%{GREEDYDATA:file_month:WORD}-%{GREEDYDATA:file_day:WORD}\.gz"]
}
//聚合由单个任务发起的多个事件的信息
aggregate
//对变异筛选器无法处理的字段执行一般更改
alter
//根据网络块列表检查IP地址
cidr
//为每个事件弄一个新的克隆
clone
//将逗号分隔的值数据解析为单个字段
csv
//解析字段中的日期
date
//把进入过滤器的都删除
drop
//添加关于IP地址的地理信息
geoip
//将非结构化事件数据解析为字段
grok
//解析键值对
kv
//检查指定字段是否保持在给定的大小或长度限制内
range
//睡眠一段指定的时间
sleep
//将多行消息分割为不同的事件
split
//截断超过给定长度的字段
truncate
输出
输出插件列表:https://www.elastic.co/guide/en/logstash/current/output-plugins.html
//以csv分割格式输出文件
csv
//在Elasticsearch中存储日志
Elasticsearch
//当收到输出时,将电子邮件发送到指定的地址
emil
//将事件写到kafka主题
kafka
//将事件写入磁盘上的文件
file
插件里都包含了自己的小专属插件,用的时候点击并查看样例
执行
-f:通过这个命令可以指定logstash的xx.conf文件,根据文件处理数据
-e:后面一般是指定配置文件内容,后加字符串 bin>./logstash -e ""
在输入内容后,会自动补上输入类型type,主机名hostname,版本号versio, 你输入的信息message,时间戳timestamp
参考:https://www.cnblogs.com/xing901022/p/4805586.html
大部分都是官网的,一切还得看官网