为调试 Logstash Grok表达式,安装 GrokDebuger 环境
Posted 船长&CAP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为调试 Logstash Grok表达式,安装 GrokDebuger 环境相关的知识,希望对你有一定的参考价值。
内容
- 安装 RVM
- 安装 Ruby 和 Gems
- 安装 Rails
- 安装 jls-grok
- Ruby grok 解析
- 调试 grok
注意:不要用 root 执行以下操作。
用 logstash 收集 IIS、tomcat日志,或是其他,不找个调试 grok 的工具,每次重新加载文件,然后还得把 sincedb 文件删了,否则 logstash 不会重复处理文件,很麻烦。
本文主要介绍如何安装 GrokDebuger 环境。安装有先后顺序。
安装 RVM
curl -sSL https://get.rvm.io | sudo bash -s stable
这步可能要多试几次,不是你的问题,是它们的网络问题。
若不能 sudo ,就自己设置下你用户的权限。
RVM 安装位置自己 FIND 一下。
在 RVM 下安装 Ruby。需要安装 rvm 后,用 rvm 把你当前用户添加到 rvm 组。rvm 会自己创建 rvm 组。
rvm group add rvm "$USER"
rvm fix-permissions“$USER”
表示你当前用户,然后重新登录。
安装 Ruby 和 Gems
rvm install ruby
ruby -v
gem –v
这步很简单~如果能看到版本信息,就说明成功了~
安装 Rails
gem install rails
若不能访问,则添加淘宝镜像 https://ruby.taobao.org/。
安装 jls-grok
gem install jls-grok
这步也很简单~基本不会出问题~
Ruby grok 解析
编写一个 Ruby 脚本,用来调试 Grok 表达式。
require ‘rubygems‘
gem ‘jls-grok‘, ‘=0.11.2‘
require ‘grok-pure‘
require ‘optparse‘
require ‘json‘
options = {}
ARGV.push(‘-h‘) if ARGV.size === 0
OptionParser.new do |opts|
opts.banner = ‘Run grokdebug at your terminal.‘
options[:dirs] = %w(patterns)
options[:named] = false
opts.on(‘-d DIR1,DIR2‘, ‘--dirs DIR1,DIR2‘, Array, ‘Set grok patterns directories. Default: "./patterns"‘) do |value|
options[:dirs] = value
end
opts.on(‘-m MESSAGE‘, ‘--msg MESSAGE‘, ‘Your raw message to be matched‘) do |value|
options[:message] = value
end
opts.on(‘-p PATTERN‘, ‘--pattern PATTERN‘, ‘Your grok pattern to be compiled‘) do |value|
options[:pattern] = value
end
opts.on(‘-n‘, ‘--named‘, ‘Named captures only‘) do
end
end.parse!
grok = Grok.new
options[:dirs].each do |dir|
if File.directory?(dir)
dir = File.join(dir, "*")
end
Dir.glob(dir).each do |file|
grok.add_patterns_from_file(file)
end
end
grok.compile(options[:pattern], options[:named])
puts JSON.pretty_generate(grok.match(options[:message]).captures())
调试 grok
[[email protected] myruby]$ ruby grokdebug.rb -m ‘10.1.1.1‘ -p ‘%{IP:client}‘
{
"client": [
"10.1.1.1"
],
"IPV6": [
null
],
"IPV4": [
"10.1.1.1"
]
}
[[email protected] myruby]$ ruby grokdebug.rb -m ‘10.1.8.166:8000‘ -p ‘%{HOSTPORT:test}‘
{
"test": [
"10.1.8.166:8000"
],
"IPORHOST": [
"10.1.8.166"
],
"IP": [
"10.1.8.166"
],
"IPV6": [
null
],
"IPV4": [
"10.1.8.166"
],
"HOSTNAME": [
null
],
"POSINT": [
"8000"
]
}
[[email protected] myruby]$
若提示找不到“pattern”,你可以将 logstash 目录底下的复制过来拿来用~
以上是关于为调试 Logstash Grok表达式,安装 GrokDebuger 环境的主要内容,如果未能解决你的问题,请参考以下文章
Logstash笔记-----grok插件的正则表达式来解析日志