fastly_fluent 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)\
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fastly_fluent"
7
- spec.version = '0.0.1'
7
+ spec.version = '0.0.2'
8
8
  spec.authors = ["Benjamin Bryant"]
9
9
  spec.email = ["benjaminhbryant@gmail.com"]
10
10
  spec.description = %q{fluent plugin for JSON encoded fastly syslogs}
@@ -29,6 +29,7 @@ module Fluent
29
29
  super
30
30
  require 'cool.io'
31
31
  require 'fluent/plugin/socket_util'
32
+ require 'cgi'
32
33
  end
33
34
 
34
35
  config_param :port, :integer, :default => 5140
@@ -89,10 +90,35 @@ module Fluent
89
90
  tag = record.delete('tag')
90
91
 
91
92
  message = JSON.parse(record.delete('message'))
93
+
94
+ ## copy message params into message, skipping null items
92
95
  message.each do |k,v|
93
96
  record[k] = v unless v == "(null)"
94
97
  end
95
98
 
99
+ ## parse url
100
+ if message['url']
101
+ uri = URI.parse(message['url'])
102
+ record['path'] = uri.path
103
+
104
+
105
+ # emit query params
106
+ unless uri.query.nil? || uri.query == ""
107
+
108
+ CGI::parse(uri.query).each do |k,v|
109
+ if record[k].nil?
110
+ if v.count > 1
111
+ record[k] = v
112
+ elsif v.count == 1
113
+ record[k] = v.first
114
+ else
115
+ record[k] = true
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
121
+
96
122
 
97
123
  emit(tag, time, record)
98
124
  }
@@ -68,6 +68,43 @@ class FastlyInputTest < Test::Unit::TestCase
68
68
  }
69
69
  end
70
70
 
71
+ def test_param_splitting
72
+
73
+
74
+ configs = {'127.0.0.1' => CONFIG}
75
+ configs.merge!('::1' => IPv6_CONFIG) if ipv6_enabled?
76
+
77
+ configs.each_pair { |k, v|
78
+ d = create_driver(v)
79
+
80
+ test = "<134>2014-07-10T23:18:15Z cache-hk91 td.server.requests[11226]: {\"ip\":\"166.137.213.198\",\"client_id\":\"17a8e5f8f64a9a7c85d1ccab51bcfdf6\",\"status\":200,\"user_agent\":\"Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53\",\"null_val\":\"(null)\",\"url\":\"/my/path?query=param&bob=first&bob=second&sally\"}"
81
+
82
+
83
+
84
+ d.run do
85
+ u = Fluent::SocketUtil.create_udp_socket(k)
86
+ u.connect(k, PORT)
87
+ u.send(test, 0)
88
+
89
+ sleep 1
90
+ end
91
+
92
+ tag =d.emits.first[0]
93
+ time = d.emits.first[1]
94
+ record = d.emits.first[2]
95
+
96
+ assert_equal(tag, 'td.server.requests')
97
+ assert_equal(time, Time.new(2014,7,10,23,18,15).to_i)
98
+ assert_equal(record['ip'], '166.137.213.198')
99
+ assert_equal(record['path'], '/my/path')
100
+
101
+ assert_equal(record['query'], 'param')
102
+ assert_equal(record['bob'], ["first","second"])
103
+ assert_equal(record['sally'], true)
104
+
105
+ }
106
+ end
107
+
71
108
  def test_msg_size
72
109
  d = create_driver
73
110
  tests = create_test_case
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastly_fluent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Benjamin Bryant
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-07-13 00:00:00.000000000 Z
12
+ date: 2014-07-14 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,29 +30,33 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: fluentd
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  description: fluent plugin for JSON encoded fastly syslogs
@@ -71,26 +78,33 @@ files:
71
78
  homepage: ''
72
79
  licenses:
73
80
  - MIT
74
- metadata: {}
75
81
  post_install_message:
76
82
  rdoc_options: []
77
83
  require_paths:
78
84
  - lib
79
85
  required_ruby_version: !ruby/object:Gem::Requirement
86
+ none: false
80
87
  requirements:
81
- - - '>='
88
+ - - ! '>='
82
89
  - !ruby/object:Gem::Version
83
90
  version: '0'
91
+ segments:
92
+ - 0
93
+ hash: 4532696612457073463
84
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
+ none: false
85
96
  requirements:
86
- - - '>='
97
+ - - ! '>='
87
98
  - !ruby/object:Gem::Version
88
99
  version: '0'
100
+ segments:
101
+ - 0
102
+ hash: 4532696612457073463
89
103
  requirements: []
90
104
  rubyforge_project:
91
- rubygems_version: 2.0.3
105
+ rubygems_version: 1.8.25
92
106
  signing_key:
93
- specification_version: 4
107
+ specification_version: 3
94
108
  summary: ''
95
109
  test_files:
96
110
  - test/helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 908f50379a7eebc384dadea58ff75cab3452ee55
4
- data.tar.gz: 4bff227b7727af33b38d45afef1600b0b1c02935
5
- SHA512:
6
- metadata.gz: 1c4125fdf6248b2a62f5fd1916c85749e4ac3921c689f62555f3d7913c5a98cdd65f16df999f499a84dd03e74988494231be2ff75302d10ff8b2e6d7428d74ed
7
- data.tar.gz: 3b33e3ed78c7bcea9c13b69ee51eea4ef764c6d4c5bce813e7af94da3bde49a7ae1488cd772c4a619ba87c763ae51ae4cd5d9e3b47220b8c86c5f533c6557011