logstash消息流采集=》过滤=》输出
Broker,用于进行事件流管理,默认Redis,还支持AMPQ和ZeroMQ。
Indexer,Output配置成ElasticSearch来将JSON推给ElasticSearch。
这些组件都是很独立可以自由搭配的。
LogStash的核心模块:
采集(input),支持文件,stdin,syslog,redis等
过滤(filter),日志筛选、格式化、添加字段。有些已经在input里边类型中配置了预定义的类型
输出(output),redis, zmq,ElasticSeach,email
logstash可以搭配ElasticSearch(数据索引)、kibana(elasticsearch前端)构件日志分析系统,也可以直接搭配邮件、nagios、即时消息等作为告警系统或者其他日志分析系统的输入。
附录配置代码段:
input {
file {
type => "my_app"
path => "/var/log/tomcat7/my_app.log"
tags => [ "my_app", "log4j" ]
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
}
}
}
filter {
if [type] == "my_app" {
grok {
match => { "message" =>
"%{TIMESTAMP_ISO8601:date} \[(?<thread_name>.+?)\] (?<log_level>\w+)\s*(?<content>.*)"
}
}
if [log_level] == "ERROR" and "Invalid password for user" not in [content] {
throttle {
after_count => 2
key => "%{content}"
add_tag => "throttled"
}
}
}
}
output {
tcp {
codec => json_lines
host => "center.com"
mode => "client"
port => "tcp_port"
}
}