riemann-tools 1.0.0 → 1.1.0

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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +11 -0
  3. data/.github/workflows/ci.yml +13 -0
  4. data/.github/workflows/codeql-analysis.yml +72 -0
  5. data/.rubocop.yml +32 -0
  6. data/CHANGELOG.md +31 -2
  7. data/README.markdown +8 -24
  8. data/Rakefile +4 -2
  9. data/SECURITY.md +42 -0
  10. data/bin/riemann-apache-status +92 -78
  11. data/bin/riemann-bench +54 -49
  12. data/bin/riemann-cloudant +44 -40
  13. data/bin/riemann-consul +82 -76
  14. data/bin/riemann-dir-files-count +53 -47
  15. data/bin/riemann-dir-space +53 -47
  16. data/bin/riemann-diskstats +78 -75
  17. data/bin/riemann-fd +68 -48
  18. data/bin/riemann-freeswitch +108 -103
  19. data/bin/riemann-haproxy +46 -40
  20. data/bin/riemann-health +4 -343
  21. data/bin/riemann-kvminstance +18 -13
  22. data/bin/riemann-memcached +35 -29
  23. data/bin/riemann-net +4 -104
  24. data/bin/riemann-nginx-status +74 -67
  25. data/bin/riemann-ntp +4 -33
  26. data/bin/riemann-portcheck +40 -31
  27. data/bin/riemann-proc +96 -90
  28. data/bin/riemann-varnish +51 -45
  29. data/bin/riemann-zookeeper +38 -34
  30. data/lib/riemann/tools/health.rb +347 -0
  31. data/lib/riemann/tools/net.rb +104 -0
  32. data/lib/riemann/tools/ntp.rb +41 -0
  33. data/lib/riemann/tools/version.rb +1 -1
  34. data/lib/riemann/tools.rb +37 -40
  35. data/riemann-tools.gemspec +4 -1
  36. data/tools/riemann-aws/{Rakefile.rb → Rakefile} +2 -0
  37. data/tools/riemann-aws/bin/riemann-aws-billing +72 -66
  38. data/tools/riemann-aws/bin/riemann-aws-rds-status +55 -41
  39. data/tools/riemann-aws/bin/riemann-aws-sqs-status +37 -31
  40. data/tools/riemann-aws/bin/riemann-aws-status +63 -51
  41. data/tools/riemann-aws/bin/riemann-elb-metrics +149 -148
  42. data/tools/riemann-aws/bin/riemann-s3-list +70 -65
  43. data/tools/riemann-aws/bin/riemann-s3-status +85 -82
  44. data/tools/riemann-chronos/{Rakefile.rb → Rakefile} +2 -0
  45. data/tools/riemann-chronos/bin/riemann-chronos +136 -119
  46. data/tools/riemann-docker/{Rakefile.rb → Rakefile} +2 -0
  47. data/tools/riemann-docker/bin/riemann-docker +163 -174
  48. data/tools/riemann-elasticsearch/{Rakefile.rb → Rakefile} +2 -0
  49. data/tools/riemann-elasticsearch/bin/riemann-elasticsearch +155 -147
  50. data/tools/riemann-marathon/{Rakefile.rb → Rakefile} +2 -0
  51. data/tools/riemann-marathon/bin/riemann-marathon +138 -122
  52. data/tools/riemann-mesos/{Rakefile.rb → Rakefile} +2 -0
  53. data/tools/riemann-mesos/bin/riemann-mesos +125 -110
  54. data/tools/riemann-munin/{Rakefile.rb → Rakefile} +2 -0
  55. data/tools/riemann-munin/bin/riemann-munin +28 -22
  56. data/tools/riemann-rabbitmq/{Rakefile.rb → Rakefile} +2 -0
  57. data/tools/riemann-rabbitmq/bin/riemann-rabbitmq +226 -222
  58. data/tools/riemann-riak/{Rakefile.rb → Rakefile} +2 -0
  59. data/tools/riemann-riak/bin/riemann-riak +281 -289
  60. data/tools/riemann-riak/riak_status/riak_status.rb +39 -39
  61. metadata +65 -16
@@ -1,166 +1,174 @@
1
1
  #!/usr/bin/env ruby
2
- Process.setproctitle($0)
2
+ # frozen_string_literal: true
3
+
4
+ Process.setproctitle($PROGRAM_NAME)
3
5
 
