logstash-安装、基本使用、入门

 

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       =>    "xxxxxxx@qq.com"
        password       =>    "gadvlsgchj"
        authentication =>    "plain"
        use_tls        =>    false
        from           =>    "xxxxxxx@qq.com"
        subject        =>    "logstash send email test"
        to             =>    "xxxxxx016@163.com"
        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]"]
        }
    }
}

  个人微信,有什么建议、意见或补充,欢迎及时沟通!!!(添加时注明“博客园”,谢谢)

 

posted @ 2019-10-10 17:18  pidgey016  阅读(602)  评论(0编辑  收藏  举报