riemann-tools 0.2.7 → 0.2.8
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/README.markdown +63 -5
- data/bin/riemann-consul +106 -0
- data/bin/riemann-haproxy +7 -1
- data/bin/riemann-health +4 -1
- data/bin/riemann-net +1 -1
- data/lib/riemann/tools.rb +2 -2
- metadata +33 -125
- data/bin/riemann-aws-billing +0 -79
- data/bin/riemann-aws-rds-status +0 -48
- data/bin/riemann-aws-status +0 -64
- data/bin/riemann-elasticsearch +0 -91
- data/bin/riemann-elb-metrics +0 -154
- data/bin/riemann-munin +0 -36
- data/bin/riemann-rabbitmq +0 -267
- data/bin/riemann-resmon +0 -103
- data/bin/riemann-riak +0 -329
- data/bin/riemann-riak-keys +0 -12
- data/bin/riemann-riak-ring +0 -8
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 210cb204200a12c61ba5387331a58d573a4cf004
|
4
|
+
data.tar.gz: a06f02966d09ba2009d19331da18c91f4e237f2f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c61c8d015c9a1a494ab7e2311cd80d5a774eb1c089f5a2ca891b797aa7c2a4021fe4523f365c97256bfdbae3e6e781f5cafde649271e61fac90eb12b752650bf
|
7
|
+
data.tar.gz: 70a6995d1ce99d458b009ec94e28f4b417bfa14f24eeb2862b1073abb48100ec3f0799c70466b99347e6639d6d656367648ac3ff450d5b77558757d38f31db53
|
data/README.markdown
CHANGED
@@ -4,15 +4,73 @@ Riemann Tools
|
|
4
4
|
Tiny programs to submit events to Riemann.
|
5
5
|
|
6
6
|
Riemann-health, for example, submits events about the current CPU, load,
|
7
|
-
memory, and disk use.
|
8
|
-
|
9
|
-
queues, etc. Most have internal configuration dependencies, so it'll be a while
|
10
|
-
before I can extract them for re-use.
|
7
|
+
memory, and disk use. Also available is `riemann-bench`, which submits
|
8
|
+
randomly distributed metrics for load testing.
|
11
9
|
|
12
10
|
Get started
|
13
|
-
|
11
|
+
===========
|
14
12
|
|
15
13
|
``` bash
|
16
14
|
gem install riemann-tools
|
17
15
|
riemann-health --host my.riemann.server
|
18
16
|
```
|
17
|
+
Riemann-tools programs
|
18
|
+
======================
|
19
|
+
|
20
|
+
This repository contains a number of different programs. Some of them
|
21
|
+
ship with the `riemann-tools` gem, including:
|
22
|
+
|
23
|
+
* riemann-apache-status - Apache monitoring.
|
24
|
+
* riemann-dir-files-count - File counts.
|
25
|
+
* riemann-freeswitch - FreeSwitch monitoring.
|
26
|
+
* riemann-memcached - Monitor Memcache.
|
27
|
+
* riemann-proc - Linux process monitoring.
|
28
|
+
* riemann-bench - Load testing for Riemann.
|
29
|
+
* riemann-dir-space - Directory space monitoring.
|
30
|
+
* riemann-haproxy - Monitor HAProxy.
|
31
|
+
* riemann-net - Network interface monitoring.
|
32
|
+
* riemann-varnish - Monitor Varnish.
|
33
|
+
* riemann-cloudant - Cloudant monitoring.
|
34
|
+
* riemann-diskstats - Disk statistics.
|
35
|
+
* riemann-health - General CPU, memory, disk and load monitoring.
|
36
|
+
* riemann-nginx-status - Monitor Nginx.
|
37
|
+
* riemann-zookeeper - Monitor Zookeeper.
|
38
|
+
* riemann-consul - Monitor Consul.
|
39
|
+
* riemann-fd - Linux file descriptor use.
|
40
|
+
* riemann-kvminstance - Monitor KVM instances.
|
41
|
+
* riemann-ntp - Monitor NTP
|
42
|
+
|
43
|
+
Also contained in the repository are a number of stand-alone monitoring
|
44
|
+
tools, which are shipped as separate gems.
|
45
|
+
|
46
|
+
Riemann stand-alone tools
|
47
|
+
=========================
|
48
|
+
|
49
|
+
Use these tools by installing their individual gems, usually named for
|
50
|
+
the specific tool, for example:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
gem install riemann-aws
|
54
|
+
```
|
55
|
+
|
56
|
+
To install the AWS tools.
|
57
|
+
|
58
|
+
* riemann-aws - Monitor various AWS services.
|
59
|
+
* riemann-elasticsearch - Monitor Elasticsearch.
|
60
|
+
* riemann-mesos - Monitor Mesos.
|
61
|
+
* riemann-rabbitmq - Monitor RabbitMQ.
|
62
|
+
* riemann-docker - Monitor Docker.
|
63
|
+
* riemann-marathon - Monitor Marathon.
|
64
|
+
* riemann-munin - Monitor Munin.
|
65
|
+
* riemann-riak - Monitor Riak.
|
66
|
+
|
67
|
+
There are also a number of additional, stand-alone tools, contained in
|
68
|
+
the [Riemann GitHub account](https://github.com/riemann/).
|
69
|
+
|
70
|
+
License
|
71
|
+
=======
|
72
|
+
|
73
|
+
The MIT License
|
74
|
+
|
75
|
+
Copyright (c) 2011-2016 Kyle Kingsbury
|
76
|
+
|
data/bin/riemann-consul
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Reports service and node status to riemann
|
4
|
+
|
5
|
+
require File.expand_path('../../lib/riemann/tools', __FILE__)
|
6
|
+
require 'socket'
|
7
|
+
require 'net/http'
|
8
|
+
require 'uri'
|
9
|
+
require 'json'
|
10
|
+
|
11
|
+
class Riemann::Tools::ConsulHealth
|
12
|
+
include Riemann::Tools
|
13
|
+
|
14
|
+
opt :consul_host, "Consul API Host (default to localhost)", :default => "localhost"
|
15
|
+
opt :consul_port, "Consul API Host (default to 8500)", :default => "8500"
|
16
|
+
opt :prefix, "prefix to use for all service names when reporting", :default => "consul "
|
17
|
+
opt :minimum_services_per_node, "minimum services per node (default: 0)", :default => 0
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
|
21
|
+
@hostname = opts[:consul_host]
|
22
|
+
@prefix = opts[:prefix]
|
23
|
+
@minimum_services_per_node = opts[:minimum_services_per_node]
|
24
|
+
@underlying_ip = IPSocket.getaddress(@hostname)
|
25
|
+
@consul_leader_url = URI.parse("http://" + opts[:consul_host] + ":" + opts[:consul_port] + "/v1/status/leader")
|
26
|
+
@consul_services_url = URI.parse("http://" + opts[:consul_host] + ":" + opts[:consul_port] + "/v1/catalog/services")
|
27
|
+
@consul_nodes_url = URI.parse("http://" + opts[:consul_host] + ":" + opts[:consul_port] + "/v1/catalog/nodes")
|
28
|
+
@consul_health_url_prefix = "http://" + opts[:consul_host] + ":" + opts[:consul_port] + "/v1/health/service/"
|
29
|
+
|
30
|
+
@last_services_read = Hash.new
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def alert(hostname, service, state, metric, description)
|
35
|
+
|
36
|
+
opts = { :host => hostname,
|
37
|
+
:service => service.to_s,
|
38
|
+
:state => state.to_s,
|
39
|
+
:metric => metric,
|
40
|
+
:description => description }
|
41
|
+
|
42
|
+
report(opts)
|
43
|
+
end
|
44
|
+
|
45
|
+
def get(url)
|
46
|
+
Net::HTTP.get_response(url).body
|
47
|
+
end
|
48
|
+
|
49
|
+
def tick
|
50
|
+
|
51
|
+
leader = get(@consul_leader_url)
|
52
|
+
leader_hostname = URI.parse("http://" + leader[1..-2]).hostname
|
53
|
+
|
54
|
+
if (leader_hostname == @underlying_ip)
|
55
|
+
nodes = JSON.parse(get(@consul_nodes_url))
|
56
|
+
services = JSON.parse(get(@consul_services_url))
|
57
|
+
services_by_nodes = Hash.new
|
58
|
+
|
59
|
+
for node in nodes
|
60
|
+
node_name = node["Node"]
|
61
|
+
services_by_nodes[node_name] = 0
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
# For every service
|
66
|
+
for service in services
|
67
|
+
service_name = service[0]
|
68
|
+
health_url = URI.parse(@consul_health_url_prefix + service_name)
|
69
|
+
health_nodes = JSON.parse(get(health_url))
|
70
|
+
|
71
|
+
totalCount = 0
|
72
|
+
okCount = 0
|
73
|
+
|
74
|
+
for node in health_nodes
|
75
|
+
hostname = node["Node"]["Node"]
|
76
|
+
ok = node["Checks"].all? {|check| check["Status"] == "passing"}
|
77
|
+
alert(hostname, "#{@prefix}#{service_name}", ok ? :ok : :critical, ok ? 1 : 0, JSON.generate(node))
|
78
|
+
totalCount += 1
|
79
|
+
okCount += ok ? 1 : 0
|
80
|
+
|
81
|
+
last_services_by_nodes = services_by_nodes[hostname].to_i
|
82
|
+
services_by_nodes[hostname] = last_services_by_nodes + 1
|
83
|
+
end
|
84
|
+
|
85
|
+
if (@last_services_read[service_name] != nil)
|
86
|
+
lastOk = @last_services_read[service_name]
|
87
|
+
if (lastOk != okCount)
|
88
|
+
alert("total", "#{@prefix}#{service_name}-count", okCount >= lastOk ? :ok : :critical, okCount, "Number of passing #{service_name} is: #{okCount}/#{totalCount}, Last time it was: #{lastOk}")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
@last_services_read[service_name] = okCount
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
# For every node
|
97
|
+
for node,count in services_by_nodes
|
98
|
+
alert(node, "#{@prefix}total-services", (count >= @minimum_services_per_node) ? :ok : :critical, count, "#{count} services in the specified node")
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
Riemann::Tools::ConsulHealth.run
|
data/bin/riemann-haproxy
CHANGED
@@ -26,11 +26,17 @@ class Riemann::Tools::Haproxy
|
|
26
26
|
:host => @uri.host,
|
27
27
|
:service => "#{ns} #{property}",
|
28
28
|
:metric => metric.to_f,
|
29
|
-
:state => (['UP', 'OPEN'].include?(row['status']) ? 'ok' : 'critical'),
|
30
29
|
:tags => ['haproxy']
|
31
30
|
)
|
32
31
|
end
|
33
32
|
end
|
33
|
+
|
34
|
+
report(
|
35
|
+
:host => @uri.host,
|
36
|
+
:service => "#{ns} state",
|
37
|
+
:state => (['UP', 'OPEN'].include?(row['status']) ? 'ok' : 'critical'),
|
38
|
+
:tags => ['haproxy']
|
39
|
+
)
|
34
40
|
end
|
35
41
|
end
|
36
42
|
|
data/bin/riemann-health
CHANGED
@@ -27,6 +27,7 @@ class Riemann::Tools::Health
|
|
27
27
|
case (ostype = `uname -s`.chomp.downcase)
|
28
28
|
when 'darwin'
|
29
29
|
@cores = `sysctl -n hw.ncpu`.to_i
|
30
|
+
@df = `df -P -t noiso9660`
|
30
31
|
@cpu = method :darwin_cpu
|
31
32
|
@disk = method :disk
|
32
33
|
@load = method :darwin_load
|
@@ -34,12 +35,14 @@ class Riemann::Tools::Health
|
|
34
35
|
darwin_top
|
35
36
|
when 'freebsd'
|
36
37
|
@cores = `sysctl -n hw.ncpu`.to_i
|
38
|
+
@df = `df -P -t noiso9660`
|
37
39
|
@cpu = method :freebsd_cpu
|
38
40
|
@disk = method :disk
|
39
41
|
@load = method :freebsd_load
|
40
42
|
@memory = method :freebsd_memory
|
41
43
|
else
|
42
44
|
@cores = cores
|
45
|
+
@df = `df -P --exclude-type=iso9660`
|
43
46
|
puts "WARNING: OS '#{ostype}' not explicitly supported. Falling back to Linux" unless ostype == "linux"
|
44
47
|
@cpu = method :linux_cpu
|
45
48
|
@disk = method :disk
|
@@ -243,7 +246,7 @@ class Riemann::Tools::Health
|
|
243
246
|
end
|
244
247
|
|
245
248
|
def disk
|
246
|
-
|
249
|
+
@df.split(/\n/).each do |r|
|
247
250
|
f = r.split(/\s+/)
|
248
251
|
next if f[0] == 'Filesystem'
|
249
252
|
next unless f[0] =~ /\// # Needs at least one slash in the mount path
|
data/bin/riemann-net
CHANGED
@@ -6,7 +6,7 @@ require File.expand_path('../../lib/riemann/tools', __FILE__)
|
|
6
6
|
|
7
7
|
class Riemann::Tools::Net
|
8
8
|
include Riemann::Tools
|
9
|
-
|
9
|
+
|
10
10
|
opt :interfaces, "Interfaces to monitor", :type => :strings, :default => nil
|
11
11
|
opt :ignore_interfaces, "Interfaces to ignore", :type => :strings, :default =>['lo']
|
12
12
|
|
data/lib/riemann/tools.rb
CHANGED
@@ -55,7 +55,7 @@ module Riemann
|
|
55
55
|
def report(event)
|
56
56
|
if options[:tag]
|
57
57
|
# Work around a bug with beefcake which can't take frozen strings.
|
58
|
-
event[:tags] = options[:tag].map(&:dup)
|
58
|
+
event[:tags] = [*event.fetch(:tags, [])] + options[:tag].map(&:dup)
|
59
59
|
end
|
60
60
|
|
61
61
|
event[:ttl] ||= (options[:ttl] || (options[:interval] * 2))
|
@@ -63,7 +63,7 @@ module Riemann
|
|
63
63
|
if options[:event_host]
|
64
64
|
event[:host] = options[:event_host].dup
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
event = event.merge(attributes)
|
68
68
|
|
69
69
|
riemann << event
|
metadata
CHANGED
@@ -1,218 +1,126 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riemann-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.8
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kyle Kingsbury
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-02-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: riemann-client
|
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.2.2
|
22
20
|
type: :runtime
|
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.2.2
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: trollop
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.16.2
|
38
34
|
type: :runtime
|
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: 1.16.2
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
42
|
+
name: json
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0
|
47
|
+
version: '0'
|
54
48
|
type: :runtime
|
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
|
-
version: 0
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: yajl-ruby
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 1.1.0
|
70
|
-
type: :runtime
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 1.1.0
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: fog
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 1.4.0
|
86
|
-
type: :runtime
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 1.4.0
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: faraday
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: 0.8.5
|
102
|
-
type: :runtime
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 0.8.5
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: nokogiri
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 1.5.6
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 1.5.6
|
54
|
+
version: '0'
|
126
55
|
description: Utilities which submit events to Riemann.
|
127
56
|
email: aphyr@aphyr.com
|
128
57
|
executables:
|
129
|
-
- riemann-
|
130
|
-
- riemann-munin
|
131
|
-
- riemann-dir-space
|
132
|
-
- riemann-zookeeper
|
133
|
-
- riemann-resmon
|
58
|
+
- riemann-apache-status
|
134
59
|
- riemann-bench
|
135
|
-
- riemann-
|
136
|
-
- riemann-
|
137
|
-
- riemann-freeswitch
|
138
|
-
- riemann-aws-billing
|
139
|
-
- riemann-elb-metrics
|
140
|
-
- riemann-riak
|
141
|
-
- riemann-health
|
60
|
+
- riemann-cloudant
|
61
|
+
- riemann-consul
|
142
62
|
- riemann-dir-files-count
|
143
|
-
- riemann-
|
144
|
-
- riemann-memcached
|
145
|
-
- riemann-haproxy
|
146
|
-
- riemann-elasticsearch
|
147
|
-
- riemann-riak-keys
|
63
|
+
- riemann-dir-space
|
148
64
|
- riemann-diskstats
|
149
65
|
- riemann-fd
|
150
|
-
- riemann-
|
151
|
-
- riemann-
|
152
|
-
- riemann-
|
153
|
-
- riemann-rabbitmq
|
154
|
-
- riemann-ntp
|
66
|
+
- riemann-freeswitch
|
67
|
+
- riemann-haproxy
|
68
|
+
- riemann-health
|
155
69
|
- riemann-kvminstance
|
70
|
+
- riemann-memcached
|
156
71
|
- riemann-net
|
157
|
-
- riemann-
|
72
|
+
- riemann-nginx-status
|
73
|
+
- riemann-ntp
|
74
|
+
- riemann-proc
|
75
|
+
- riemann-varnish
|
76
|
+
- riemann-zookeeper
|
158
77
|
extensions: []
|
159
78
|
extra_rdoc_files: []
|
160
79
|
files:
|
161
|
-
-
|
80
|
+
- LICENSE
|
81
|
+
- README.markdown
|
162
82
|
- bin/riemann-apache-status
|
163
|
-
- bin/riemann-aws-billing
|
164
|
-
- bin/riemann-aws-rds-status
|
165
|
-
- bin/riemann-aws-status
|
166
83
|
- bin/riemann-bench
|
167
84
|
- bin/riemann-cloudant
|
85
|
+
- bin/riemann-consul
|
168
86
|
- bin/riemann-dir-files-count
|
169
87
|
- bin/riemann-dir-space
|
170
88
|
- bin/riemann-diskstats
|
171
|
-
- bin/riemann-elasticsearch
|
172
|
-
- bin/riemann-elb-metrics
|
173
89
|
- bin/riemann-fd
|
174
90
|
- bin/riemann-freeswitch
|
175
91
|
- bin/riemann-haproxy
|
176
92
|
- bin/riemann-health
|
177
93
|
- bin/riemann-kvminstance
|
178
94
|
- bin/riemann-memcached
|
179
|
-
- bin/riemann-munin
|
180
95
|
- bin/riemann-net
|
181
96
|
- bin/riemann-nginx-status
|
182
97
|
- bin/riemann-ntp
|
183
98
|
- bin/riemann-proc
|
184
|
-
- bin/riemann-rabbitmq
|
185
|
-
- bin/riemann-resmon
|
186
|
-
- bin/riemann-riak
|
187
|
-
- bin/riemann-riak-keys
|
188
|
-
- bin/riemann-riak-ring
|
189
99
|
- bin/riemann-varnish
|
190
100
|
- bin/riemann-zookeeper
|
191
|
-
-
|
192
|
-
- README.markdown
|
101
|
+
- lib/riemann/tools.rb
|
193
102
|
homepage: https://github.com/aphyr/riemann-tools
|
194
103
|
licenses:
|
195
104
|
- MIT
|
105
|
+
metadata: {}
|
196
106
|
post_install_message:
|
197
107
|
rdoc_options: []
|
198
108
|
require_paths:
|
199
109
|
- lib
|
200
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
111
|
requirements:
|
203
|
-
- -
|
112
|
+
- - ">="
|
204
113
|
- !ruby/object:Gem::Version
|
205
114
|
version: 1.8.7
|
206
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
|
-
none: false
|
208
116
|
requirements:
|
209
|
-
- -
|
117
|
+
- - ">="
|
210
118
|
- !ruby/object:Gem::Version
|
211
119
|
version: '0'
|
212
120
|
requirements: []
|
213
121
|
rubyforge_project: riemann-tools
|
214
|
-
rubygems_version:
|
122
|
+
rubygems_version: 2.4.5
|
215
123
|
signing_key:
|
216
|
-
specification_version:
|
124
|
+
specification_version: 4
|
217
125
|
summary: Utilities which submit events to Riemann.
|
218
126
|
test_files: []
|