Logstash

概述

Logstash是一个用ruby开发的开源工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。Logstash在其过程中担任搬运工的角色,它为数据存储,报表查询和日志解析创建了一个功能强大的管道链。Logstash提供了多种多样的inputfilterscodecsoutput组件,让使用者轻松实现强大的功能。

Logstash安装

tar -zxvf logstash-5.4.1.tar.gz
mv logstash-5.4.1 /usr/local/logstash/
#测试
./bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}' 
./bin/logstash -f test.conf #配置文件启动

核心配置之input output

  1. client 日志生产服务器client.conf
input {
  file {
       path => "/var/log/aliyun-util.log"
       start_position => beginning
  }
}
output {
 stdout { codec => rubydebug }
}

2.Syslog系统日志之Syslog.conf

input {  
  tcp {  
    port => 5000  
    type => syslog  
  }  
  udp {  
    port => 5000  
    type => syslog  
  }  
}  
output {
  elasticsearch { 
    host => localhost:9200
   }  
  stdout { codec => rubydebug }  
}
在`windows`打开`cmd` telnet localhost 5000 访问端口

核心配置之filters

filters是一个行处理机制将提供的为格式化的数据整理成你需要的数据,让我们看看下面的一个例子,叫grok filter的过滤器。

filter {  
  grok {  
    match => { "message" => "%{COMBINEDAPACHELOG}" }  
  }  
  date {  
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]  
  }  
} 
filter {  
  if [path] =~ "access" {  
    mutate { replace => { type => "apache_access" } }  
    grok {  
      match => { "message" => "%{COMBINEDAPACHELOG}" }  
    }  
    date {  
      match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]  
    }  
  } else if [path] =~ "error" {  
    mutate { replace => { type => "apache_error" } }  
  } else {  
    mutate { replace => { type => "random_logs" } }  
  }  
} 

Beats代理

Beatselasticsearch公司开源的一款采集系统监控数据的代理agent。官方推荐用Beats来进行监控,然后推送给logstash,或者直接推送给elasticsearch

  1. Filebeat用于监控、收集服务器日志文件,其已取代 logstash forwarder
tar -zxvf filebeat-5.4.1-linux-x86_64.tar.gz
mv filebeat-5.4.1-linux-x86_64 /usr/local/filebeat/
vim filebeat.yml
filebeat.prospectors:
  input_type: log
     C:/Java Work/My-SpringBoot-Learning/log_mongoDB/*.log
 output.elasticsearch:

推荐阅读更多精彩内容