4
6
  require 'riemann/tools'
5
7
 
6
- class Riemann::Tools::Elasticsearch
7
- include Riemann::Tools
8
- require 'faraday'
9
- require 'json'
10
- require 'uri'
11
-
12
- opt :read_timeout, 'Faraday read timeout', type: :int, default: 2
13
- opt :open_timeout, 'Faraday open timeout', type: :int, default: 1
14
- opt :path_prefix, 'Elasticsearch path prefix for proxied installations e.g. "els" for target http://localhost/els/_cluster/health', default: "/"
15
- opt :es_host, 'Elasticsearch host', default: "localhost"
16
- opt :es_port, 'Elasticsearch port', type: :int, default: 9200
17
- opt :es_search_index, 'Elasticsearch index to fetch search statistics for', default: "_all"
18
-
19
-
20
- # Handles HTTP connections and GET requests safely
21
- def safe_get(uri)
22
- # Handle connection timeouts
23
- response = nil
24
- begin
25
- connection = Faraday.new(uri)
26
- response = connection.get do |req|
27
- req.options[:timeout] = options[:read_timeout]
28
- req.options[:open_timeout] = options[:open_timeout]
8
+ module Riemann
9
+ module Tools
10
+ class Elasticsearch
11
+ include Riemann::Tools
12
+ require 'faraday'
13
+ require 'json'
14
+ require 'uri'
15
+
16
+ opt :read_timeout, 'Faraday read timeout', type: :int, default: 2
17
+ opt :open_timeout, 'Faraday open timeout', type: :int, default: 1
18
+ opt :path_prefix,
19
+ 'Elasticsearch path prefix for proxied installations e.g. "els" for target http://localhost/els/_cluster/health', default: '/'
20
+ opt :es_host, 'Elasticsearch host', default: 'localhost'
21
+ opt :es_port, 'Elasticsearch port', type: :int, default: 9200
22
+ opt :es_search_index, 'Elasticsearch index to fetch search statistics for', default: '_all'
23
+
24
+ # Handles HTTP connections and GET requests safely
25
+ def safe_get(uri)
26
+ # Handle connection timeouts
27
+ response = nil
28
+ begin
29
+ connection = Faraday.new(uri)
30
+ response = connection.get do |req|
31
+ req.options[:timeout] = options[:read_timeout]
32
+ req.options[:open_timeout] = options[:open_timeout]
33
+ end
34
+ rescue StandardError => e
35
+ report(
36
+ host: uri.host,
37
+ service: 'elasticsearch health',
38
+ state: 'critical',
39
+ description: "HTTP connection error: #{e.class} - #{e.message}",
40
+ )
29
41
  end
30
- rescue => e
31
- report(:host => uri.host,
32
- :service => "elasticsearch health",
33
- :state => "critical",
34
- :description => "HTTP connection error: #{e.class} - #{e.message}"
35
- )
42
+ response
36
43
  end
37
- response
38
- end
39
-
40
- def make_es_url(path)
41
- path_prefix = options[:path_prefix]
42
- path_prefix[0] = '' if path_prefix[0]=='/'
43
- path_prefix[path_prefix.length-1] = '' if path_prefix[path_prefix.length-1]=='/'
44
- "http://#{options[:es_host]}:#{options[:es_port]}#{path_prefix.length>0?'/':''}#{path_prefix}/#{path}"
45
- end
46
-
47
- def health_url
48
- make_es_url("_cluster/health")
49
- end
50
-
51
- def indices_url
52
- make_es_url("_stats/store")
53
- end
54
-
55
- def search_url
56
- es_search_index = options[:es_search_index]
57
- make_es_url("#{es_search_index}/_stats/search")
58
- end
59
-
60
- def is_bad?(response, uri)
61
- if response.success?
62
- false
63
- else
64
- report(:host => uri.host,
65
- :service => "elasticsearch health",
66
- :state => "critical",
67
- :description => response.nil? ? "HTTP response is empty!" : "HTTP connection error: #{response.status} - #{response.body}"
68
- )
69
- end
70
- end
71
-
72
- def tick_indices
73
- uri = URI(indices_url)
74
- response = safe_get(uri)
75
44
 
