sensu-plugins-mysql 2.0.0 → 2.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: a9ed9307213b4bc5dd251f86367045379d88101f
4
- data.tar.gz: 084a97a89f06e7caa95d2ca87718150527c6c37d
3
+ metadata.gz: 7b7608ea6a5cded48a747cf06209077fe26e9041
4
+ data.tar.gz: 9f7cdbab6faede729fe2d3784f55a9056a7e2bad
5
5
  SHA512:
6
- metadata.gz: 8d33d92cde4c78d7bbdeff35e48f0a32111147593f4167e03e5955fdca93a71210a6d0176bd557e3497d07aee72cb4de2ad2f77843e94b0e113d0b322dbf5686
7
- data.tar.gz: b4ceea2313dc9794199d80474ba5f3cea6745f2b599b113b874ce9d5b62d22d1927837cb62530b3f9d2c94aa220c9db5a0ea8adf88751253bbe0a4217a975386
6
+ metadata.gz: dbfcc07febf6c3fd280f2ac82765162037d977bf153e68dce1711f3607157cd6ef5ee2dbca82b39a1e6ddc5d76d9bfbde7f7c1f47f0f8b0d596863426f89c4e1
7
+ data.tar.gz: 8e794b4cce853c315b3add749195e8fc6318f6403eae8a5bdc02420cfeac31ea2083d1ad52a12790dfcd7e21fcbe86a3085c4075a89310efac503eeb80e7f756
data/CHANGELOG.md CHANGED
@@ -4,6 +4,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
6
  ## [Unreleased]
7
+ ## [2.1.0] - 2017-06-10
8
+ ### Added
9
+ - metrics-mysql-query-result-count.rb: Creates a graphite-formatted metric for the length of a result set from a MySQL query. (@athal7)
7
10
 
8
11
  ## [2.0.0] - 2017-06-05
9
12
  ### Breaking Change
@@ -68,7 +71,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
68
71
  ### Added
69
72
  - initial release
70
73
 
71
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.0.0...HEAD
74
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.1.0...HEAD
75
+ [2.1.0]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.0.0...2.1.0
72
76
  [2.0.0]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/1.2.1...2.0.0
73
77
  [1.2.1]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/1.2.0...1.2.1
74
78
  [1.2.0]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/1.1.0...1.2.0
data/README.md CHANGED
@@ -21,6 +21,7 @@
21
21
  * bin/metrics-mysql-processes.rb
22
22
  * bin/metrics-mysql-raw.rb
23
23
  * bin/metrics-mysql.rb
24
+ * bin/metrics-mysql-query-result-count.rb
24
25
  * bin/mysql-metrics.sql
25
26
 
26
27
  ## Usage
@@ -51,6 +52,11 @@
51
52
  /opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby check-mysql-query-result-count.rb --host=localhost --port=3306 --user=collectd --pass=tflypass --socket=/data/mysql.sock --warning 1 --critical 10 --query 'SELECT DISTINCT(t.id) FROM table t where t.failed = true'
52
53
  ```
53
54
 
55
+ **metrics-mysql-query-result-count** example
56
+ ```bash
57
+ /opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby metrics-mysql-query-result-count.rb --host=localhost --port=3306 --user=collectd --pass=tflypass --socket=/data/mysql.sock --query 'SELECT DISTINCT(t.id) FROM table t where t.failed = true'
58
+ ```
59
+
54
60
  ## Installation
55
61
 
56
62
  [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # MySQL Query Result Count Metric
4
+ #
5
+ # Creates a graphite-formatted metric for the length of a result set from a MySQL query.
6
+ #
7
+ # Copyright 2017 Andrew Thal <athal7@me.com>
8
+ #
9
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
10
+ # for details.
11
+
12
+ require 'sensu-plugin/metric/cli'
13
+ require 'mysql'
14
+ require 'inifile'
15
+
16
+ class MysqlQueryCountMetric < Sensu::Plugin::Metric::CLI::Graphite
17
+ option :host,
18
+ short: '-h HOST',
19
+ long: '--host HOST',
20
+ description: 'MySQL Host to connect to',
21
+ required: true
22
+
23
+ option :port,
24
+ short: '-P PORT',
25
+ long: '--port PORT',
26
+ description: 'MySQL Port to connect to',
27
+ proc: proc(&:to_i),
28
+ default: 3306
29
+
30
+ option :username,
31
+ short: '-u USERNAME',
32
+ long: '--user USERNAME',
33
+ description: 'MySQL Username'
34
+
35
+ option :password,
36
+ short: '-p PASSWORD',
37
+ long: '--pass PASSWORD',
38
+ description: 'MySQL password',
39
+ default: ''
40
+
41
+ option :database,
42
+ short: '-d DATABASE',
43
+ long: '--database DATABASE',
44
+ description: 'MySQL database',
45
+ default: ''
46
+
47
+ option :ini,
48
+ short: '-i',
49
+ long: '--ini VALUE',
50
+ description: 'My.cnf ini file'
51
+
52
+ option :socket,
53
+ short: '-S SOCKET',
54
+ long: '--socket SOCKET',
55
+ description: 'MySQL Unix socket to connect to'
56
+
57
+ option :name,
58
+ short: '-n NAME',
59
+ long: '--name NAME',
60
+ description: 'Metric name for a configured handler',
61
+ default: 'mysql.query_count'
62
+
63
+ option :query,
64
+ short: '-q QUERY',
65
+ long: '--query QUERY',
66
+ description: 'Query to execute',
67
+ required: true
68
+
69
+ def run
70
+ if config[:ini]
71
+ ini = IniFile.load(config[:ini])
72
+ section = ini['client']
73
+ db_user = section['user']
74
+ db_pass = section['password']
75
+ else
76
+ db_user = config[:username]
77
+ db_pass = config[:password]
78
+ end
79
+ db = Mysql.real_connect(config[:host], db_user, db_pass, config[:database], config[:port].to_i, config[:socket])
80
+ length = db.query(config[:query]).count
81
+
82
+ output config[:name], length
83
+ ok
84
+
85
+ rescue Mysql::Error => e
86
+ errstr = "Error code: #{e.errno} Error message: #{e.error}"
87
+ critical "#{errstr} SQLSTATE: #{e.sqlstate}" if e.respond_to?('sqlstate')
88
+
89
+ rescue => e
90
+ critical e
91
+
92
+ ensure
93
+ db.close if db
94
+ end
95
+ end
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsMySql
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 0
4
+ MINOR = 1
5
5
  PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-mysql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-06 00:00:00.000000000 Z
11
+ date: 2017-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inifile
@@ -196,6 +196,7 @@ executables:
196
196
  - check-mysql-threads.rb
197
197
  - metrics-mysql-graphite.rb
198
198
  - metrics-mysql-processes.rb
199
+ - metrics-mysql-query-result-count.rb
199
200
  - metrics-mysql-raw.rb
200
201
  - metrics-mysql.rb
201
202
  extensions: []
@@ -214,6 +215,7 @@ files:
214
215
  - bin/check-mysql-threads.rb
215
216
  - bin/metrics-mysql-graphite.rb
216
217
  - bin/metrics-mysql-processes.rb
218
+ - bin/metrics-mysql-query-result-count.rb
217
219
  - bin/metrics-mysql-raw.rb
218
220
  - bin/metrics-mysql.rb
219
221
  - bin/mysql-metrics.sql