jls-grok 0.2.3091 → 0.2.3092
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +12 -0
- data/examples/grok-web.rb +131 -0
- data/examples/pattern-discovery.rb +39 -0
- data/examples/test.rb +30 -0
- data/grok.gemspec +60 -0
- metadata +21 -22
- data/ext/Makefile +0 -157
- data/ext/mkmf.log +0 -102
- data/ext/ruby_grok.o +0 -0
- data/ext/ruby_grokdiscover.o +0 -0
- data/ext/ruby_grokmatch.o +0 -0
- data/sample.rb +0 -43
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
task :default => [:package]
|
2
|
+
|
3
|
+
task :package do
|
4
|
+
system("make -C ext clean; rm ext/Makefile")
|
5
|
+
system("svn up")
|
6
|
+
system("gem build grok.gemspec")
|
7
|
+
end
|
8
|
+
|
9
|
+
task :publish do
|
10
|
+
latest_gem = %x{ls -t jls-grok*.gem}.split("\n").first
|
11
|
+
system("gem push #{latest_gem}")
|
12
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Simple web application that will let you feed grok's discovery feature
|
4
|
+
# a bunch of data, and grok will show you patterns found and the results
|
5
|
+
# of that pattern as matched against the same input.
|
6
|
+
|
7
|
+
require 'rubygems'
|
8
|
+
require 'sinatra'
|
9
|
+
require 'grok'
|
10
|
+
|
11
|
+
get '/' do
|
12
|
+
redirect "/demo/grok-discover/index"
|
13
|
+
end
|
14
|
+
|
15
|
+
get "/demo/grok-discover/index" do
|
16
|
+
haml :index
|
17
|
+
end
|
18
|
+
|
19
|
+
post "/demo/grok-discover/grok" do
|
20
|
+
grok = Grok.new
|
21
|
+
grok.add_patterns_from_file("/usr/local/share/grok/patterns/base")
|
22
|
+
@results = []
|
23
|
+
params[:data].split("\n").each do |line|
|
24
|
+
pattern = grok.discover(line)
|
25
|
+
grok.compile(pattern)
|
26
|
+
match = grok.match(line)
|
27
|
+
puts "Got input: #{line}"
|
28
|
+
puts " => pattern: (#{match != false}) #{pattern}"
|
29
|
+
@results << {
|
30
|
+
:input => line,
|
31
|
+
:pattern => grok.pattern.gsub(/\\Q|\\E/, ""),
|
32
|
+
:full_pattern => grok.expanded_pattern,
|
33
|
+
:match => (match and match.captures or false),
|
34
|
+
}
|
35
|
+
end
|
36
|
+
haml :grok
|
37
|
+
end
|
38
|
+
|
39
|
+
get "/demo/grok-discover/style.css" do
|
40
|
+
sass :style
|
41
|
+
end
|
42
|
+
|
43
|
+
__END__
|
44
|
+
@@ style
|
45
|
+
h1
|
46
|
+
color: red
|
47
|
+
.original
|
48
|
+
.regexp
|
49
|
+
display: block
|
50
|
+
border: 1px solid grey
|
51
|
+
padding: 1em
|
52
|
+
|
53
|
+
.results
|
54
|
+
width: 80%
|
55
|
+
margin-left: auto
|
56
|
+
th
|
57
|
+
text-align: left
|
58
|
+
td
|
59
|
+
border-top: 1px solid black
|
60
|
+
@@ layout
|
61
|
+
%html
|
62
|
+
%head
|
63
|
+
%title Grok Web
|
64
|
+
%link{:rel => "stylesheet", :href => "/demo/grok-discover/style.css"}
|
65
|
+
%body
|
66
|
+
=yield
|
67
|
+
|
68
|
+
@@ index
|
69
|
+
#header
|
70
|
+
%h1 Grok Web
|
71
|
+
#content
|
72
|
+
Paste some log data below. I'll do my best to have grok generate a pattern for you.
|
73
|
+
|
74
|
+
%p
|
75
|
+
Learn more about grok here:
|
76
|
+
%a{:href => "http://code.google.com/p/semicomplete/wiki/Grok"} Grok
|
77
|
+
|
78
|
+
%p
|
79
|
+
This is running off of my cable modem for now, so if it's sluggish, that's
|
80
|
+
why. Be gentle.
|
81
|
+
%form{:action => "/demo/grok-discover/grok", :method => "post"}
|
82
|
+
%textarea{:name => "data", :rows => 10, :cols => 80}
|
83
|
+
%br
|
84
|
+
%input{:type => "submit", :value=>"submit"}
|
85
|
+
|
86
|
+
@@ grok
|
87
|
+
#header
|
88
|
+
%h1 Grok Results
|
89
|
+
%h3
|
90
|
+
%a{:href => "/demo/grok-discover/index"} Try more?
|
91
|
+
#content
|
92
|
+
%p
|
93
|
+
Below is grok's analysis of the data you provided. Each line is analyzed
|
94
|
+
separately. It uses grok's standard library of known patterns to give you a
|
95
|
+
pattern that grok can use to match more logs like the lines you provided.
|
96
|
+
%p
|
97
|
+
The results may not be perfect, but it gives you a head start on coming up with
|
98
|
+
log patterns for
|
99
|
+
%a{:href => "http://code.google.com/p/semicomplete/wiki/Grok"} grok
|
100
|
+
and
|
101
|
+
%a{:href => "http://code.google.com/p/logstash/"} logstash
|
102
|
+
%ol
|
103
|
+
- @results.each do |result|
|
104
|
+
%li
|
105
|
+
%p.original
|
106
|
+
%b Original:
|
107
|
+
%br= result[:input]
|
108
|
+
%p
|
109
|
+
%b Pattern:
|
110
|
+
%br
|
111
|
+
%span.pattern= result[:pattern]
|
112
|
+
%p
|
113
|
+
%b
|
114
|
+
Generated Regular Expression
|
115
|
+
%small
|
116
|
+
%i You could have written this by hand, be glad you didn't have to.
|
117
|
+
%code.regexp= result[:full_pattern].gsub("<", "<")
|
118
|
+
%p
|
119
|
+
If you wanted to test this, you can paste the above expression into
|
120
|
+
pcretest(1) and it should match your input.
|
121
|
+
%p
|
122
|
+
%b Capture Results
|
123
|
+
%table.results
|
124
|
+
%tr
|
125
|
+
%th Name
|
126
|
+
%th Value
|
127
|
+
- result[:match].each do |key,val|
|
128
|
+
- val.each do |v|
|
129
|
+
%tr
|
130
|
+
%td= key
|
131
|
+
%td= v
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
|
4
|
+
require "rubygems"
|
5
|
+
require "grok"
|
6
|
+
require "pp"
|
7
|
+
|
8
|
+
grok = Grok.new
|
9
|
+
|
10
|
+
# Load some default patterns that ship with grok.
|
11
|
+
# See also:
|
12
|
+
# http://code.google.com/p/semicomplete/source/browse/grok/patterns/base
|
13
|
+
grok.add_patterns_from_file("/usr/local/share/grok/patterns/base")
|
14
|
+
|
15
|
+
# Using the patterns we know, try to build a grok pattern that best matches
|
16
|
+
# a string we give. Let's try Time.now.to_s, which has this format;
|
17
|
+
# => Fri Apr 16 19:15:27 -0700 2010
|
18
|
+
input = "Time is #{Time.now}"
|
19
|
+
pattern = grok.discover(input)
|
20
|
+
|
21
|
+
puts "Input: #{input}"
|
22
|
+
puts "Pattern: #{pattern}"
|
23
|
+
grok.compile(pattern)
|
24
|
+
|
25
|
+
# Sleep to change time.
|
26
|
+
puts "Sleeping so time changes and we can test against another input."
|
27
|
+
sleep(2)
|
28
|
+
match = grok.match("Time is #{Time.now.to_s}")
|
29
|
+
puts "Resulting capture:"
|
30
|
+
pp match.captures
|
31
|
+
|
32
|
+
# When run, the output should look something like this:
|
33
|
+
# % ruby pattern-discovery.rb
|
34
|
+
# Pattern: Time is Fri %{SYSLOGDATE} %{BASE10NUM} 2010
|
35
|
+
# {"BASE10NUM"=>["-0700"],
|
36
|
+
# "SYSLOGDATE"=>["Apr 16 19:17:38"],
|
37
|
+
# "TIME"=>["19:17:38"],
|
38
|
+
# "MONTH"=>["Apr"],
|
39
|
+
# "MONTHDAY"=>["16"]}
|
data/examples/test.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
|
4
|
+
require "rubygems"
|
5
|
+
require "grok"
|
6
|
+
require "pp"
|
7
|
+
|
8
|
+
grok = Grok.new
|
9
|
+
|
10
|
+
# Load some default patterns that ship with grok.
|
11
|
+
# See also:
|
12
|
+
# http://code.google.com/p/semicomplete/source/browse/grok/patterns/base
|
13
|
+
grok.add_patterns_from_file("../..//patterns/base")
|
14
|
+
|
15
|
+
# Using the patterns we know, try to build a grok pattern that best matches
|
16
|
+
# a string we give. Let's try Time.now.to_s, which has this format;
|
17
|
+
# => Fri Apr 16 19:15:27 -0700 2010
|
18
|
+
input = "2010-04-18T15:06:02Z"
|
19
|
+
pattern = "%{TIMESTAMP_ISO8601}"
|
20
|
+
grok.compile(pattern)
|
21
|
+
grok.compile(pattern)
|
22
|
+
puts "Input: #{input}"
|
23
|
+
puts "Pattern: #{pattern}"
|
24
|
+
puts "Full: #{grok.expanded_pattern}"
|
25
|
+
|
26
|
+
match = grok.match(input)
|
27
|
+
if match
|
28
|
+
puts "Resulting capture:"
|
29
|
+
pp match.captures
|
30
|
+
end
|
data/grok.gemspec
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
files = <<-FILES
|
3
|
+
INSTALL
|
4
|
+
Rakefile
|
5
|
+
examples
|
6
|
+
examples/grok-web.rb
|
7
|
+
examples/pattern-discovery.rb
|
8
|
+
examples/test.rb
|
9
|
+
ext
|
10
|
+
ext/extconf.rb
|
11
|
+
ext/rgrok.h
|
12
|
+
ext/ruby_grok.c
|
13
|
+
ext/ruby_grokdiscover.c
|
14
|
+
ext/ruby_grokmatch.c
|
15
|
+
ext/ruby_grokmatch.h
|
16
|
+
grok.gemspec
|
17
|
+
lib
|
18
|
+
lib/grok
|
19
|
+
lib/grok.rb
|
20
|
+
lib/grok/pile.rb
|
21
|
+
test
|
22
|
+
test/Makefile
|
23
|
+
test/alltests.rb
|
24
|
+
test/core
|
25
|
+
test/general
|
26
|
+
test/general/basic_test.rb
|
27
|
+
test/general/captures_test.rb
|
28
|
+
test/patterns
|
29
|
+
test/patterns/day.rb
|
30
|
+
test/patterns/host.rb
|
31
|
+
test/patterns/ip.input
|
32
|
+
test/patterns/ip.rb
|
33
|
+
test/patterns/iso8601.rb
|
34
|
+
test/patterns/month.rb
|
35
|
+
test/patterns/number.rb
|
36
|
+
test/patterns/path.rb
|
37
|
+
test/patterns/prog.rb
|
38
|
+
test/patterns/quotedstring.rb
|
39
|
+
test/patterns/uri.rb
|
40
|
+
test/run.sh
|
41
|
+
test/speedtest.rb
|
42
|
+
FILES
|
43
|
+
|
44
|
+
files = files.gsub(/ +/, "").split("\n")
|
45
|
+
|
46
|
+
svnrev = %x{svn info}.split("\n").grep(/Revision:/).first.split(" ").last.to_i
|
47
|
+
spec.name = "jls-grok"
|
48
|
+
spec.version = "0.2.#{svnrev}"
|
49
|
+
|
50
|
+
spec.summary = "grok bindings for ruby"
|
51
|
+
spec.description = "Grok ruby bindings - pattern match/extraction tool"
|
52
|
+
spec.files = files
|
53
|
+
spec.require_paths << "ext"
|
54
|
+
spec.extensions = ["ext/extconf.rb"]
|
55
|
+
|
56
|
+
spec.author = "Jordan Sissel"
|
57
|
+
spec.email = "jls@semicomplete.com"
|
58
|
+
spec.homepage = "http://code.google.com/p/semicomplete/wiki/Grok"
|
59
|
+
end
|
60
|
+
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 3092
|
9
|
+
version: 0.2.3092
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jordan Sissel
|
@@ -27,39 +27,38 @@ extensions:
|
|
27
27
|
extra_rdoc_files: []
|
28
28
|
|
29
29
|
files:
|
30
|
-
- sample.rb
|
31
30
|
- INSTALL
|
32
|
-
-
|
33
|
-
-
|
34
|
-
-
|
31
|
+
- Rakefile
|
32
|
+
- examples/grok-web.rb
|
33
|
+
- examples/pattern-discovery.rb
|
34
|
+
- examples/test.rb
|
35
|
+
- ext/extconf.rb
|
35
36
|
- ext/rgrok.h
|
37
|
+
- ext/ruby_grok.c
|
38
|
+
- ext/ruby_grokdiscover.c
|
36
39
|
- ext/ruby_grokmatch.c
|
37
40
|
- ext/ruby_grokmatch.h
|
38
|
-
-
|
39
|
-
-
|
40
|
-
-
|
41
|
-
- ext/ruby_grokdiscover.o
|
42
|
-
- ext/ruby_grokmatch.o
|
43
|
-
- test/general/basic_test.rb
|
44
|
-
- test/general/captures_test.rb
|
45
|
-
- test/core
|
41
|
+
- grok.gemspec
|
42
|
+
- lib/grok.rb
|
43
|
+
- lib/grok/pile.rb
|
46
44
|
- test/Makefile
|
47
45
|
- test/alltests.rb
|
48
|
-
- test/
|
49
|
-
- test/
|
46
|
+
- test/core
|
47
|
+
- test/general/basic_test.rb
|
48
|
+
- test/general/captures_test.rb
|
50
49
|
- test/patterns/day.rb
|
51
50
|
- test/patterns/host.rb
|
52
|
-
- test/patterns/number.rb
|
53
|
-
- test/patterns/iso8601.rb
|
54
51
|
- test/patterns/ip.input
|
55
52
|
- test/patterns/ip.rb
|
56
|
-
- test/patterns/
|
53
|
+
- test/patterns/iso8601.rb
|
57
54
|
- test/patterns/month.rb
|
58
|
-
- test/patterns/
|
55
|
+
- test/patterns/number.rb
|
56
|
+
- test/patterns/path.rb
|
59
57
|
- test/patterns/prog.rb
|
58
|
+
- test/patterns/quotedstring.rb
|
59
|
+
- test/patterns/uri.rb
|
60
60
|
- test/run.sh
|
61
|
-
-
|
62
|
-
- lib/grok/pile.rb
|
61
|
+
- test/speedtest.rb
|
63
62
|
has_rdoc: true
|
64
63
|
homepage: http://code.google.com/p/semicomplete/wiki/Grok
|
65
64
|
licenses: []
|
data/ext/Makefile
DELETED
@@ -1,157 +0,0 @@
|
|
1
|
-
|
2
|
-
SHELL = /bin/sh
|
3
|
-
|
4
|
-
#### Start of system configuration section. ####
|
5
|
-
|
6
|
-
srcdir = .
|
7
|
-
topdir = /usr/lib/ruby/1.8/x86_64-linux
|
8
|
-
hdrdir = $(topdir)
|
9
|
-
VPATH = $(srcdir):$(topdir):$(hdrdir)
|
10
|
-
exec_prefix = $(prefix)
|
11
|
-
prefix = $(DESTDIR)/usr
|
12
|
-
sharedstatedir = $(prefix)/com
|
13
|
-
mandir = $(prefix)/share/man
|
14
|
-
psdir = $(docdir)
|
15
|
-
oldincludedir = $(DESTDIR)/usr/include
|
16
|
-
localedir = $(datarootdir)/locale
|
17
|
-
bindir = $(exec_prefix)/bin
|
18
|
-
libexecdir = $(prefix)/lib/ruby1.8
|
19
|
-
sitedir = $(DESTDIR)/usr/local/lib/site_ruby
|
20
|
-
htmldir = $(docdir)
|
21
|
-
vendorarchdir = $(vendorlibdir)/$(sitearch)
|
22
|
-
includedir = $(prefix)/include
|
23
|
-
infodir = $(prefix)/share/info
|
24
|
-
vendorlibdir = $(vendordir)/$(ruby_version)
|
25
|
-
sysconfdir = $(DESTDIR)/etc
|
26
|
-
libdir = $(exec_prefix)/lib
|
27
|
-
sbindir = $(exec_prefix)/sbin
|
28
|
-
rubylibdir = $(libdir)/ruby/$(ruby_version)
|
29
|
-
docdir = $(datarootdir)/doc/$(PACKAGE)
|
30
|
-
dvidir = $(docdir)
|
31
|
-
vendordir = $(libdir)/ruby/vendor_ruby
|
32
|
-
datarootdir = $(prefix)/share
|
33
|
-
pdfdir = $(docdir)
|
34
|
-
archdir = $(rubylibdir)/$(arch)
|
35
|
-
sitearchdir = $(sitelibdir)/$(sitearch)
|
36
|
-
datadir = $(datarootdir)
|
37
|
-
localstatedir = $(DESTDIR)/var
|
38
|
-
sitelibdir = $(sitedir)/$(ruby_version)
|
39
|
-
|
40
|
-
CC = gcc
|
41
|
-
LIBRUBY = $(LIBRUBY_SO)
|
42
|
-
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
43
|
-
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
|
44
|
-
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
|
45
|
-
|
46
|
-
RUBY_EXTCONF_H =
|
47
|
-
CFLAGS = -fPIC -fno-strict-aliasing -g -g -O2 -fPIC $(cflags)
|
48
|
-
INCFLAGS = -I. -I. -I/usr/lib/ruby/1.8/x86_64-linux -I.
|
49
|
-
DEFS =
|
50
|
-
CPPFLAGS =
|
51
|
-
CXXFLAGS = $(CFLAGS)
|
52
|
-
ldflags = -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic
|
53
|
-
dldflags =
|
54
|
-
archflag =
|
55
|
-
DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
|
56
|
-
LDSHARED = $(CC) -shared
|
57
|
-
AR = ar
|
58
|
-
EXEEXT =
|
59
|
-
|
60
|
-
RUBY_INSTALL_NAME = ruby1.8
|
61
|
-
RUBY_SO_NAME = ruby1.8
|
62
|
-
arch = x86_64-linux
|
63
|
-
sitearch = x86_64-linux
|
64
|
-
ruby_version = 1.8
|
65
|
-
ruby = /usr/bin/ruby1.8
|
66
|
-
RUBY = $(ruby)
|
67
|
-
RM = rm -f
|
68
|
-
MAKEDIRS = mkdir -p
|
69
|
-
INSTALL = /usr/bin/install -c
|
70
|
-
INSTALL_PROG = $(INSTALL) -m 0755
|
71
|
-
INSTALL_DATA = $(INSTALL) -m 644
|
72
|
-
COPY = cp
|
73
|
-
|
74
|
-
#### End of system configuration section. ####
|
75
|
-
|
76
|
-
preload =
|
77
|
-
|
78
|
-
libpath = . $(libdir)
|
79
|
-
LIBPATH = -L. -L$(libdir)
|
80
|
-
DEFFILE =
|
81
|
-
|
82
|
-
CLEANFILES = mkmf.log
|
83
|
-
DISTCLEANFILES =
|
84
|
-
|
85
|
-
extout =
|
86
|
-
extout_prefix =
|
87
|
-
target_prefix =
|
88
|
-
LOCAL_LIBS =
|
89
|
-
LIBS = $(LIBRUBYARG_SHARED) -lgrok -lpthread -lrt -ldl -lcrypt -lm -lc
|
90
|
-
SRCS = ruby_grok.c ruby_grokmatch.c ruby_grokdiscover.c
|
91
|
-
OBJS = ruby_grok.o ruby_grokmatch.o ruby_grokdiscover.o
|
92
|
-
TARGET = Grok
|
93
|
-
DLLIB = $(TARGET).so
|
94
|
-
EXTSTATIC =
|
95
|
-
STATIC_LIB =
|
96
|
-
|
97
|
-
BINDIR = $(bindir)
|
98
|
-
RUBYCOMMONDIR = $(sitedir)$(target_prefix)
|
99
|
-
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
|
100
|
-
RUBYARCHDIR = $(sitearchdir)$(target_prefix)
|
101
|
-
|
102
|
-
TARGET_SO = $(DLLIB)
|
103
|
-
CLEANLIBS = $(TARGET).so $(TARGET).il? $(TARGET).tds $(TARGET).map
|
104
|
-
CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
|
105
|
-
|
106
|
-
all: $(DLLIB)
|
107
|
-
static: $(STATIC_LIB)
|
108
|
-
|
109
|
-
clean:
|
110
|
-
@-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
|
111
|
-
|
112
|
-
distclean: clean
|
113
|
-
@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
114
|
-
@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
|
115
|
-
|
116
|
-
realclean: distclean
|
117
|
-
install: install-so install-rb
|
118
|
-
|
119
|
-
install-so: $(RUBYARCHDIR)
|
120
|
-
install-so: $(RUBYARCHDIR)/$(DLLIB)
|
121
|
-
$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
|
122
|
-
$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
|
123
|
-
install-rb: pre-install-rb install-rb-default
|
124
|
-
install-rb-default: pre-install-rb-default
|
125
|
-
pre-install-rb: Makefile
|
126
|
-
pre-install-rb-default: Makefile
|
127
|
-
$(RUBYARCHDIR):
|
128
|
-
$(MAKEDIRS) $@
|
129
|
-
|
130
|
-
site-install: site-install-so site-install-rb
|
131
|
-
site-install-so: install-so
|
132
|
-
site-install-rb: install-rb
|
133
|
-
|
134
|
-
.SUFFIXES: .c .m .cc .cxx .cpp .C .o
|
135
|
-
|
136
|
-
.cc.o:
|
137
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
138
|
-
|
139
|
-
.cxx.o:
|
140
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
141
|
-
|
142
|
-
.cpp.o:
|
143
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
144
|
-
|
145
|
-
.C.o:
|
146
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
147
|
-
|
148
|
-
.c.o:
|
149
|
-
$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<
|
150
|
-
|
151
|
-
$(DLLIB): $(OBJS) Makefile
|
152
|
-
@-$(RM) $@
|
153
|
-
$(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
$(OBJS): ruby.h defines.h
|
data/ext/mkmf.log
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
find_header: checking for grok.h in /usr/local/include,../../... -------------------- yes
|
2
|
-
|
3
|
-
"gcc -E -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -o conftest.i"
|
4
|
-
checked program was:
|
5
|
-
/* begin */
|
6
|
-
1: #include <grok.h>
|
7
|
-
/* end */
|
8
|
-
|
9
|
-
--------------------
|
10
|
-
|
11
|
-
find_library: checking for grok_init() in -lsgrok... -------------------- no
|
12
|
-
|
13
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
14
|
-
conftest.c: In function 't':
|
15
|
-
conftest.c:3: error: 'grok_init' undeclared (first use in this function)
|
16
|
-
conftest.c:3: error: (Each undeclared identifier is reported only once
|
17
|
-
conftest.c:3: error: for each function it appears in.)
|
18
|
-
checked program was:
|
19
|
-
/* begin */
|
20
|
-
1: /*top*/
|
21
|
-
2: int main() { return 0; }
|
22
|
-
3: int t() { void ((*volatile p)()); p = (void ((*)()))grok_init; return 0; }
|
23
|
-
/* end */
|
24
|
-
|
25
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
26
|
-
/usr/bin/ld: cannot find -lsgrok
|
27
|
-
collect2: ld returned 1 exit status
|
28
|
-
checked program was:
|
29
|
-
/* begin */
|
30
|
-
1: /*top*/
|
31
|
-
2: int main() { return 0; }
|
32
|
-
3: int t() { grok_init(); return 0; }
|
33
|
-
/* end */
|
34
|
-
|
35
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L../ -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
36
|
-
conftest.c: In function 't':
|
37
|
-
conftest.c:3: error: 'grok_init' undeclared (first use in this function)
|
38
|
-
conftest.c:3: error: (Each undeclared identifier is reported only once
|
39
|
-
conftest.c:3: error: for each function it appears in.)
|
40
|
-
checked program was:
|
41
|
-
/* begin */
|
42
|
-
1: /*top*/
|
43
|
-
2: int main() { return 0; }
|
44
|
-
3: int t() { void ((*volatile p)()); p = (void ((*)()))grok_init; return 0; }
|
45
|
-
/* end */
|
46
|
-
|
47
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L../ -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
48
|
-
/usr/bin/ld: cannot find -lsgrok
|
49
|
-
collect2: ld returned 1 exit status
|
50
|
-
checked program was:
|
51
|
-
/* begin */
|
52
|
-
1: /*top*/
|
53
|
-
2: int main() { return 0; }
|
54
|
-
3: int t() { grok_init(); return 0; }
|
55
|
-
/* end */
|
56
|
-
|
57
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L../../ -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
58
|
-
conftest.c: In function 't':
|
59
|
-
conftest.c:3: error: 'grok_init' undeclared (first use in this function)
|
60
|
-
conftest.c:3: error: (Each undeclared identifier is reported only once
|
61
|
-
conftest.c:3: error: for each function it appears in.)
|
62
|
-
checked program was:
|
63
|
-
/* begin */
|
64
|
-
1: /*top*/
|
65
|
-
2: int main() { return 0; }
|
66
|
-
3: int t() { void ((*volatile p)()); p = (void ((*)()))grok_init; return 0; }
|
67
|
-
/* end */
|
68
|
-
|
69
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L../../ -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
70
|
-
/usr/bin/ld: cannot find -lsgrok
|
71
|
-
collect2: ld returned 1 exit status
|
72
|
-
checked program was:
|
73
|
-
/* begin */
|
74
|
-
1: /*top*/
|
75
|
-
2: int main() { return 0; }
|
76
|
-
3: int t() { grok_init(); return 0; }
|
77
|
-
/* end */
|
78
|
-
|
79
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L/usr/local/lib -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
80
|
-
conftest.c: In function 't':
|
81
|
-
conftest.c:3: error: 'grok_init' undeclared (first use in this function)
|
82
|
-
conftest.c:3: error: (Each undeclared identifier is reported only once
|
83
|
-
conftest.c:3: error: for each function it appears in.)
|
84
|
-
checked program was:
|
85
|
-
/* begin */
|
86
|
-
1: /*top*/
|
87
|
-
2: int main() { return 0; }
|
88
|
-
3: int t() { void ((*volatile p)()); p = (void ((*)()))grok_init; return 0; }
|
89
|
-
/* end */
|
90
|
-
|
91
|
-
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L/usr/local/lib -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lsgrok -lpthread -lrt -ldl -lcrypt -lm -lc"
|
92
|
-
/usr/bin/ld: cannot find -lsgrok
|
93
|
-
collect2: ld returned 1 exit status
|
94
|
-
checked program was:
|
95
|
-
/* begin */
|
96
|
-
1: /*top*/
|
97
|
-
2: int main() { return 0; }
|
98
|
-
3: int t() { grok_init(); return 0; }
|
99
|
-
/* end */
|
100
|
-
|
101
|
-
--------------------
|
102
|
-
|
data/ext/ruby_grok.o
DELETED
Binary file
|
data/ext/ruby_grokdiscover.o
DELETED
Binary file
|
data/ext/ruby_grokmatch.o
DELETED
Binary file
|
data/sample.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require "Grok"
|
2
|
-
require "pp"
|
3
|
-
|
4
|
-
patterns = {}
|
5
|
-
|
6
|
-
matches = [
|
7
|
-
#"%{SYSLOGBASE} Accepted %{NOTSPACE:method} for %{DATA:user} from %{IPORHOST:client} port %{INT:port}",
|
8
|
-
#"%{SYSLOGBASE} Did not receive identification string from %{IPORHOST:client}",
|
9
|
-
#"%{SYSLOGBASE} error: PAM: authentication error for %{DATA:user} from %{IPORHOST:client}",
|
10
|
-
"%{SYSLOGBASE} .*"
|
11
|
-
#"%{COMBINEDAPACHELOG}",
|
12
|
-
#"%{UNINDEXED}hello (?=%{GREEDYDATA})%{WORD}"
|
13
|
-
|
14
|
-
#"( *%{DATA:key}:%{NOTSPACE:value})+"
|
15
|
-
]
|
16
|
-
|
17
|
-
groks = matches.collect do |m|
|
18
|
-
g = Grok.new
|
19
|
-
g.add_patterns_from_file("../patterns/base")
|
20
|
-
g.compile(m)
|
21
|
-
g
|
22
|
-
end
|
23
|
-
|
24
|
-
bytes = 0
|
25
|
-
time_start = Time.now.to_f
|
26
|
-
$stdin.each do |line|
|
27
|
-
groks.each do |grok|
|
28
|
-
m = grok.match(line)
|
29
|
-
if m
|
30
|
-
#data = Hash.new { |h,k| h[k] = Array.new }
|
31
|
-
#m.each_capture do |key, value|
|
32
|
-
#data[key] << value
|
33
|
-
#end
|
34
|
-
#pp data
|
35
|
-
pp m.captures
|
36
|
-
#bytes += line.length
|
37
|
-
break
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
#time_end = Time.now.to_f
|
43
|
-
#puts "parse rate: #{ (bytes / 1024) / (time_end - time_start) }"
|