76
- return if is_bad?(response, uri)
77
-
78
- # Assuming that a 200 will give json
79
- json = JSON.parse(response.body)
45
+ def make_es_url(path)
46
+ path_prefix = options[:path_prefix]
47
+ path_prefix[0] = '' if path_prefix[0] == '/'
48
+ path_prefix[path_prefix.length - 1] = '' if path_prefix[path_prefix.length - 1] == '/'
49
+ "http://#{options[:es_host]}:#{options[:es_port]}#{path_prefix.length.positive? ? '/' : ''}#{path_prefix}/#{path}"
50
+ end
80
51
 
81
- json["indices"].each_pair do |k,v|
82
- report(:host => uri.host,
83
- :service => "elasticsearch index/#{k}/primaries/size_in_bytes",
84
- :metric => v["primaries"]["store"]["size_in_bytes"]
85
- )
86
- report(:host => uri.host,
87
- :service => "elasticsearch index/#{k}/total/size_in_bytes",
88
- :metric => v["total"]["store"]["size_in_bytes"]
89
- )
90
- end
91
- end
52
+ def health_url
53
+ make_es_url('_cluster/health')
54
+ end
92
55
 
93
- def tick_search
94
- uri = URI(search_url)
95
- response = safe_get(uri)
56
+ def indices_url
57
+ make_es_url('_stats/store')
58
+ end
96
59
 
97
- return if is_bad?(response, uri)
60
+ def search_url
61
+ es_search_index = options[:es_search_index]
62
+ make_es_url("#{es_search_index}/_stats/search")
63
+ end
98
64
 
99
- es_search_index = options[:es_search_index]
100
- # Assuming that a 200 will give json
101
- json = JSON.parse(response.body)
65
+ def bad?(response, uri)
66
+ if response.success?
67
+ false
68
+ else
69
+ report(
70
+ host: uri.host,
71
+ service: 'elasticsearch health',
72
+ state: 'critical',
73
+ description: response.nil? ? 'HTTP response is empty!' : "HTTP connection error: #{response.status} - #{response.body}",
74
+ )
75
+ end
76
+ end
102
77
 
103
- json["_all"].each_pair do |type, data|
104
- query = data["search"]["query_time_in_millis"].to_f / data["search"]["query_total"].to_f
105
- fetch = data["search"]["fetch_time_in_millis"].to_f / data["search"]["fetch_total"].to_f
78
+ def tick_indices
79
+ uri = URI(indices_url)
80
+ response = safe_get(uri)
81
+
82
+ return if bad?(response, uri)
83
+
84
+ # Assuming that a 200 will give json
85
+ json = JSON.parse(response.body)
86
+
87
+ json['indices'].each_pair do |k, v|
88
+ report(
89
+ host: uri.host,
90
+ service: "elasticsearch index/#{k}/primaries/size_in_bytes",
91
+ metric: v['primaries']['store']['size_in_bytes'],
92
+ )
93
+ report(
94
+ host: uri.host,
95
+ service: "elasticsearch index/#{k}/total/size_in_bytes",
96
+ metric: v['total']['store']['size_in_bytes'],
97
+ )
98
+ end
99
+ end
106
100
 
107
- report(:host => uri.host,
108
- :service => "elasticsearch search/#{es_search_index}/query",
109
- :metric => query
110
- )
111
- report(:host => uri.host,
112
- :service => "elasticsearch search/#{es_search_index}/fetch",
113
- :metric => fetch
114
- )
115
- end
116
- end
101
+ def tick_search
102
+ uri = URI(search_url)
103
+ response = safe_get(uri)
104
+
105
+ return if bad?(response, uri)
106
+
107
+ es_search_index = options[:es_search_index]
108
+ # Assuming that a 200 will give json
109
+ json = JSON.parse(response.body)
110
+
111
+ json['_all'].each_pair do |_type, data|
112
+ query = data['search']['query_time_in_millis'].to_f / data['search']['query_total']
113
+ fetch = data['search']['fetch_time_in_millis'].to_f / data['search']['fetch_total']
114
+
115
+ report(
116
+ host: uri.host,
117
+ service: "elasticsearch search/#{es_search_index}/query",
118
+ metric: query,
119
+ )
120
+ report(
121
+ host: uri.host,
122
+ service: "elasticsearch search/#{es_search_index}/fetch",
123
+ metric: fetch,
124
+ )
125
+ end
126
+ end
117
127
 
