Logstash的使用以及语法格式

Logstash的启动方式

  • 第一种:logstah绝对路径/bin/logstash -e ‘input { stdin { } } output { stdout { } }’
  • 第二种:logstah绝对路径/bin/logstash -f 配置文件

Logstash的语法格式

  • 标准结构:
input {
	stdin {} 
} 
output {
	stdout {} 
}
  • 设置输出格式:
input {
	stdin {} 
} 
output {
#输出格式常用的有json、rubydebug、plain...
	stdout { codec => "json"}
}
  • Logstash连接Elasticsearch:
input {
	stdin {} 
} 
output {
	stdout {} 
	elasticsearch { hosts => ["IP地址:9200"] }
}
  • 从文件中获得事件流
input {
 	file {
        path =>"/var/log/message" #必须有(最好是绝对路径)
#		path =>["/var/log/messages","/var/log/messages-2019*"] #多文件格式
        start_position =>"beginning"
        sincedb_path => "/dev/null"
		codec => "json"  #应用编码器
    }
} 
output {
	stdout {} 
}
  • grok:使用正则表达式解析任意文本和结构
input {
	stdin {} 
} 
#过滤器
filter{
        grok{
        		# %{类型属性:字段名} 
                match => { "message" => "%{NUMBER:duration} %{IP:client}"} #注意保留空格
        }
}
output {
	stdout { codec => "rubydebug" } 
}
  • grok自定义模式
input {
	stdin {} 
} 
filter{
        grok{
        		#标准格式
        		#(?<date>\d*[./-]\d*[./-]\d* \d*:\d*:\d*) %{NUMBER:duration} %{IP:client}
        		#匹配138开头后面跟8位长度的手机的号,字段名为Tallphone
                match => {"message" => "(?<Tallphone>138\d{8})"}
        }
}
output {
	stdout { codec => "rubydebug"} 
}
  • 输出插件
input {
	stdin {} 
} 
#output可以同时使用多个输出插件
output {
	stdout{codec=>rubydebug} 
    file {
		# file默认以JSON格式输出每行
		#设置输出路径
       	path =>"/tmp/message.out" 
    } 
}
  • 条件判断
input{
	stdin{}
}
filter{
        grok{
                match=>{"message"=>"%{NUMBER:duration} %{IP:client}"}
        }
        mutate{convert=>["duration","integer"]}
}
output{ 
		#判断字段duration<100,则以rubydebug格式输至出控制台
       	if [duration]<100{
               stdout{codec=>rubydebug}
       	}
}

测试:匹配日志信息

  • 测试数据:
    [2019-03-18T16:16:59,362][INFO ][logstash.modules.scaffold] Initializing module
    [2019-03-18T16:17:00,114][WARN ][logstash.config.source.multilocal] Ignoring
  • 实现代码:
input{
        file{
        		#创建test.json文件放入日志数据
                path => "/opt/logstash/tmp/test.json"
                start_position => "beginning"
                sincedb_path => "/dev/null"
                codec => "json"
}
}
filter{
        grok{
        		#通过\[和\]来匹配对应数据
                match => {"message" => "\[%{DATA:date}\]\[%{DATA:level}\]\[%{DATA:proc}\] %{DATA:msg}"}
}
}
output{
		#当level匹配到WARN时将信息显示到控制台
        if [level]=="WARN "{
        stdout{codec => "rubydebug"}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值