fluent-plugin-geoip 0.6.0 → 0.6.1
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.
- checksums.yaml +7 -0
- data/.travis.yml +6 -0
- data/README.md +109 -5
- data/fluent-plugin-geoip.gemspec +2 -2
- data/lib/fluent/plugin/filter_geoip.rb +11 -2
- data/lib/fluent/plugin/geoip.rb +1 -1
- data/lib/fluent/plugin/out_geoip.rb +6 -2
- data/test/plugin/test_out_geoip.rb +1 -1
- metadata +24 -40
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8fdb172feeffd90a77f0a83f3f44b58b88ddb138
|
4
|
+
data.tar.gz: 3abc009ded4a7ced18e046c27d9f50094f11b865
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c5ef5143cdd8f2ea9fe372d5a2e0ee5bbe5981a4a1c2cd84b34364fe7f6679a897b5a40732d8b97ad9dfdf5f36b3dc257ec529357c2411e817cfdb34822e05f0
|
7
|
+
data.tar.gz: 70d27191a5cc8f7f4ee5153845149f7d0881c5bf08ed7554ab5424a65f7806b78f36909fa8319d1850d49c13d2247fa41f466cf954777e85d80d45065948eedb
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -22,6 +22,9 @@ $ sudo yum install geoip-devel --enablerepo=epel
|
|
22
22
|
# for Ubuntu/Debian
|
23
23
|
$ sudo apt-get install build-essential
|
24
24
|
$ sudo apt-get install libgeoip-dev
|
25
|
+
|
26
|
+
# for OS X
|
27
|
+
$ brew install geoip
|
25
28
|
```
|
26
29
|
|
27
30
|
## Installation
|
@@ -41,6 +44,8 @@ $ sudo td-agent-gem install fluent-plugin-geoip
|
|
41
44
|
|
42
45
|
## Usage
|
43
46
|
|
47
|
+
### For GeoipOutput
|
48
|
+
|
44
49
|
```xml
|
45
50
|
<match access.apache>
|
46
51
|
type geoip
|
@@ -54,7 +59,6 @@ $ sudo td-agent-gem install fluent-plugin-geoip
|
|
54
59
|
|
55
60
|
# Set adding field with placeholder (more than one settings are required.)
|
56
61
|
<record>
|
57
|
-
city ${city["host"]}
|
58
62
|
latitude ${latitude["host"]}
|
59
63
|
longitude ${longitude["host"]}
|
60
64
|
country_code3 ${country_code3["host"]}
|
@@ -63,6 +67,7 @@ $ sudo td-agent-gem install fluent-plugin-geoip
|
|
63
67
|
dma ${dma_code["host"]}
|
64
68
|
area ${area_code["host"]}
|
65
69
|
region ${region["host"]}
|
70
|
+
city ${city["host"]}
|
66
71
|
</record>
|
67
72
|
|
68
73
|
# Settings for tag
|
@@ -142,8 +147,49 @@ On the case of using td-agent2 (v1-config), it have to quote `{ ... }` or `[ ...
|
|
142
147
|
</match>
|
143
148
|
```
|
144
149
|
|
150
|
+
### For GeoipFilter
|
151
|
+
|
152
|
+
Note that filter version of geoip plugin does not have handling tag feature.
|
153
|
+
|
154
|
+
```xml
|
155
|
+
<filter access.apache>
|
156
|
+
@type geoip
|
157
|
+
|
158
|
+
# Specify one or more geoip lookup field which has ip address (default: host)
|
159
|
+
# in the case of accessing nested value, delimit keys by dot like 'host.ip'.
|
160
|
+
geoip_lookup_key host
|
161
|
+
|
162
|
+
# Specify optional geoip database (using bundled GeoLiteCity databse by default)
|
163
|
+
geoip_database "/path/to/your/GeoIPCity.dat"
|
164
|
+
|
165
|
+
# Set adding field with placeholder (more than one settings are required.)
|
166
|
+
<record>
|
167
|
+
city ${city["host"]}
|
168
|
+
latitude ${latitude["host"]}
|
169
|
+
longitude ${longitude["host"]}
|
170
|
+
country_code3 ${country_code3["host"]}
|
171
|
+
country ${country_code["host"]}
|
172
|
+
country_name ${country_name["host"]}
|
173
|
+
dma ${dma_code["host"]}
|
174
|
+
area ${area_code["host"]}
|
175
|
+
region ${region["host"]}
|
176
|
+
</record>
|
177
|
+
|
178
|
+
# To avoid get stacktrace error with `[null, null]` array for elasticsearch.
|
179
|
+
skip_adding_null_record true
|
180
|
+
|
181
|
+
# Set log_level for fluentd-v0.10.43 or earlier (default: warn)
|
182
|
+
log_level info
|
183
|
+
|
184
|
+
# Set buffering time (default: 0s)
|
185
|
+
flush_interval 1s
|
186
|
+
</filter>
|
187
|
+
```
|
188
|
+
|
145
189
|
## Tutorial
|
146
190
|
|
191
|
+
### For GeoipOutput
|
192
|
+
|
147
193
|
#### configuration
|
148
194
|
|
149
195
|
```xml
|
@@ -160,9 +206,9 @@ On the case of using td-agent2 (v1-config), it have to quote `{ ... }` or `[ ...
|
|
160
206
|
type geoip
|
161
207
|
geoip_lookup_key host
|
162
208
|
<record>
|
163
|
-
|
164
|
-
|
165
|
-
|
209
|
+
lat ${latitude["host"]}
|
210
|
+
lon ${longitude["host"]}
|
211
|
+
country ${country_code["host"]}
|
166
212
|
</record>
|
167
213
|
remove_tag_prefix test.
|
168
214
|
tag debug.${tag}
|
@@ -183,7 +229,45 @@ $ echo '{"host":"66.102.9.80","message":"test"}' | fluent-cat test.geoip
|
|
183
229
|
# check the result at stdout
|
184
230
|
$ tail /var/log/td-agent/td-agent.log
|
185
231
|
2013-08-04 16:21:32 +0900 test.geoip: {"host":"66.102.9.80","message":"test"}
|
186
|
-
2013-08-04 16:21:32 +0900 debug.geoip: {"host":"66.102.9.80","message":"test","
|
232
|
+
2013-08-04 16:21:32 +0900 debug.geoip: {"host":"66.102.9.80","message":"test","lat":37.4192008972168,"lon":-122.05740356445312,"country":"US"}
|
233
|
+
```
|
234
|
+
|
235
|
+
For more details of geoip data format is described at the page below in section `GeoIP City Edition CSV Database Fields`.<br />
|
236
|
+
http://dev.maxmind.com/geoip/legacy/csv/
|
237
|
+
|
238
|
+
### For GeoipFilter
|
239
|
+
|
240
|
+
#### configuration
|
241
|
+
|
242
|
+
```xml
|
243
|
+
<source>
|
244
|
+
@type forward
|
245
|
+
</source>
|
246
|
+
|
247
|
+
<filter test.geoip>
|
248
|
+
@type geoip
|
249
|
+
geoip_lookup_key host
|
250
|
+
<record>
|
251
|
+
city ${city["host"]}
|
252
|
+
lat ${latitude["host"]}
|
253
|
+
lon ${longitude["host"]}
|
254
|
+
</record>
|
255
|
+
</filter>
|
256
|
+
|
257
|
+
<match test.**>
|
258
|
+
@type stdout
|
259
|
+
</match>
|
260
|
+
```
|
261
|
+
|
262
|
+
#### result
|
263
|
+
|
264
|
+
```bash
|
265
|
+
# forward record with Google's ip address.
|
266
|
+
$ echo '{"host":"66.102.9.80","message":"test"}' | fluent-cat test.geoip
|
267
|
+
|
268
|
+
# check the result at stdout
|
269
|
+
$ tail /var/log/td-agent/td-agent.log
|
270
|
+
2016-02-01 12:04:37 +0900 test.geoip: {"host":"66.102.9.80","message":"test","city":"Mountain View","lat":37.4192008972168,"lon":-122.05740356445312}
|
187
271
|
```
|
188
272
|
|
189
273
|
For more details of geoip data format is described at the page below in section `GeoIP City Edition CSV Database Fields`.<br />
|
@@ -210,6 +294,8 @@ Further more specification available at http://dev.maxmind.com/geoip/legacy/csv/
|
|
210
294
|
|
211
295
|
## Parameters
|
212
296
|
|
297
|
+
### GeoipOutput
|
298
|
+
|
213
299
|
* `include_tag_key` (default: false)
|
214
300
|
* `tag_key`
|
215
301
|
|
@@ -236,6 +322,24 @@ On using this option with tag placeholder like `tag geoip.${tag}` (test code is
|
|
236
322
|
|
237
323
|
Set buffering time to execute bulk lookup geoip.
|
238
324
|
|
325
|
+
### GeoipFilter
|
326
|
+
|
327
|
+
Note that filter version of `geoip` plugin does not have handling `tag` feature.
|
328
|
+
|
329
|
+
* `include_tag_key` (default: false)
|
330
|
+
|
331
|
+
Add original tag name into filtered record using SetTagKeyMixin.<br />
|
332
|
+
Further details are written at http://docs.fluentd.org/articles/in_exec
|
333
|
+
|
334
|
+
* `skip_adding_null_record` (default: false)
|
335
|
+
|
336
|
+
Skip adding geoip fields when this valaues to `true`.
|
337
|
+
On the case of getting nothing of GeoIP info (such as local IP), it will output the original record without changing anything.
|
338
|
+
|
339
|
+
* `flush_interval` (default: 0 sec)
|
340
|
+
|
341
|
+
Set buffering time to execute bulk lookup geoip.
|
342
|
+
|
239
343
|
## Articles
|
240
344
|
|
241
345
|
* [IPアドレスを元に位置情報をリアルタイムに付与する fluent-plugin-geoip v0.0.1をリリースしました #fluentd - Y-Ken Studio](http://y-ken.hatenablog.com/entry/fluent-plugin-geoip-has-released)<br />
|
data/fluent-plugin-geoip.gemspec
CHANGED
@@ -4,10 +4,10 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "fluent-plugin-geoip"
|
7
|
-
spec.version = "0.6.
|
7
|
+
spec.version = "0.6.1"
|
8
8
|
spec.authors = ["Kentaro Yoshida"]
|
9
9
|
spec.email = ["y.ken.studio@gmail.com"]
|
10
|
-
spec.summary = %q{Fluentd
|
10
|
+
spec.summary = %q{Fluentd Filter plugin to add information about geographical location of IP addresses with Maxmind GeoIP databases.}
|
11
11
|
spec.homepage = "https://github.com/y-ken/fluent-plugin-geoip"
|
12
12
|
spec.license = "Apache-2.0"
|
13
13
|
|
@@ -25,8 +25,17 @@ module Fluent
|
|
25
25
|
@geoip = Fluent::GeoIP.new(self, conf)
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
29
|
-
|
28
|
+
def filter_stream(tag, es)
|
29
|
+
new_es = MultiEventStream.new
|
30
|
+
es.each do |time, record|
|
31
|
+
begin
|
32
|
+
filtered_record = @geoip.add_geoip_field(record)
|
33
|
+
new_es.add(time, filtered_record) if filtered_record
|
34
|
+
rescue => e
|
35
|
+
router.emit_error_event(tag, time, record, e)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
new_es
|
30
39
|
end
|
31
40
|
end
|
32
41
|
end
|
data/lib/fluent/plugin/geoip.rb
CHANGED
@@ -56,7 +56,7 @@ module Fluent
|
|
56
56
|
raise Fluent::ConfigError, "geoip: unsupported key #{geoip_key}" unless GEOIP_KEYS.include?(geoip_key)
|
57
57
|
end
|
58
58
|
|
59
|
-
if plugin.is_a?(Fluent::
|
59
|
+
if plugin.is_a?(Fluent::BufferedOutput)
|
60
60
|
@placeholder_expander = PlaceholderExpander.new
|
61
61
|
unless have_tag_option?(plugin)
|
62
62
|
raise Fluent::ConfigError, "geoip: required at least one option of 'tag', 'remove_tag_prefix', 'remove_tag_suffix', 'add_tag_prefix', 'add_tag_suffix'."
|
@@ -55,8 +55,12 @@ class Fluent::GeoipOutput < Fluent::BufferedOutput
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def write(chunk)
|
58
|
-
|
59
|
-
|
58
|
+
es = Fluent::MultiEventStream.new
|
59
|
+
tag = ""
|
60
|
+
chunk.msgpack_each do |_tag, time, record|
|
61
|
+
tag = _tag
|
62
|
+
es.add(time, @geoip.add_geoip_field(record))
|
60
63
|
end
|
64
|
+
router.emit_stream(tag, es)
|
61
65
|
end
|
62
66
|
end
|
@@ -13,7 +13,7 @@ class GeoipOutputTest < Test::Unit::TestCase
|
|
13
13
|
]
|
14
14
|
|
15
15
|
def create_driver(conf=CONFIG,tag='test',use_v1=false)
|
16
|
-
Fluent::Test::
|
16
|
+
Fluent::Test::BufferedOutputTestDriver.new(Fluent::GeoipOutput, tag).configure(conf, use_v1)
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_configure
|
metadata
CHANGED
@@ -1,126 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-geoip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kentaro Yoshida
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2016-
|
11
|
+
date: 2016-05-31 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: appraisal
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: test-unit
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 3.1.0
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 3.1.0
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: fluentd
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: fluent-mixin-rewrite-tag-name
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: geoip-c
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - ">="
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
description:
|
@@ -130,8 +115,8 @@ executables: []
|
|
130
115
|
extensions: []
|
131
116
|
extra_rdoc_files: []
|
132
117
|
files:
|
133
|
-
- .gitignore
|
134
|
-
- .travis.yml
|
118
|
+
- ".gitignore"
|
119
|
+
- ".travis.yml"
|
135
120
|
- Appraisals
|
136
121
|
- Gemfile
|
137
122
|
- LICENSE
|
@@ -150,28 +135,27 @@ files:
|
|
150
135
|
homepage: https://github.com/y-ken/fluent-plugin-geoip
|
151
136
|
licenses:
|
152
137
|
- Apache-2.0
|
138
|
+
metadata: {}
|
153
139
|
post_install_message:
|
154
140
|
rdoc_options: []
|
155
141
|
require_paths:
|
156
142
|
- lib
|
157
143
|
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
-
none: false
|
159
144
|
requirements:
|
160
|
-
- -
|
145
|
+
- - ">="
|
161
146
|
- !ruby/object:Gem::Version
|
162
147
|
version: '0'
|
163
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
|
-
none: false
|
165
149
|
requirements:
|
166
|
-
- -
|
150
|
+
- - ">="
|
167
151
|
- !ruby/object:Gem::Version
|
168
152
|
version: '0'
|
169
153
|
requirements: []
|
170
154
|
rubyforge_project:
|
171
|
-
rubygems_version:
|
155
|
+
rubygems_version: 2.4.5
|
172
156
|
signing_key:
|
173
|
-
specification_version:
|
174
|
-
summary: Fluentd
|
157
|
+
specification_version: 4
|
158
|
+
summary: Fluentd Filter plugin to add information about geographical location of IP
|
175
159
|
addresses with Maxmind GeoIP databases.
|
176
160
|
test_files:
|
177
161
|
- test/helper.rb
|