Logstash 收集、解析和转换日志
介绍
版本:
version 6.4.0
在logstash中,包括了三个阶段:
输入input --> 处理filter(不是必须的) --> 输出output
每个阶段都由很多的插件配合工作,比如file、elasticsearch、redis等等。
每个阶段也可以指定多种方式,比如输出既可以输出到elasticsearch中,也可以指定到stdout在控制台打印。
下载
下载地址
https://www.elastic.co/cn/downloads/past-releases#logstash
安装
解压即可
tar -zxvf logstash-6.4.0.tar.gz
常用的命令
bin/logstash
知识兔-f:通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“” 则默认使用stdin作为输入,stdout作为输出) -w 指定工作线程的个数 -l:日志输出的地址(默认就是stdout直接在控制台中输出) -t:测试配置文件是否正确,然后退出。 -r 监视配置文件的变化,并且自动重新加载修改后的配置文件 --verbose 输出一定的调试日志。 --debug 输出更多的调试日志。
bin/logstash-plugin
知识兔list 列出所有已安装的logstash插件 install 安装logstash插件 install --local 强制安装本地插件 remove 删除logstash插件 update 更新插件 prepare-offline-pack 打包插件
在每个部分中,也可以指定多个访问方式,例如我想要指定两个日志来源文件,则可以这样写:
知识兔input { file { path =>"/var/log/messages" type =>"syslog"} file { path =>"/var/log/apache/access.log" type =>"apache"} #从头开始读取日志 start_position => beginning }
插件安装
插件库 rubygems
https://rubygems.org
logstash
自带输入 输出 过滤插件,使用命令logstash-plugin list
查看正则参考
https://www.runoob.com/regexp/regexp-metachar.html
配置文件-语法
发送邮件
知识兔output{ email { port => "25" address => "smtp.qq.com" username => "该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。" password => "gadvlsgchj" authentication => "plain" use_tls => false from => "该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。" subject => "logstash send email test" to => "该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。" via => "smtp" body => "Successful send email" } }
输出到mysql
在线安装输出插件-jdbc
logstash-6.4.0/bin/logstash-plugin install logstash-output-jdbc
知识兔input { file { path => ["/Users/root/Downloads/logstash-6.4.0/config/1.log"] #type => "file_monitor" #tags => ["有用的","标识用的"] start_position => "beginning" } } filter { grok { match => { "message" => "%{TIMESTAMP_ISO8601:time} [A-Z]{4} \[.+\] .+\:.+ \- monitor (?<json_data>[.\s\S]+)"} } json{ source => "json_data" } json{ source => "status" } } output{ stdout { codec => json } if [time] { jdbc{ driver_jar_path => "/Users/root/.m2/reponsitory/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar" driver_class => "com.mysql.jdbc.Driver" connection_string => "jdbc:mysql:///databases?autoReconnect=true&useSSL=false&user=root&password=admin" statement => ["insert into data(time,name) values(?,?)", "[time]","[name]"] } } }