118
- def tick
119
- begin
120
- tick_indices
121
- tick_search
122
- rescue Exception => e
123
- report(:host => options[:es_host],
124
- :service => "elasticsearch error",
125
- :state => "critical",
126
- :description => "Elasticsearch cluster error: #{e.message}")
127
- end
128
- uri = URI(health_url)
129
- response = safe_get(uri)
130
-
131
- return if is_bad?(response, uri)
132
-
133
- # Assuming that a 200 will give json
134
- json = JSON.parse(response.body)
135
- cluster_name = json.delete("cluster_name")
136
- cluster_status = json.delete("status")
137
- state = case cluster_status
138
- when "green"
139
- "ok"
140
- when "yellow"
141
- "warning"
142
- when "red"
143
- "critical"
144
- end
145
-
146
- report(:host => uri.host,
147
- :service => "elasticsearch health",
148
- :state => state,
149
- :description => "Elasticsearch cluster: #{cluster_name} - #{cluster_status}")
150
-
151
- json.each_pair do |k,v|
152
- report(:host => uri.host,
153
- :service => "elasticsearch #{k}",
154
- :metric => v,
155
- :description => "Elasticsearch cluster #{k}"
156
- )
128
+ def tick
129
+ begin
130
+ tick_indices
131
+ tick_search
132
+ rescue StandardError => e
133
+ report(
134
+ host: options[:es_host],
135
+ service: 'elasticsearch error',
136
+ state: 'critical',
137
+ description: "Elasticsearch cluster error: #{e.message}",
138
+ )
139
+ end
140
+ uri = URI(health_url)
141
+ response = safe_get(uri)
142
+
143
+ return if bad?(response, uri)
144
+
145
+ # Assuming that a 200 will give json
146
+ json = JSON.parse(response.body)
147
+ cluster_name = json.delete('cluster_name')
148
+ cluster_status = json.delete('status')
149
+ state = {
150
+ 'green' => 'ok',
151
+ 'yellow' => 'warning',
152
+ 'red' => 'critical',
153
+ }[cluster_status]
154
+
155
+ report(
156
+ host: uri.host,
157
+ service: 'elasticsearch health',
158
+ state: state,
159
+ description: "Elasticsearch cluster: #{cluster_name} - #{cluster_status}",
160
+ )
157
161
 
162
+ json.each_pair do |k, v|
163
+ report(
164
+ host: uri.host,
165
+ service: "elasticsearch #{k}",
166
+ metric: v,
167
+ description: "Elasticsearch cluster #{k}",
168
+ )
169
+ end
170
+ end
158
171
  end
159
-
160
172
  end
161
-
162
-
163
-
164
173
  end
165
174
  Riemann::Tools::Elasticsearch.run
166
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems'
2
4
  require 'rubygems/package_task'
3
5
  require 'rdoc/task'
@@ -1,142 +1,159 @@
1
1
  #!/usr/bin/env ruby
2
- Process.setproctitle($0)
2
+ # frozen_string_literal: true
3
3
 
4
- require 'riemann/tools'
4
+ Process.setproctitle($PROGRAM_NAME)
5
5
 
6
- class Riemann::Tools::Marathon
7
- include Riemann::Tools
6
+ require 'riemann/tools'
8
7
 
9
- require 'faraday'
10
- require 'json'
11
- require 'uri'
8
+ module Riemann
9
+ module Tools
10
+ class Marathon
11
+ include Riemann::Tools
12
+
13
+ require 'faraday'
14
+ require 'json'
15
+ require 'uri'
16
+
17
+ opt :read_timeout, 'Faraday read timeout', type: :int, default: 2
18
+ opt :open_timeout, 'Faraday open timeout', type: :int, default: 1
19
+ opt :path_prefix,
20
+ 'Marathon path prefix for proxied installations e.g. "marathon" for target http://localhost/marathon/metrics', default: '/'
21
+ opt :marathon_host, 'Marathon host', default: 'localhost'
22
+ opt :marathon_port, 'Marathon port', type: :int, default: 8080
23
+
24
+ def initialize
25
+ options[:interval] = 60
26
+ options[:ttl] = 120
27
+ end
12
28
 
