fluent-plugin-http-status 0.0.2 → 0.0.3
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 |gem|
|
6
6
|
gem.name = "fluent-plugin-http-status"
|
7
|
-
gem.version = "0.0.
|
7
|
+
gem.version = "0.0.3"
|
8
8
|
gem.authors = ["hiro-su"]
|
9
9
|
gem.email = ["h.sugipon@gmail.com"]
|
10
10
|
gem.description = %q{Fluentd input plugin for to get the http status}
|
@@ -4,6 +4,9 @@ require "net/https"
|
|
4
4
|
require "uri"
|
5
5
|
require "socket"
|
6
6
|
|
7
|
+
ENV['LC_ALL'] = 'C'
|
8
|
+
Encoding.default_external = 'ascii-8bit' if RUBY_VERSION > '1.9'
|
9
|
+
|
7
10
|
module Fluent
|
8
11
|
class HttpStatusInput < Input
|
9
12
|
Plugin.register_input('http_status',self)
|
@@ -15,10 +18,10 @@ module Fluent
|
|
15
18
|
config_param :proxy_port, :integer, :default => nil
|
16
19
|
config_param :proxy_user, :string, :default => nil
|
17
20
|
config_param :proxy_password, :string, :default => nil
|
18
|
-
config_param :open_timeout, :integer, :default =>
|
21
|
+
config_param :open_timeout, :integer, :default => 20
|
19
22
|
config_param :read_timeout, :integer, :default => 20
|
20
23
|
config_param :params, :string, :default => nil
|
21
|
-
config_param :polling_time, :string
|
24
|
+
config_param :polling_time, :string, :default => "1m"
|
22
25
|
config_param :basic_user, :string, :default => nil
|
23
26
|
config_param :basic_password, :string, :default => nil
|
24
27
|
|
@@ -91,6 +94,13 @@ module Fluent
|
|
91
94
|
port = uri.port
|
92
95
|
request_uri = uri.request_uri
|
93
96
|
|
97
|
+
hash["url"] = url
|
98
|
+
hash["host"] = host
|
99
|
+
hash["port"] = port
|
100
|
+
hash["request_uri"] = request_uri
|
101
|
+
hash["proxy_address"] = @proxy_address if @proxy_address
|
102
|
+
hash["proxy_port"] = @proxy_port if @proxy_port
|
103
|
+
|
94
104
|
http = Net::HTTP.new(host,port,@proxy_address,@proxy_port,@proxy_user,@proxy_password)
|
95
105
|
http.open_timeout = @open_timeout
|
96
106
|
http.read_timeout = @read_timeout
|
@@ -105,39 +115,31 @@ module Fluent
|
|
105
115
|
req.basic_auth @basic_user, @basic_password
|
106
116
|
response = http.request(req)
|
107
117
|
|
108
|
-
hash[
|
109
|
-
hash[
|
110
|
-
hash[
|
111
|
-
hash[:request_uri] = request_uri
|
112
|
-
hash[:proxy_address] = @proxy_address if @proxy_address
|
113
|
-
hash[:proxy_port] = @proxy_port if @proxy_port
|
114
|
-
hash[:code] = response.code.to_i
|
115
|
-
hash[:message] = response.message
|
116
|
-
hash[:class_name] = response.class.name
|
118
|
+
hash["code"] = response.code.to_i
|
119
|
+
hash["message"] = response.message
|
120
|
+
hash["class_name"] = response.class.name
|
117
121
|
hostent = Socket.gethostbyname(host)
|
118
|
-
hash[
|
119
|
-
hash[
|
122
|
+
hash["ipaddress"] = hostent[3].unpack("C4").join('.')
|
123
|
+
hash["headers"] = Hash.new
|
120
124
|
|
121
125
|
response.each_key{|name|
|
122
126
|
if @params
|
123
|
-
@params.each{|param| hash[
|
127
|
+
@params.each{|param| hash["headers"][param] = response[param] =~ /^-?\d+$/ ? response[param].to_i : response[param]}
|
124
128
|
else
|
125
|
-
hash[
|
129
|
+
hash["headers"][name] = response[name] =~ /^-?\d+$/ ? response[name].to_i : response[name]
|
126
130
|
end
|
127
131
|
}
|
128
132
|
|
129
|
-
response_time = Time.now - start
|
130
|
-
hash[:response_time] = response_time * 1000
|
131
|
-
return hash
|
132
133
|
rescue Timeout::Error => ex
|
133
|
-
$log.error "Timeout Error : #{
|
134
|
-
hash[
|
135
|
-
hash[
|
136
|
-
return hash
|
134
|
+
$log.error "Timeout Error : #{url}:#{port}#{request_uri}"
|
135
|
+
hash["code"] = 408
|
136
|
+
hash["message"] = ex.message
|
137
137
|
rescue => ex
|
138
|
-
$log.error ex.message
|
139
|
-
hash[
|
140
|
-
hash[
|
138
|
+
$log.error "#{ex.message} : #{url}:#{port}#{request_uri}"
|
139
|
+
hash["code"] = 0
|
140
|
+
hash["message"] = ex.message
|
141
|
+
ensure
|
142
|
+
hash["response_time"] = (Time.now - start) * 1000 #msec
|
141
143
|
return hash
|
142
144
|
end
|
143
145
|
|
@@ -30,6 +30,22 @@ class HttpStatusInputTest < Test::Unit::TestCase
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_configure
|
33
|
+
assert_raise(Fluent::ConfigError) {
|
34
|
+
d = create_driver('')
|
35
|
+
}
|
36
|
+
|
37
|
+
assert_raise(Fluent::ConfigError) {
|
38
|
+
d = create_driver %[
|
39
|
+
tag http.status
|
40
|
+
]
|
41
|
+
}
|
42
|
+
|
43
|
+
assert_raise(Fluent::ConfigError) {
|
44
|
+
d = create_driver %[
|
45
|
+
url http://example.com
|
46
|
+
]
|
47
|
+
}
|
48
|
+
|
33
49
|
d = create_driver
|
34
50
|
|
35
51
|
assert_equal "http.status", d.instance.tag
|
@@ -58,7 +74,7 @@ class HttpStatusInputTest < Test::Unit::TestCase
|
|
58
74
|
}
|
59
75
|
|
60
76
|
headers = {}
|
61
|
-
headers[
|
77
|
+
headers["headers"] = {
|
62
78
|
"server" => "Apache",
|
63
79
|
"date" => "Sun, 18 Nov 2012 17:12:09 GMT",
|
64
80
|
"last-modified" => "Thu, 15 Nov 2012 02:00:30 GMT",
|
@@ -71,22 +87,23 @@ class HttpStatusInputTest < Test::Unit::TestCase
|
|
71
87
|
}
|
72
88
|
|
73
89
|
Socket.stubs(:gethostbyname).returns(["www.test.ad.jp", [], 0, "\xC0\xA8\x00\x01"])
|
74
|
-
WebMock.stub_request(:head, "www.test.ad.jp").to_return(:status => 200, :headers => headers[
|
90
|
+
WebMock.stub_request(:head, "www.test.ad.jp").to_return(:status => 200, :headers => headers["headers"])
|
75
91
|
res_data = @obj.__send__(:get_status,@hash,args)
|
76
|
-
res_data[
|
92
|
+
res_data["response_time"] = 1.239
|
77
93
|
|
78
94
|
result_hash = {
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
95
|
+
"url"=>"http://www.test.ad.jp",
|
96
|
+
"host"=>"www.test.ad.jp",
|
97
|
+
"port"=>80,
|
98
|
+
"request_uri"=>"/",
|
99
|
+
"proxy_address"=>"proxy.test.jp",
|
100
|
+
"proxy_port"=>8080,
|
101
|
+
"code"=>200,
|
102
|
+
"message"=>"",
|
103
|
+
"class_name"=>"Net::HTTPOK",
|
104
|
+
"ipaddress"=>"192.168.0.1",
|
105
|
+
"response_time"=>1.239,
|
106
|
+
"headers"=>{
|
90
107
|
"server"=>"Apache",
|
91
108
|
"date"=>"Sun, 18 Nov 2012 17:12:09 GMT",
|
92
109
|
"last-modified"=>"Thu, 15 Nov 2012 02:00:30 GMT",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-http-status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|