riemann-smith 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/riemann-smith +23 -14
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abe727427108fb93a1597b67f52c52a41150aa9c
4
- data.tar.gz: 0ef96af51a6fcd3a78703e42a9aac5edbbde8251
3
+ metadata.gz: 4e513e2a5d743c3065f035c53b2206b0aa30b7f1
4
+ data.tar.gz: 8d76647517a2059142b7308845903d40575bd2ef
5
5
  SHA512:
6
- metadata.gz: 28f120246ee14e7e4e72b694a87159b94e81239daee8370179273df96d6bc123688f888d8d9fad8f75c91d878866052fa8c791f64a072c73c1708383bf979042
7
- data.tar.gz: 5c9fc151c4aced5fe8c9cdee03dcb13d25a2ecf7a562d0b706a5de1739e6d5eb80aa897612cb144ced2357004f807b13ef88b89525b083f5a6422e2d430b4c2a
6
+ metadata.gz: 5e9be2c0b8cb1e011ca50d82922fbe0c1227569da4b7c9875542e7c7aec213af57411700f7c256ab457b73dba2625705b41485acc0b7b026f1d9d8bd789ebd9f
7
+ data.tar.gz: a93f19496d1acc391622179a638fb303f0f9c20ea79f2137c194b3a98f866afe4477d9f9d33f56bd9abfbb0d4c706f94b93ab4bff1f5d30a6c994e905dd15955
data/bin/riemann-smith CHANGED
@@ -13,7 +13,7 @@ class Smith::Riemann
13
13
  include Smith::Commands::Common
14
14
  include Smith::Logger
15
15
 
16
- RIEMANN_SERVICE_NAME = "smith"
16
+ RIEMANN_SERVICE_NAME = "smith-agent"
17
17
 
18
18
  def initialize
19
19
  log_level :info
@@ -55,15 +55,24 @@ class Smith::Riemann
55
55
  # Checks that the list of agents return from the list command matches
56
56
  # the list of know agents and composes an appropriate alert.
57
57
  def check(response)
58
- agents = parse_response(response)
59
-
60
- options[:agents].map do |agent_name|
61
- if agents.has_key?(agent_name) && agents[agent_name].any? { |a| a[:state] == "running" && running?(a[:pid]) }
62
- alert(agent_name, :running, "Agent running")
63
- else
64
- alert(agent_name, :critical, "Agent not running")
58
+ options[:group].map do |group|
59
+ begin
60
+ group_agents = options[:agents] + agent_group(group)
61
+ running_agents = parse_response(response)
62
+
63
+ group_agents.map do |agent_name|
64
+ if running_agents.has_key?(agent_name) && running_agents[agent_name].any? { |a| a[:state] == "running" && running?(a[:pid]) }
65
+ alert(agent_name, :running, "Agent running")
66
+ else
67
+ alert(agent_name, :critical, "Agent not running")
68
+ end
69
+ end
70
+ rescue RuntimeError => e
71
+ pp e
72
+ alert("group #{group}", :critical, e.message)
73
+ options[:agents]
65
74
  end
66
- end
75
+ end.flatten
67
76
  end
68
77
 
69
78
  # Returns a Nested hash representing the running agents.
@@ -77,7 +86,7 @@ class Smith::Riemann
77
86
 
78
87
  # Construct an alert messages
79
88
  def alert(service, state, description)
80
- {:tags => options[:tags], :service => service(service), :state => state(state), :description => description}.tap { |a| puts "#{a[:service]}: #{state(state)}" }
89
+ {:tags => options[:tags], :ttl => options[:ttl], :service => service(service), :state => state(state), :description => description}.tap { |a| puts "#{a[:service]}: #{state(state)}" }
81
90
  end
82
91
 
83
92
  # Return true if the given pid exists in the process table.
@@ -98,7 +107,7 @@ class Smith::Riemann
98
107
  @options ||= begin
99
108
  OptionParser.accept(Pathname) {|p,| Pathname.new(p) if p}
100
109
 
101
- defaults = {:interval => 30, :timeout => 10, :agents => [], :tags => [], :host => 'localhost', :port => 5555, :agency_timeout => 60}
110
+ defaults = {:interval => 30, :ttl => nil, :timeout => 11, :agents => [], :group => [], :tags => [], :host => 'localhost', :port => 5555, :agency_timeout => 60}
102
111
  defaults.tap do |options|
103
112
  parser = OptionParser.new do |opts|
104
113
  opts.separator "\n"
@@ -107,15 +116,15 @@ class Smith::Riemann
107
116
  opts.banner = "\nUsage: #{opts.program_name} OPTIONS"
108
117
  opts.on_head "\n Periodically lists the running agents and sends the result to riemann."
109
118
 
119
+ opts.on("--ttl <i>", Integer, "TTL for events") { |t| options[:ttl] = t }
110
120
  opts.on("--interval <i>", Integer, "Polling interval in seconds (default #{options[:interval]})") { |t| options[:interval] = t }
111
121
  opts.on("--timeout <i>", Integer, "Agency timeout (default #{options[:timeout]})") { |t| options[:interval] = t }
112
122
  opts.on("--host <s>", String, "Riemann host (default #{options[:host]})") { |v| options[:host] = v }
113
123
  opts.on("--port <i>", Integer, "Riemann port (default #{options[:port]})") { |v| options[:port] = v }
114
124
  opts.on("--tags <tag1,tag1,...>", Array, "Tags to add to the alert") { |t| options[:tags] = t }
125
+
115
126
  opts.on("--agents <agent1,agent2,...>", Array, "Agents to monitor") { |v| options[:agents] + v }
116
- opts.on("--agent-group <group name>>", Array, "The name of an 'agent group' to monitor") do |g|
117
- options[:agents] += g.map { |g| agent_group(g) }.flatten
118
- end
127
+ opts.on("--agent-group <group name>>", Array, "The name of an 'agent group' to monitor") { |g| options[:group] += g }
119
128
 
120
129
  opts.separator "\n"
121
130
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-smith
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Heycock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-12 00:00:00.000000000 Z
11
+ date: 2015-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: smith