#读input {# file 从文件读取(官方推荐使用beats采集文件日志) file { path => ["/home/jar/*.log"]#排除不想监听的文件#exclude => "exclude.log"#设置多长时间扫描目录,发现新文件 discover_interval => 1#自定义日志区分类型 type => "ThisIsMyProjectType"# beginning 从文件开始处读写# end 文件结尾处读写 start_position => end }# http 方式收集,用于客户端上送消息 http{ id => "http_request" port => 9062 codec => json type => "http" }}#过滤filter {if [type] == "http" {# 把东八区时间赋值给新建的logdate 字段,logstash 不允许自建的特殊字段如带@标识的字段 ruby{ code => "event.set('logdate', (event.get('@timestamp').time.localtime).strftime('%Y-%m-%d%H:%M:%S'))" } } elseif [type] == "nginx" { grok { match => ["message", "%{IPORHOST:host} - - \[%{HTTPDATE:logdate}\]"] overwrite => [ "host"] } } else { grok { match => ["message", "%{TIMESTAMP_ISO8601:logdate}"] } } date { match => ["logdate", "YYYY-MM-dd HH:mm:ss.SSS"]# 赋值给 @timestamp target => "@timestamp" } mutate {# 删除不需要的字段 remove_field => ["@version","tags","headers"] }}#输出output{#输出到ES elasticsearch{# es地址 hosts=>["127.0.0.1:9200"]# es的索引名,可更改。建议使用类型区分:eg => "yjg-%{type}-%{+YYYY.MM.dd}"#index => "yjg-logstash-%{+YYYY.MM.dd}" index => "0815logs"#es index user => "elastic" #es账号 password => "123456" #密码 }#输出到控制台 stdout{ codec => rubydebug }# 输出到kafka#kafka {}#输出到数据库# jdbc {# driver_jar_path => "/mysql-connector-java-5.1.48.jar"# driver_class => "com.mysql.jdbc.Driver"# connection_string => "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true"# username => "root"# password => "123456"# statement => ["INSERT INTO logstash_log_temp(level, ip, content, logdate) VALUES( ?, INET_ATON(?), ? ,?)", "[level]","[host]", "[message]", "[logdate]"]##}}