riemann-tools 0.2.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 603ad6a76396ab1ac722944ae07ec949dd2c4a89
4
- data.tar.gz: 0e58d12f1010c6cea9ef3025bb10b89366e7e58f
3
+ metadata.gz: 0ce8422ca7b04d401460ff2850f94c32626e796a
4
+ data.tar.gz: a65e55e277a680dbef2860716fc2c36eb2545e93
5
5
  SHA512:
6
- metadata.gz: bd29968ed635f6c6c81760cdc8160a12b0066609a2c01a63381020787a30a2d3ae16d69e7c53889d1025f6713b3ea75a35f369c2a7c526f5244fe1aa22609993
7
- data.tar.gz: 174f7b2263f26edfb15b38a82fc1b47ace907f1cfa2eda2e74115e46483f04039fd306ba61512f714cc46183e88d49b8268645a9f0cb2617fa8033e5bbdbcd23
6
+ metadata.gz: 090cd5f4c835323168fe37b660238646c56d678d05e89b4484b201ba13e2620144c31b9ab27b49a91a230f49d612d44512fcca02aeaf254c0b47202adece4592
7
+ data.tar.gz: cc2bef99a2932aa9ee3ce3a8c20022d0814b6f185df81e6ed4596341c46ef35000f79037d99f0a1e2bf21f30231b5d749e57e0b8404199334717058566fcedf8
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fog'
3
+
4
+
5
+ require File.expand_path('../../lib/riemann/tools', __FILE__)
6
+
7
+ $0 = __FILE__
8
+
9
+ class Riemann::Tools::AWSBilling
10
+ include Riemann::Tools
11
+
12
+ opt :fog_credentials_file, "Fog credentials file", :type => String
13
+ opt :fog_credential, "Fog credentials to use", :type => String
14
+
15
+ opt :access_key, "AWS access key", :type => String
16
+ opt :secret_key, "Secret access key", :type => String
17
+ opt :services, "AWS services: AmazonEC2 AmazonS3 AWSDataTransfer", :type => strings, :multi => true, :default => ["AmazonEC2", "AmazonS3", "AWSDataTransfer"]
18
+
19
+ opt :time_start, "Start time in seconds of the metrics period (2hrs ago default)", :type => Integer, :default => 7200
20
+ opt :time_end, "End time in seconds of the metrics period ", :type => Integer, :default => 60
21
+
22
+
23
+ def initialize
24
+ if options[:fog_credentials_file]
25
+ Fog.credentials_path = opts[:fog_credentials_file]
26
+ Fog.credential = opts[:fog_credential].to_sym
27
+ @cloudwatch = Fog::AWS::CloudWatch.new
28
+ else
29
+ @cloudwatch = Fog::AWS::CloudWatch.new(:aws_secret_access_key => opts[:secret_key], :aws_access_key_id => opts[:access_key])
30
+ @start_time = (Time.now.utc - opts[:time_start]).iso8601
31
+ @end_time = (Time.now.utc - opts[:time_end]).iso8601
32
+ end
33
+ end
34
+
35
+ def tick
36
+ opts[:services].each do |service|
37
+ data = @cloudwatch.get_metric_statistics({
38
+ 'Statistics' => ["Maximum"],
39
+ 'StartTime' => @start_time,
40
+ 'EndTime' => @end_time,
41
+ 'Period' => 3600,
42
+ 'Unit' => "None",
43
+ 'MetricName' => "EstimatedCharges",
44
+ 'Namespace' => "AWS/Billing",
45
+ 'Dimensions' => [
46
+ {
47
+ 'Name' => "ServiceName",
48
+ 'Value' => service
49
+ },
50
+ {
51
+ 'Name' => "Currency",
52
+ 'Value' => "USD"
53
+ }
54
+ ]
55
+ }).body['GetMetricStatisticsResult']['Datapoints']
56
+
57
+
58
+ data.each do |metrics|
59
+ name = "AWScloudwatch.Billing." + service
60
+ value = metrics["Maximum"]
61
+ timestamp = metrics["Timestamp"].to_i
62
+
63
+ event = {
64
+ host: nil,
65
+ service: name,
66
+ time: timestamp,
67
+ description: "AWS Estimate Charges for #{service}",
68
+ tags: ["aws_billing"],
69
+ state: "ok",
70
+ metric: value
71
+ }
72
+
73
+ report event
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ Riemann::Tools::AWSBilling.run
@@ -16,7 +16,7 @@ class Riemann::Tools::Diskstats
16
16
  def state
17
17
  f = File.read('/proc/diskstats')
18
18
  state = f.split("\n").reject { |d| d =~ /(ram|loop)/ }.inject({}) do |s, line|
19
- if line =~ /^(?:\s+\d+){2}\s+([\w\d]+) (.*)$/
19
+ if line =~ /^(?:\s+\d+){2}\s+([\w\d\-]+) (.*)$/
20
20
  dev = $1
21
21
 
