dribbled 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -7,6 +7,8 @@
7
7
  # SYNOPSIS
8
8
 
9
9
  dribbled [options] <action> [options]
10
+
11
+ Actions are one of `show`, `check`, `snap`.
10
12
 
11
13
  Options are as follows:
12
14
 
@@ -20,18 +22,28 @@ Options are as follows:
20
22
  -V, --version Display dribbled version
21
23
  --help Show this messageSenedsa options
22
24
 
23
- With no options or arguments, `dribbled` displays help (as shown above).
25
+ With no options or arguments, `dribbled` displays help as shown above (unless called as `check_drbd`; see _Personalities_).
24
26
 
25
27
  # PERSONALITIES
26
28
 
27
- *Dribbled* has two personalities: when run as `dribbled`, it behaves according to the action and parameters used; when run as `check_drbd`, it assumes the `check` action, which enables Nagios plugin behavior.
29
+ *Dribbled* has two personalities: when run as `dribbled`, it behaves according to the action and parameters used; when run as `check_drbd`, it assumes the `check` action, which enables Nagios plugin behavior. (i.e., `dribbled check` is equivalent to `check_drbd`).
30
+
31
+ # ACTIONS
32
+
33
+ ## Show
34
+
35
+ The `show` action displays information about DRBD devices in the system. This action currently accepts no options.
28
36
 
29
37
  gerir@boxie:~:dribbled show
30
- 0 r0 Connected UpToDate/UpToDate Secondary/Primary sourcehost /dev/drbd0 desthost /dev/drbd0
38
+ 0 r0 Connected UpToDate/UpToDate Secondary/Primary sourcehost /dev/drbd0 desthost /dev/drbd0
31
39
  1 r1 Connected UpToDate/UpToDate Secondary/Primary sourcehost /dev/drbd1 desthost /dev/drbd1
32
40
  5 r5 Connected UpToDate/UpToDate Secondary/Primary sourcehost /dev/drbd5 desthost /dev/drbd5
33
41
  6 r6 SyncTarget [ 4%] Inconsistent/UpToDate Secondary/Primary sourcehost /dev/drbd6 desthost /dev/drbd6
34
42
 
43
+ ## Check
44
+
45
+ The `check` action enables Nagios plugin mode, in which a single line of output is produced on `STDOUT` with the status of the devices.
46
+
35
47
  gerir@boxie:~:dribbled check
36
48
  warning: 6:cs:SyncTarget[4.6%%];ds:Inconsistent/UpToDate
37
49
 
@@ -40,3 +52,33 @@ With no options or arguments, `dribbled` displays help (as shown above).
40
52
 
41
53
  Currently, there is no way to configure what constitutes alert conditions, but generally, a **critical** alert will be generated when a resource is found in non-`Connected` and non-`UpToDate` state, except when said resource is in `SyncSource`, `SyncTarget`, `VerifyS`, `VerifyT`, `PausedSyncS`, `PausedSyncT`, or `StandAlone` connection state, which causes a **warning**. Also, resources that are `Connected` and `UpToDate` but missing from the configuration will generate a **warning**.
42
54
 