13
- opt :read_timeout, 'Faraday read timeout', type: :int, default: 2
14
- opt :open_timeout, 'Faraday open timeout', type: :int, default: 1
15
- opt :path_prefix, 'Marathon path prefix for proxied installations e.g. "marathon" for target http://localhost/marathon/metrics', default: "/"
16
- opt :marathon_host, 'Marathon host', default: "localhost"
17
- opt :marathon_port, 'Marathon port', type: :int, default: 8080
29
+ # Handles HTTP connections and GET requests safely
30
+ def safe_get(uri)
31
+ # Handle connection timeouts
32
+ response = nil
33
+ begin
34
+ connection = Faraday.new(uri)
35
+ response = connection.get do |req|
36
+ req.options[:timeout] = options[:read_timeout]
37
+ req.options[:open_timeout] = options[:open_timeout]
38
+ end
39
+ rescue StandardError => e
40
+ report(
41
+ host: uri.host,
42
+ service: 'marathon health',
43
+ state: 'critical',
44
+ description: "HTTP connection error: #{e.class} - #{e.message}",
45
+ )
46
+ end
47
+ response
48
+ end
18
49
 
19
- def initialize
20
- options[:interval] = 60
21
- options[:ttl] = 120
22
- end
50
+ def health_url
51
+ path_prefix = options[:path_prefix]
52
+ path_prefix[0] = '' if path_prefix[0] == '/'
53
+ path_prefix[path_prefix.length - 1] = '' if path_prefix[path_prefix.length - 1] == '/'
54
+ "http://#{options[:marathon_host]}:#{options[:marathon_port]}#{path_prefix.length.positive? ? '/' : ''}#{path_prefix}/metrics"
55
+ end
23
56
 
24
- # Handles HTTP connections and GET requests safely
25
- def safe_get(uri)
26
- # Handle connection timeouts
27
- response = nil
28
- begin
29
- connection = Faraday.new(uri)
30
- response = connection.get do |req|
31
- req.options[:timeout] = options[:read_timeout]
32
- req.options[:open_timeout] = options[:open_timeout]
33
- end
34
- rescue => e
35
- report(:host => uri.host,
36
- :service => "marathon health",
37
- :state => "critical",
38
- :description => "HTTP connection error: #{e.class} - #{e.message}"
39
- )
57
+ def apps_url
58
+ path_prefix = options[:path_prefix]
59
+ path_prefix[0] = '' if path_prefix[0] == '/'
60
+ path_prefix[path_prefix.length - 1] = '' if path_prefix[path_prefix.length - 1] == '/'
61
+ "http://#{options[:marathon_host]}:#{options[:marathon_port]}#{path_prefix.length.positive? ? '/' : ''}#{path_prefix}/v2/apps"
40
62
  end
41
- response
42
- end
43
63
 
44
- def health_url
45
- path_prefix = options[:path_prefix]
46
- path_prefix[0] = '' if path_prefix[0]=='/'
47
- path_prefix[path_prefix.length-1] = '' if path_prefix[path_prefix.length-1]=='/'
48
- "http://#{options[:marathon_host]}:#{options[:marathon_port]}#{path_prefix.length>0?'/':''}#{path_prefix}/metrics"
49
- end
64
+ def tick
65
+ tick_health
66
+ tick_apps
67
+ end
50
68
 
51
- def apps_url
52
- path_prefix = options[:path_prefix]
53
- path_prefix[0] = '' if path_prefix[0]=='/'
54
- path_prefix[path_prefix.length-1] = '' if path_prefix[path_prefix.length-1]=='/'
55
- "http://#{options[:marathon_host]}:#{options[:marathon_port]}#{path_prefix.length>0?'/':''}#{path_prefix}/v2/apps"
56
- end
69
+ def tick_health
70
+ uri = URI(health_url)
71
+ response = safe_get(uri)
72
+
73
+ return if response.nil?
74
+
75
+ if response.status != 200
76
+ report(
77
+ host: uri.host,
78
+ service: 'marathon health',
79
+ state: 'critical',
80
+ description: "HTTP connection error: #{response.status} - #{response.body}",
81
+ )
82
+ else
83
+ # Assuming that a 200 will give json
84
+ json = JSON.parse(response.body)
85
+ state = 'ok'
86
+
87
+ report(
88
+ host: uri.host,
89
+ service: 'marathon health',
90
+ state: state,
91
+ )
92
+
93
+ json.each_pair do |t, d|
94
+ next unless d.respond_to? :each_pair
95
+
96
+ d.each_pair do |service, counters|
97
+ report(
98
+ host: uri.host,
99
+ service: "marathon_metric #{t} #{service}",
100
+ metric: 1,
101
+ tags: ['metric_name'],
102
+ ttl: 600,
103
+ )
104
+ next unless counters.respond_to? :each_pair
57
105
 
