sensu-plugins-pdns 0.0.1 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4336ea124eea0e92a7b79307d7a72a637e4b90a3
4
- data.tar.gz: 40b408ca1b9ece4e9f1017506f0ce3c1c5f2f2f8
3
+ metadata.gz: 05e1e1c5734632df327366c589c4e3457d9298c0
4
+ data.tar.gz: d7601f43eef2cb18d27b8ca8a8cf3d28f00ae465
5
5
  SHA512:
6
- metadata.gz: 8ca7508ffacaac0acd09ae03fa2a9bd6bef0d60f8976ed8910c2b08ec4be4053b00dbda5907e803872935c3ec8a1b3c0e2a67bcd84cb62cf163fe52f83d59960
7
- data.tar.gz: 7e49054bfc34161922c2fc22f2e2d61297ebed9e2a7c6fc76f0f98ac345e9e7b3dc20896b0a7f2d681e549646195c572c05797b77fe23c25ae227c9b67d1c57f
6
+ metadata.gz: 6004dd6093fe520179a43887d9192f5c239c6f5bb9f75a9f4496b2478321f9c9e599066021eebf764637125a30535b1077318f493f7e2562dd4d86922f1e1cc0
7
+ data.tar.gz: 7e4062d6a695efc8c37e0e261bf4c51eeaffb306c7522f6f16a2c2a70f7b1719a248a187459fcc84272bd28d071e41751e74266e880b912b45a7976c18724aae
@@ -3,8 +3,13 @@ This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
4
  ## [Unreleased]
5
5
 
6
+ ## [0.1.0] - 2017-08-31
7
+ ### Added
8
+ - Add support to capture more PowerDNS metrics like queries/second (@haashah)
9
+
6
10
  ## 0.0.1 - 2017-08-27
7
11
  ### Added
8
12
  - Initial release
9
13
 
10
14
  [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-pdns/compare/0.0.1...HEAD
15
+ [0.1.0]: https://github.com/sensu-plugins/sensu-plugins-pdns/compare/0.0.1...0.1.0
data/README.md CHANGED
@@ -7,6 +7,10 @@
7
7
  ## Functionality
8
8
  metrics-pdns.rb - Query PowerDNS for statistics. Record stats as metrics and output in Graphite plaintext format
9
9
 
10
+ Arguments:
11
+ * --syslog: specify the path to syslog to fetch the extra pdns stats from. default: /var/log/messages
12
+ * --extra: flag to enable sending of stats collected from syslog. default value is false.
13
+
10
14
  Details:
11
15
  [PowerDNS statistics](https://doc.powerdns.com/recursor/metrics.html)
12
16
 
@@ -19,6 +19,8 @@
19
19
  #
20
20
  # NOTES:
21
21
  # Requires sudo permissions for the sensu user to run rec_control
22
+ # Requires sudo permissions for the sensu user to run tail and pkill commands
23
+ # when using the extra flag for syslog stats.
22
24
  #
23
25
  # LICENSE:
24
26
  # <Hammad Shah> <haashah@gmail.com>
@@ -37,15 +39,52 @@ class PdnsGraphite < Sensu::Plugin::Metric::CLI::Graphite
37
39
  long: '--scheme SCHEME',
38
40
  default: "#{Socket.gethostname}.pdns"
39
41
 
40
- def run
41
- metrics = `sudo rec_control get-all`.split("\n")
42
+ option :syslog_path,
43
+ description: 'Path to the syslog',
44
+ long: '--syslog SYSLOG',
45
+ default: '/var/log/messages'
46
+
47
+ option :extra_stats,
48
+ description: 'flag to send stats collected from syslog like qps',
49
+ boolean: true,
50
+ short: '-e',
51
+ long: '--extra',
52
+ default: false
53
+
54
+ def cmd_run(cmd)
55
+ result = `#{cmd}`.split("\n")
42
56
  if $CHILD_STATUS.exitstatus > 0
43
- critical 'Failed to dump pdns statistics. Check that the pdns process is running!'
57
+ critical "Failed to execute #{cmd}"
58
+ end
59
+ result
60
+ end
61
+
62
+ def parse_syslog
63
+ # send signal to pdns process to dump stats
64
+ cmd_run('sudo pkill -SIGUSR1 pdns_recursor')
65
+ # parse stats from syslog
66
+ metrics = cmd_run("sudo tail #{config[:syslog_path]} -n 6 | grep pdns_recursor")
67
+ return if metrics.nil?
68
+ metrics.each do |metric|
69
+ next unless metric.include?('stats:')
70
+ (_jargon, stats) = metric.split('stats:')
71
+ keyvalues = stats.split(',')
72
+ keyvalues.each do |keyvalue|
73
+ key = keyvalue.strip!.scan(/\D+/)[0].strip
74
+ key.gsub!(/[()]|\s/, '-')
75
+ value = keyvalue.scan(/\d+/)[0]
76
+ output([config[:scheme], key].join('.'), value)
77
+ end
44
78
  end
79
+ end
80
+
81
+ def run
82
+ metrics = cmd_run('sudo rec_control get-all')
45
83
  metrics.each do |metric|
46
84
  (key, value) = metric.split("\t")
47
85
  output([config[:scheme], key].join('.'), value)
48
86
  end
87
+ parse_syslog if config[:extra_stats]
49
88
  ok
50
89
  end
51
90
  end
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsPdns
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 0
5
- PATCH = 1
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-pdns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hammad Shah
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-27 00:00:00.000000000 Z
11
+ date: 2017-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
175
  version: '0'
176
176
  requirements: []
177
177
  rubyforge_project:
178
- rubygems_version: 2.6.6
178
+ rubygems_version: 2.6.11
179
179
  signing_key:
180
180
  specification_version: 4
181
181
  summary: Sensu Plugins for PowerDNS metrics