sensu-plugins-postgres 4.0.2 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c96168d5cf1c89531c5cf9f704a6332cee262b94f7f0468ccc51fe7d8a549f2
4
- data.tar.gz: 72efe21b417524311cbe898606aaffb8a2e4fac9d07ad11ccab0b9eb8f4671c5
3
+ metadata.gz: 2d435ce57d91a2e6a71c1971cd1602f19b82004f70f82aa498770c110c8bf266
4
+ data.tar.gz: 64ddf283f041bd5b70eac42d7433e8a0dad64226858723e4e8c56a5f983f819f
5
5
  SHA512:
6
- metadata.gz: 4c90282c49b0b8a00afbcef7d8a3aa0442e69c3eaf5d64edcfcccf07d3ea8127c55faa770f05f4bd7fea025ee767ad3afc4d1b85a503645b53519d2d8498153c
7
- data.tar.gz: ee9cccd264eacc1e41ece5e6ba6bafb2e21f18f7c3d65ea853f29611517eab71303ada9e654efea35975f94b140000c6fc4b0b6c2e939ec7c6ee8d510d96ccd9
6
+ metadata.gz: d91e6b7648feab7e75431930bc7a739448276d233df4c2afd8cb9084ebbbb488878ab5a5936422355fcb9a34dcec6699db279afeeee52798b66390d32761bcb8
7
+ data.tar.gz: 824cc884e247f23a9ffdb0aa60e4e3a90bda1fd2e4d10badcbaf8934d6e08fa77d00a53599c8331ea209381696923779d8d7bb9f433c5aeee78ec6418df4150b
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [4.1.0] - 2020-06-04
9
+ ### Added
10
+ - new `metric-postgres-vaccum.rb` metric gathering script for postgres vacuum process (@phumpal)
11
+
8
12
  ## [4.0.2] - 2020-06-02
9
13
  - Fixed `# frozen_string_literal: true` does not play nicely with mixlib-cli.
10
14
 
@@ -213,7 +217,8 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
213
217
  ### Added
214
218
  - initial release
215
219
 
216
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/4.0.2...HEAD
220
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/4.1.0...HEAD
221
+ [4.1.0]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/4.0.2...4.1.0
217
222
  [4.0.2]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/4.0.1...4.0.2
218
223
  [4.0.1]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/4.0.0...4.0.1
219
224
  [4.0.0]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/3.0.0...4.0.0
@@ -0,0 +1,124 @@
1
+ #! /usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # DEPENDENCIES:
5
+ # gem: sensu-plugin
6
+ # gem: pg
7
+ #
8
+ # USAGE:
9
+ # ./metric-postgres-vaccum.rb -u db_user -p db_pass -h db_host -d db
10
+ #
11
+ # NOTES:
12
+ # Requires PSQL `track_counts` `track_io_timing` for some metrics enabled
13
+ #
14
+ # LICENSE:
15
+ # Copyright (c) 2020 Airbrake Technologies, Inc <support@airbrake.io>
16
+ # Author Patrick Humpal <patrick@netvilla.net>
17
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
18
+ # for details.
19
+ #
20
+
21
+ require 'sensu-plugins-postgres/pgpass'
22
+ require 'sensu-plugin/metric/cli'
23
+ require 'pg'
24
+ require 'socket'
25
+
26
+ class PostgresVacuumDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
27
+ option :pgpass,
28
+ description: 'Pgpass file',
29
+ short: '-f FILE',
30
+ long: '--pgpass',
31
+ default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
32
+
33
+ option :user,
34
+ description: 'Postgres User',
35
+ short: '-u USER',
36
+ long: '--user USER'
37
+
38
+ option :password,
39
+ description: 'Postgres Password',
40
+ short: '-p PASS',
41
+ long: '--password PASS'
42
+
43
+ option :hostname,
44
+ description: 'Hostname to login to',
45
+ short: '-h HOST',
46
+ long: '--hostname HOST'
47
+
48
+ option :port,
49
+ description: 'Database port',
50
+ short: '-P PORT',
51
+ long: '--port PORT'
52
+
53
+ option :database,
54
+ description: 'Database to connect on',
55
+ short: '-d DB',
56
+ long: '--db DB',
57
+ default: 'postgres'
58
+
59
+ option :all_databases,
60
+ description: 'Get stats for all available databases',
61
+ short: '-a',
62
+ long: '--all-databases',
63
+ boolean: true,
64
+ default: false
65
+
66
+ option :scheme,
67
+ description: 'Metric naming scheme, text to prepend to $queue_name.$metric',
68
+ long: '--scheme SCHEME',
69
+ default: "#{Socket.gethostname}.postgresql"
70
+
71
+ option :timeout,
72
+ description: 'Connection timeout (seconds)',
73
+ short: '-T TIMEOUT',
74
+ long: '--timeout TIMEOUT',
75
+ default: nil
76
+
77
+ include Pgpass
78
+
79
+ def phase_mapping(vacuum_phase)
80
+ ['initializing',
81
+ 'scanning heap',
82
+ 'vacuuming indexes',
83
+ 'vacuuming heap',
84
+ 'cleaning up indexes',
85
+ 'truncating heap',
86
+ 'performing final cleanup'].find_index(vacuum_phase)
87
+ end
88
+
89
+ def run
90
+ timestamp = Time.now.to_i
91
+ pgpass
92
+ con = PG.connect(host: config[:hostname],
93
+ dbname: config[:database],
94
+ user: config[:user],
95
+ password: config[:password],
96
+ port: config[:port],
97
+ connect_timeout: config[:timeout])
98
+
99
+ query = 'SELECT * FROM pg_stat_progress_vacuum'
100
+ params = []
101
+ unless config[:all_databases]
102
+ query += ' WHERE datname = $1'
103
+ params.push config[:database]
104
+ end
105
+
106
+ con.exec_params(query, params) do |result|
107
+ result.each do |row|
108
+ database = row['datname']
109
+
110
+ row.each do |key, value|
111
+ next if %w[datid datname].include?(key)
112
+
113
+ if key == 'phase'
114
+ output "#{config[:scheme]}.vacuum.#{database}.phase", phase_mapping(value).to_s, timestamp
115
+ else
116
+ output "#{config[:scheme]}.vacuum.#{database}.#{key}", value.to_s, timestamp
117
+ end
118
+ end
119
+ end
120
+ end
121
+
122
+ ok
123
+ end
124
+ end
@@ -3,8 +3,8 @@
3
3
  module SensuPluginsPostgres
4
4
  module Version
5
5
  MAJOR = 4
6
- MINOR = 0
7
- PATCH = 2
6
+ MINOR = 1
7
+ PATCH = 0
8
8
 
9
9
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-postgres
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.2
4
+ version: 4.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: 2020-06-02 00:00:00.000000000 Z
11
+ date: 2020-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -270,6 +270,7 @@ executables:
270
270
  - metric-postgres-locks.rb
271
271
  - metric-postgres-statsbgwriter.rb
272
272
  - check-postgres-replication.rb
273
+ - metric-postgres-vaccum.rb
273
274
  extensions: []
274
275
  extra_rdoc_files: []
275
276
  files:
@@ -288,6 +289,7 @@ files:
288
289
  - bin/metric-postgres-statsdb.rb
289
290
  - bin/metric-postgres-statsio.rb
290
291
  - bin/metric-postgres-statstable.rb
292
+ - bin/metric-postgres-vaccum.rb
291
293
  - bin/metrics-postgres-query.rb
292
294
  - lib/sensu-plugins-postgres.rb
293
295
  - lib/sensu-plugins-postgres/pgpass.rb