riemann-smith 0.4.0 → 0.5.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 (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