Logstash简介
支持多种数据获取机制,通过TCP/UDP协议、文件、syslog、windows、EventLogs及STDIN等;获取到数据口,支持对数据进行过滤、修改等操作
JRuby语言研发,工作在JVM中
agent/server
Logstash安装
yum install logstash-5.2.2.rpm
配置logstash的环境变量:
vim /etc/profile.d/logstash.sh加入:
export PATH=$PATH:/opt/logstash/bin
logstash的配置文件目录:
/etc/logstash/conf.d/下的以.conf结尾的文件
简单的输入输出语法配置:
vim /etc/logstash/conf.d/sample.conf
input {
stdin {}
}
output {
stdout {
codec => rubydebug
}
}
语法检测:
logstash -f /etc/logstash/conf.d/sample.conf --configtes
启动logstash:
logstash -f /etc/logstash/conf.d/sample.conf
Logstash配置框架:
input{
...
}
filter{
...
}
output{
...
}
四种类型的插件:
input,filter,codec,output
数据类型:
Array:[item1,item2,...]
Boolean:true,false
Bytes:
Codec:编码
Hash:key => value
Number:
Password:
Path:文件系统路径
String:字符串
字段引用:[]
条件判断:
==,!=,<,<=,>,>=
=~,!~
in,not in
and,or
()
Logstash的工作流程:input | filter | output,如无需对数据进行额外的处理,filter可以省略
高度插件化:input,codec,filter,output
input插件:
File:从指定的文件中读取事件流;其工作特性类似于tail -f,第一次读取的时候是从文件的第一行开始的;
使用FileWatch(Linux内核功能)来监视文件是否发生变化(Ruby Gem库支持以监听多个文件)
每个文件上一次读取的位置保存在.sincedb数据库中
.sincedb:记录了每个被监听的文件的inode,major,number,minor number,pos;
Logstash的时间戳问题:
请参考该贴:http://blog.csdn.net/shan1369678/article/details/51375537
Logstash的插件:
input {
file {
path => ["/usr/local/tomcat/logs/catalina.out"]
type => "tomcat"
start_position => "beginning"
}
}
output {
stadout {
codec => rubydebug
}
}
redis插件:
从redis读取数据,支持redis channel和list两种方式;
redis查看数据是否写入的方法:LLEN logstash-tomcat
查看写入数据的内容:LINDEX logstash-tomcat 1
elasticsearch插件kopf的安装
下载地址:https://github.com/lmenezes/elasticsearch-kopf/releases
下载版本:v2.1.2
安装:
/usr/share/elasticsearch/bin/plugin install file:///opt/elasticsearch-kopf-2.1.2.zip
注意这里要修改elastisearch的监听地址,因为默认是监听在127.0.0.1上的
然后即可通过浏览器访问elasticsearch集群:http://IP:9200/_plugin/kopf
kibana4.6.2安装:
yum install -y kibana-4.6.2-x86_64.rpm
配置文件位置:/opt/kibana/config/kibana.yml
启动kibana:systemctl start kibana
filter插件:
用于在将event通过output发出之前对其实现某些处理功能;
grok,用于分析并结构化文本数据;目前是logstash中将非结构化日志数据转化为结构化的可查询数据的不二选择。
syslog,apache,nginx
模式定义位置:/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/grok-patterns
语法格式:
%{SYNTAX:SEMANTIC}
SYNTAX:预定义模式名称;
SEMANTIC:匹配到的文本的自定义标识符;
output插件:
stdout {}
elasticsearch {
...
}