22
22
  ['reads reqs',
data/bin/riemann-health CHANGED
@@ -163,7 +163,7 @@ class Riemann::Tools::Health
163
163
  end
164
164
 
165
165
  def freebsd_load
166
- m = `uptime`.split[0].match(/^[0-9]*\.[0-9]*$/)
166
+ m = `uptime`.split(':')[-1].chomp.gsub(/\s+/,'').split(',')
167
167
  load = m[0].to_f / @cores
168
168
  if load > @limits[:load][:critical]
169
169
  alert "load", :critical, load, "1-minute load average/core is #{load}"
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Reports varnish stats to Riemann.
4
+
5
+ require File.expand_path('../../lib/riemann/tools', __FILE__)
6
+
7
+ class Riemann::Tools::Varnish
8
+ include Riemann::Tools
9
+
10
+ opt :varnish_host, "Varnish hostname", :default => `hostname`.chomp
11
+
12
+ def initialize
13
+ @vstats = [ "client_conn",
14
+ "client_drop",
15
+ "client_req",
16
+ "cache_hit",
17
+ "cache_miss" ]
18
+ end
19
+
20
+ def tick
21
+ stats = `varnishstat -1 -f #{@vstats.join(",")}`
22
+ stats.each_line do |stat|
23
+ m = stat.split()
24
+ report(
25
+ :host => opts[:varnish_host].dup,
26
+ :service => "varnish #{m[0]}",
27
+ :metric => m[1].to_f,
28
+ :state => "ok",
29
+ :description => "#{m[3..-1].join(' ')}",
30
+ :tags => ["varnish"]
31
+ )
32
+ end
33
+ end
34
+ end
35
+
36
+ Riemann::Tools::Varnish.run
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Gathers zookeeper STATS and submits them to Riemann.
4
+
5
+ require File.expand_path('../../lib/riemann/tools', __FILE__)
6
+
7
+ class Riemann::Tools::Zookeeper
8
+ include Riemann::Tools
9
+ require 'socket'
10
+
11
+ opt :zookeeper_host, "Zookeeper hostname", :default => 'localhost'
12
+ opt :zookeeper_port, "Zookeeper port", :default => 2181
13
+
14
+ def tick
15
+ sock = TCPSocket.new(opts[:zookeeper_host], opts[:zookeeper_port])
16
+ sock.sync = true
17
+ sock.print("mntr")
18
+ sock.flush
19
+
20
+
21
+ data = {}
22
+ while true
23
+ stats = sock.gets
24
+
25
+ break if stats.nil?
26
+
27
+ m = stats.match /^(\w+)\t+(.*)/
28
+
29
+ report(
30
+ :host => opts[ :zookeeper_host].dup,
31
+ :service => "zookeeper #{m[1]}",
32
+ :metric => m[2].to_f,
33
+ :state => 'ok',
34
+ :tags => ['zookeeper']
35
+ )
36
+ end
37
+ sock.close
38
+ end
39
+ end
40
+
41
+ Riemann::Tools::Zookeeper.run
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Kingsbury
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-23 00:00:00.000000000 Z
11
+ date: 2014-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: riemann-client
@@ -133,6 +133,7 @@ executables:
133
133
  - riemann-bench
134
134
  - riemann-proc
135
135
  - riemann-fd
136
+ - riemann-zookeeper
136
137
  - riemann-apache-status
137
138
  - riemann-cloudant
138
139
  - riemann-resmon
@@ -140,8 +141,10 @@ executables:
140
141
  - riemann-kvminstance
141
142
  - riemann-rabbitmq
142
143
  - riemann-munin
144
+ - riemann-aws-billing
143
145
  - riemann-riak
144
146
  - riemann-redis-slowlog
147
+ - riemann-varnish
145
148
  - riemann-haproxy
146
149
  - riemann-freeswitch
147
150
  - riemann-aws-status
@@ -154,6 +157,7 @@ extra_rdoc_files: []
154
157
  files:
155
158
  - lib/riemann/tools.rb
156
159
  - bin/riemann-apache-status
160
+ - bin/riemann-aws-billing
157
161
  - bin/riemann-aws-status
158
162
  - bin/riemann-bench
159
163
  - bin/riemann-cloudant
@@ -177,6 +181,8 @@ files:
177
181
  - bin/riemann-riak
178
182
  - bin/riemann-riak-keys
179
183
  - bin/riemann-riak-ring
184
+ - bin/riemann-varnish
185
+ - bin/riemann-zookeeper
180
186
  - LICENSE
181
187
  - README.markdown
182
188
  homepage: https://github.com/aphyr/riemann-tools
@@ -199,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
205
  version: '0'
200
206
  requirements: []
201
207
  rubyforge_project: riemann-tools
202
- rubygems_version: 2.1.11
208
+ rubygems_version: 2.0.14
203
209
  signing_key:
204
210
  specification_version: 4
205
211
  summary: Utilities which submit events to Riemann.