sensu-plugins-mysql 2.6.0 → 2.7.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 +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +7 -0
- data/bin/metrics-mysql-select-count.rb +102 -0
- data/lib/sensu-plugins-mysql/version.rb +1 -1
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28da8b8dda887c5405c1328498b1a2756fe5115cb0eaac7919e95c9582ce2678
|
4
|
+
data.tar.gz: 97b4ebe627681a7d71ab58ed9e7ac9cb9e6a82eb9d86811f4ec4a3c83c6ae5e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e040bfbb772dc2c2568e9556e48324cfcca839dbf8f1da17f4ce10c76cb55f7769f575ca2d5c679eb49171b4d3af89abdadd5783d1c1049112588d921f149537
|
7
|
+
data.tar.gz: a5fce726a73bd536ea44c1829372e5a3c8859b79818b6bba4ab57806d521dd22a1aa5dc805f714bf60558a2a476e7c870edf14d8a8802229a4549cb297786ca9
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [2.7.0] - 2018-11-25
|
9
|
+
### Added
|
10
|
+
- metrics-mysql-select-count.rb script (@nagyt234)
|
11
|
+
|
8
12
|
## [2.6.0] - 2018-11-17
|
9
13
|
### Added
|
10
14
|
- check-mysql-select-count.rb: fleshed out config hash to read from ini file if specified (@fuzzy-logic-zach)
|
@@ -137,7 +141,8 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
|
|
137
141
|
### Added
|
138
142
|
- initial release
|
139
143
|
|
140
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.
|
144
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.7.0...HEAD
|
145
|
+
[2.7.0]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.6.0...2.7.0
|
141
146
|
[2.6.0]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.5.1...2.6.0
|
142
147
|
[2.5.1]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.5.0...2.5.1
|
143
148
|
[2.5.0]: https://github.com/sensu-plugins/sensu-plugins-mysql/compare/2.4.0...2.5.0
|
data/README.md
CHANGED
@@ -24,6 +24,7 @@
|
|
24
24
|
* bin/metrics-mysql-raw.rb
|
25
25
|
* bin/metrics-mysql.rb
|
26
26
|
* bin/metrics-mysql-query-result-count.rb
|
27
|
+
* bin/metrics-mysql-select-count.rb
|
27
28
|
* bin/mysql-metrics.sql
|
28
29
|
|
29
30
|
## Usage
|
@@ -98,6 +99,11 @@ $ /opt/sensu/embedded/bin/check-mysql-replication-status.rb --host=<SLAVE> --ini
|
|
98
99
|
/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'
|
99
100
|
```
|
100
101
|
|
102
|
+
**metrics-mysql-select-count** example
|
103
|
+
```bash
|
104
|
+
/opt/sensu/embedded/bin$ /opt/sensu/embedded/bin/ruby metrics-mysql-select-count.rb --host=localhost --port=3306 --user=collectd --pass=tflypass --socket=/data/mysql.sock --query 'SELECT COUNT(*) FROM table t'
|
105
|
+
```
|
106
|
+
|
101
107
|
### Security
|
102
108
|
|
103
109
|
In keeping with the principle of least privilege you should create a new user with the minimum required permissions. See the table below for minimum permissions for each check.
|
@@ -117,6 +123,7 @@ In keeping with the principle of least privilege you should create a new user wi
|
|
117
123
|
| metrics-mysql-graphite.rb | `SELECT` |
|
118
124
|
| metrics-mysql-processes.rb | `SELECT` |
|
119
125
|
| metrics-mysql-query-result-count.rb | depends on query |
|
126
|
+
| metrics-mysql-select-count.rb | depends on query |
|
120
127
|
| metrics-mysql-raw.rb | `SELECT` |
|
121
128
|
| metrics-mysql.rb | `INSERT` into `sensumetrics.sensu_historic_metrics` |
|
122
129
|
|
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# MySQL Select Count Metric
|
4
|
+
#
|
5
|
+
# Creates a graphite-formatted metric for the first value of a result set from a MySQL query.
|
6
|
+
#
|
7
|
+
# Copyright 2017 Andrew Thal <athal7@me.com>
|
8
|
+
# Copyright 2018 Tibor Nagy <nagyt@hu.inter.net>
|
9
|
+
#
|
10
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
11
|
+
# for details.
|
12
|
+
|
13
|
+
require 'sensu-plugin/metric/cli'
|
14
|
+
require 'mysql'
|
15
|
+
require 'inifile'
|
16
|
+
|
17
|
+
class MysqlQueryCountMetric < Sensu::Plugin::Metric::CLI::Graphite
|
18
|
+
option :host,
|
19
|
+
short: '-h HOST',
|
20
|
+
long: '--host HOST',
|
21
|
+
description: 'MySQL Host to connect to',
|
22
|
+
required: true
|
23
|
+
|
24
|
+
option :port,
|
25
|
+
short: '-P PORT',
|
26
|
+
long: '--port PORT',
|
27
|
+
description: 'MySQL Port to connect to',
|
28
|
+
proc: proc(&:to_i),
|
29
|
+
default: 3306
|
30
|
+
|
31
|
+
option :username,
|
32
|
+
short: '-u USERNAME',
|
33
|
+
long: '--user USERNAME',
|
34
|
+
description: 'MySQL Username'
|
35
|
+
|
36
|
+
option :password,
|
37
|
+
short: '-p PASSWORD',
|
38
|
+
long: '--pass PASSWORD',
|
39
|
+
description: 'MySQL password'
|
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 :ini_section,
|
53
|
+
description: 'Section in my.cnf ini file',
|
54
|
+
long: '--ini-section VALUE',
|
55
|
+
default: 'client'
|
56
|
+
|
57
|
+
option :socket,
|
58
|
+
short: '-S SOCKET',
|
59
|
+
long: '--socket SOCKET',
|
60
|
+
description: 'MySQL Unix socket to connect to'
|
61
|
+
|
62
|
+
option :name,
|
63
|
+
short: '-n NAME',
|
64
|
+
long: '--name NAME',
|
65
|
+
description: 'Metric name for a configured handler',
|
66
|
+
default: 'mysql.query_count'
|
67
|
+
|
68
|
+
option :query,
|
69
|
+
short: '-q SELECT_COUNT_QUERY',
|
70
|
+
long: '--query SELECT_COUNT_QUERY',
|
71
|
+
description: 'Query to execute',
|
72
|
+
required: true
|
73
|
+
|
74
|
+
def run
|
75
|
+
if config[:ini]
|
76
|
+
ini = IniFile.load(config[:ini])
|
77
|
+
section = ini[config[:ini_section]]
|
78
|
+
db_user = section['user']
|
79
|
+
db_pass = section['password']
|
80
|
+
else
|
81
|
+
db_user = config[:username]
|
82
|
+
db_pass = config[:password]
|
83
|
+
end
|
84
|
+
raise "invalid query : #{config[:query]}" unless config[:query] =~ /^select\s+count\(\s*\*\s*\)/i
|
85
|
+
|
86
|
+
db = Mysql.real_connect(config[:host], db_user, db_pass, config[:database], config[:port], config[:socket])
|
87
|
+
count = db.query(config[:query]).fetch_row[0].to_i
|
88
|
+
|
89
|
+
output config[:name], count
|
90
|
+
ok
|
91
|
+
|
92
|
+
rescue Mysql::Error => e
|
93
|
+
errstr = "Error code: #{e.errno} Error message: #{e.error}"
|
94
|
+
critical "#{errstr} SQLSTATE: #{e.sqlstate}" if e.respond_to?('sqlstate')
|
95
|
+
|
96
|
+
rescue StandardError => e
|
97
|
+
critical "unhandled exception: #{e}"
|
98
|
+
|
99
|
+
ensure
|
100
|
+
db.close if db
|
101
|
+
end
|
102
|
+
end
|
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.
|
4
|
+
version: 2.7.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: 2018-11-
|
11
|
+
date: 2018-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inifile
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
61
|
+
version: '1.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
68
|
+
version: '1.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '3.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '3.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: pry
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '12.3'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '12.3'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: redcarpet
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,6 +200,7 @@ executables:
|
|
200
200
|
- check-mysql-query-result-count.rb
|
201
201
|
- check-mysql-threads.rb
|
202
202
|
- check-mysql-alive.rb
|
203
|
+
- metrics-mysql-select-count.rb
|
203
204
|
- metrics-mysql-graphite.rb
|
204
205
|
extensions: []
|
205
206
|
extra_rdoc_files: []
|
@@ -221,6 +222,7 @@ files:
|
|
221
222
|
- bin/metrics-mysql-processes.rb
|
222
223
|
- bin/metrics-mysql-query-result-count.rb
|
223
224
|
- bin/metrics-mysql-raw.rb
|
225
|
+
- bin/metrics-mysql-select-count.rb
|
224
226
|
- bin/metrics-mysql.rb
|
225
227
|
- bin/mysql-metrics.sql
|
226
228
|
- lib/sensu-plugins-mysql.rb
|