55
+ Both active and passive modes are supported, with the corresponding options:
56
+
57
+ Check Options
58
+ -M, --monitor [nagios] Monitoring system
59
+ -m, --mode [active|passive] Monitoring mode
60
+ -H, --nsca_hostname HOSTNAME NSCA hostname to send passive checks
61
+ -c, --config CONFIG Path to Senedsa (send_nsca) configuration
62
+ -S, --svc_descr SVC_DESR Nagios service description
63
+ -h, --hostname HOSTNAME Service hostname
64
+
65
+ As `dribbled` uses [Senedsa](https://github.com/evernote/ops-senedsa "Senedsa"), configurations files are supported.
66
+
67
+ ## Snap
68
+
69
+ The `snap` action is useful to capture raw data DRBD from a system for test and development. It produces two files, `xmldump.`_suffix_ and `proddrbd.`_suffix_:
70
+
71
+ Snap Options
72
+ -S, --suffix SUFFIX Suffix (defaults to PID)
73
+ -D, --directory DIRECTORY Directory (defaults to /tmp)
74
+
75
+ These files can then be used with the general `--procdrbd PROCDRBD` and `--xmldump XMLDUMP` options:
76
+
77
+ gerir@boxie:~/dribbled -P data/procdrbd.wfconnection -X data/xmldump.wfconnection -H sourcehost show
78
+ 0 r0 Connected UpToDate/UpToDate Primary/Secondary sourcehost /dev/drbd0 desthost /dev/drbd0
79
+ 1 r1 Connected UpToDate/UpToDate Primary/Secondary sourcehost /dev/drbd1 desthost /dev/drbd1
80
+ 12 r12 Connected UpToDate/UpToDate Primary/Secondary sourcehost /dev/drbd12 desthost /dev/drbd12
81
+ 13 r13 WFConnection UpToDate/DUnknown Primary/Unknown
82
+
83
+ We use the general `-H` option to let `dribbled` know which host the commands were captured on (so that it can properly identify source and destination).
84
+
@@ -194,9 +194,9 @@ module Dribbled
194
194
  unless po_cstate.gsub('cs:','').empty? and po_dstate.gsub('ds:','').empty?
195
195
  if ['SyncSource','SyncTarget','VerifyS','VerifyT','PausedSyncS','PausedSyncT','StandAlone'].include? res.cstate
196
196
  plugin_status = :warning
197
- plugin_output += res.percent.nil? ? " #{res.id}:#{po_cstate};#{po_dstate}" : " #{res.id}:#{po_cstate}[#{res.percent}%%];#{po_dstate}"
197
+ plugin_output += res.percent.nil? ? " #{res.id}:#{po_cstate};#{po_dstate}" : " #{res.id}:#{po_cstate}[#{res.percent}%,#{res.finish}];#{po_dstate}"
198
198
  elsif not res.in_configuration?
199
- plugin_status = :warning
199
+ plugin_status = :ok
200
200
  plugin_output += " #{res.id}[unconfigured]>#{po_cstate}/;#{po_dstate}"
201
201
  else
202
202
  plugin_output += " #{res.id}>#{po_cstate};#{po_dstate}"
@@ -212,12 +212,12 @@ module Dribbled
212
212
  when :nagios
213
213
  case @action_options[:mode]
214
214
  when :active
215
- puts "#{plugin_status}:#{plugin_output}"
215
+ puts "#{plugin_status.to_s.upcase}:#{plugin_output}"
216
216
  exit SendNsca::STATUS[plugin_status]
217
217
  when :passive
218
218
  sn = SendNsca.new @action_options
219
219
  begin
220
- sn.send plugin_status , plugin_output
220
+ sn.send plugin_status, plugin_output
221
221
  rescue SendNsca::SendNscaError => e
222
222
  output_message "send_nsca failed: #{e.message}", 1
223
223
  end
@@ -11,7 +11,8 @@ module Dribbled
11
11
  PROCDRBD_VERSION_RE = /^version:\s+(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)\s+\(api:(?<api>\d+)\/proto:(?<proto>[0-9-]+)/
12
12
  PROCDRBD_RESOURCE_RE = /^\s*(?<id>\d+):\s+cs:(?<cstate>[\w\/]+)\s+(st|ro):(?<state>[\w\/]+)\s+ds:(?<dstate>[\w\/]+)\s+/
13
13
  PROCDRBD_URESOURCE_RE = /^\s*(?<id>\d+):\s+cs:(?<cstate>[\w\/]+)/
14
- PROCDRBD_ACTIVITY_RE = /^\s+\[[.>=]+\]\s+(?<activity>[a-z']+):\s+(?<percent>[0-9.]+)%/
14
+ PROCDRBD_ACTIVITY_RE = /^\s+\[[.>=]+\]\s+(?<activity>[a-z']+):\s+(?<percent>[0-9.]+)%\s+\(\d+\/\d+\)M(finish:\s+(?<finish>[0-9:]+)\s+)*/
15
+ PROCDRBD_ACTIVITY_STATUS_RE = /^\s+finish:\s+(?<finish>[0-9:]+)\s+/
15
16
 
16
17
  def initialize(options)
17
18
  @log = options[:log].nil? ? nil : options[:log]
@@ -63,6 +64,10 @@ module Dribbled
63
64
  m = PROCDRBD_ACTIVITY_RE.match(line)
64
65
  resources_run[r].activity = m[:activity].gsub(/'/,"").to_sym
65
66
  resources_run[r].percent = m[:percent].to_f
67
+ resources_run[r].finish = m[:finish]
68
+ elsif PROCDRBD_ACTIVITY_STATUS_RE.match(line)
69
+ m = PROCDRBD_ACTIVITY_STATUS_RE.match(line)
70
+ resources_run[r].finish = m[:finish]
66
71
  elsif PROCDRBD_VERSION_RE.match(line)
67
72
  @version_major = $1
68
73
  @version_minor = $2
@@ -133,7 +138,7 @@ module Dribbled
133
138
  class DrbdResource
134
139
 
135
140
  attr_reader :id
136
- attr_accessor :name, :cstate, :dstate, :state, :config, :primary, :secondary, :activity, :percent, :in_kernel, :in_configuration
141
+ attr_accessor :name, :cstate, :dstate, :state, :config, :primary, :secondary, :activity, :percent, :finish, :in_kernel, :in_configuration
137
142
 
138
143
  def initialize(res,hostname)
139
144
  @id = res
@@ -144,6 +149,7 @@ module Dribbled
144
149
  @state = nil
145
150
  @activity = nil
146
151
  @percent = nil
152
+ @finish = nil
147
153
  @primary = { :hostname => nil, :disk => nil, :device => nil }
148
154
  @secondary = { :hostname => nil, :disk => nil, :device => nil }
149
155
  @in_kernel = false
@@ -170,9 +176,9 @@ module Dribbled
170
176
  h2 = ph; dev2 = @primary[:device]
171
177
  end
172
178
 
173
- percent = @activity.nil? ? nil : "[%3d%%]" % @percent
179
+ percent_finish = @activity.nil? ? nil : "[%3d%% %8s]" % [@percent,@finish]
174
180
 
175
- "%2d %6s %-13s %6s %-22s %-20s %10s %-11s %10s %-11s" % [@id,@name,@cstate,percent,@dstate,@state,h1,dev1,h2,dev2]
181
+ "%2d %6s %-13s %15s %-22s %-20s %10s %-11s %10s %-11s" % [@id,@name,@cstate,percent_finish,@dstate,@state,h1,dev1,h2,dev2]
176
182
  end
177
183
 
178
184
  def inspect
@@ -1,3 +1,3 @@
1
1
  module Dribbled
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dribbled
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-13 00:00:00.000000000 Z
12
+ date: 2012-09-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xml-simple