58
- def tick
59
- tick_health
60
- tick_apps
61
- end
62
-
63
- def tick_health
64
- uri = URI(health_url)
65
- response = safe_get(uri)
66
-
67
- return if response.nil?
68
-
69
- if response.status != 200
70
- report(:host => uri.host,
71
- :service => "marathon health",
72
- :state => "critical",
73
- :description => "HTTP connection error: #{response.status} - #{response.body}"
74
- )
75
- else
76
- # Assuming that a 200 will give json
77
- json = JSON.parse(response.body)
78
- state = "ok"
79
-
80
- report(:host => uri.host,
81
- :service => "marathon health",
82
- :state => state)
83
-
84
- json.each_pair do |t, d|
85
- if d.respond_to? :each_pair
86
- d.each_pair do |service, counters|
87
- report(:host => uri.host,
88
- :service => "marathon_metric #{t} #{service}",
89
- :metric => 1,
90
- :tags => ["metric_name"],
91
- :ttl => 600
92
- )
93
- if counters.respond_to? :each_pair
94
106
  counters.each_pair do |k, v|
95
- if v.is_a? Numeric
96
- report(:host => uri.host,
97
- :service => "marathon #{service} #{k}",
98
- :metric => v,
99
- :tags => ["metric", "#{t}"],
100
- :ttl => 600
101
- )
102
- end
107
+ next unless v.is_a? Numeric
108
+
109
+ report(
110
+ host: uri.host,
111
+ service: "marathon #{service} #{k}",
112
+ metric: v,
113
+ tags: ['metric', t.to_s],
114
+ ttl: 600,
115
+ )
103
116
  end
104
117
  end
105
118
  end
106
119
  end
107
120
  end
108
- end
109
- end
110
121
 
111
- def tick_apps
112
- uri = URI(apps_url)
113
- response = safe_get(uri)
114
-
115
- return if response.nil?
116
-
117
- if response.status != 200
118
- report(:host => uri.host,
119
- :service => "marathon health",
120
- :state => "critical",
121
- :description => "HTTP connection error: #{response.status} - #{response.body}"
122
- )
123
- else
124
- # Assuming that a 200 will give json
125
- json = JSON.parse(response.body)
126
- state = "ok"
127
-
128
- report(:host => uri.host,
129
- :service => "marathon health",
130
- :state => state)
131
-
132
- json["apps"].each do |app|
133
- app.each_pair do |k, v|
134
- if v.is_a? Numeric
135
- report(:host => uri.host,
136
- :service => "marathon apps#{app["id"]}/#{k}",
137
- :metric => v,
138
- :ttl => 120
139
- )
122
+ def tick_apps
123
+ uri = URI(apps_url)
124
+ response = safe_get(uri)
125
+
126
+ return if response.nil?
127
+
128
+ if response.status != 200
129
+ report(
130
+ host: uri.host,
131
+ service: 'marathon health',
132
+ state: 'critical',
133
+ description: "HTTP connection error: #{response.status} - #{response.body}",
134
+ )
135
+ else
136
+ # Assuming that a 200 will give json
137
+ json = JSON.parse(response.body)
138
+ state = 'ok'
139
+
140
+ report(
141
+ host: uri.host,
142
+ service: 'marathon health',
143
+ state: state,
144
+ )
145
+
146
+ json['apps'].each do |app|
147
+ app.each_pair do |k, v|
148
+ next unless v.is_a? Numeric
149
+
150
+ report(
151
+ host: uri.host,
152
+ service: "marathon apps#{app['id']}/#{k}",
153
+ metric: v,
154
+ ttl: 120,
155
+ )
156
+ end
140
157
  end
141
158
  end
142
159
  end
@@ -144,4 +161,3 @@ class Riemann::Tools::Marathon
144
161
  end
145
162
  end
146
163
  Riemann::Tools::Marathon.run
147
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems'
2
4
  require 'rubygems/package_task'
3
5
  require 'rdoc/task'