sensu-plugins-postgres 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +78 -1
- data/bin/check-postgres-alive.rb +12 -4
- data/bin/check-postgres-connections.rb +13 -6
- data/bin/check-postgres-query.rb +13 -6
- data/bin/check-postgres-replication.rb +11 -2
- data/bin/metric-postgres-connections.rb +13 -7
- data/bin/metric-postgres-dbsize.rb +13 -7
- data/bin/metric-postgres-graphite.rb +12 -4
- data/bin/metric-postgres-locks.rb +13 -7
- data/bin/metric-postgres-statsbgwriter.rb +12 -5
- data/bin/metric-postgres-statsdb.rb +13 -7
- data/bin/metric-postgres-statsio.rb +13 -7
- data/bin/metric-postgres-statstable.rb +13 -7
- data/bin/metrics-postgres-query.rb +13 -6
- data/lib/sensu-plugins-postgres.rb +1 -0
- data/lib/sensu-plugins-postgres/pgpass.rb +17 -0
- data/lib/sensu-plugins-postgres/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 700df0f38e6925029e0dc4b00a262e7d8aca68f6
|
4
|
+
data.tar.gz: d88ebc9c96c571ee5ead092b938c52d0bd8da872
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bfda3d996fb16c6a3fd6dbe9ac4e4e2c162dd409e36f1a9e924c0ef51323f300a18577405e48ca414397c8c56388ccf6516b409a5c413dfea089f171e1245e6
|
7
|
+
data.tar.gz: 8038becb84e1b1311bf6fad897cc78e841db73dfb2b24ba9a2e766251f5b367785867791c0502ff3425bd4d84d4f3ddca8956940a9cd63ce480e9e63b9bac6ac
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [1.4.0] - 2017-08-04
|
9
|
+
### Added
|
10
|
+
- all checks now support using the pgpass file and is backwards compatible with the previous versions (@ahes)
|
11
|
+
|
8
12
|
## [1.3.0] - 2017-07-25
|
9
13
|
### Fixed
|
10
14
|
- Take into account reserved superuser connections in check-postgres-connections.rb (@Evesy)
|
@@ -106,7 +110,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
106
110
|
### Added
|
107
111
|
- initial release
|
108
112
|
|
109
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/1.
|
113
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/1.4.0...HEAD
|
114
|
+
[1.4.0]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/1.3.0...1.4.0
|
110
115
|
[1.3.0]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/1.2.0...1.3.0
|
111
116
|
[1.2.0]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/1.1.2...1.2.0
|
112
117
|
[1.1.2]: https://github.com/sensu-plugins/sensu-plugins-postgres/compare/1.1.1...1.1.2
|
data/README.md
CHANGED
@@ -25,8 +25,85 @@
|
|
25
25
|
|
26
26
|
## Usage
|
27
27
|
|
28
|
+
Use `--help` to see command arguments.
|
29
|
+
|
30
|
+
### Sample usage
|
31
|
+
|
32
|
+
#### Check if PostgreSQL is alive
|
33
|
+
```
|
34
|
+
$ check-postgres-alive.rb -d template1 -f /var/lib/postgresql/.pgpass
|
35
|
+
CheckPostgres OK: Server version: {"version"=>"PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit"}
|
36
|
+
```
|
37
|
+
|
38
|
+
### Check replication status
|
39
|
+
```
|
40
|
+
$ check-postgres-replication.rb -m psql1.local -s psql2.local -d template1 -w 5 -c 10
|
41
|
+
CheckPostgresReplicationStatus OK: replication delayed by 0.0MB :: master:B0/B4031000 slave:B0/B4031000 m_segbytes:16777216
|
42
|
+
```
|
43
|
+
|
44
|
+
### Check number of connections
|
45
|
+
```
|
46
|
+
$ export PGPASSWORD=this-is-secret-password
|
47
|
+
$ check-postgres-connections.rb -a -w 80 -c 90 -d template1 -u sensu
|
48
|
+
CheckPostgresConnections OK: PostgreSQL connections under threshold: 17%, 174 out of 997 connections
|
49
|
+
```
|
50
|
+
|
51
|
+
### Default values
|
52
|
+
|
53
|
+
| Argument | Env variable | Value |
|
54
|
+
|----------------|--------------|-----------|
|
55
|
+
| -f, --pgpass | PGPASSFILE | ~/.pgpass |
|
56
|
+
| -h, --hostname | PGHOST | localhost |
|
57
|
+
| -P, --port | PGPORT | 5432 |
|
58
|
+
| -d, --database | PGDATABASE | postgres |
|
59
|
+
| -u, --user | PGUSER | postgres |
|
60
|
+
| -p, --password | PGPASSWORD | |
|
61
|
+
|
62
|
+
Options precedence is following:
|
63
|
+
1. command line arguments
|
64
|
+
1. pgpass file
|
65
|
+
1. env variables
|
66
|
+
1. defaults
|
67
|
+
|
68
|
+
### Pgpass file
|
69
|
+
|
70
|
+
When file `~/.pgpass` is found it is used by default. You can also use `-f, --pgpass` command line argument or set `PGPASSFILE` env variable.
|
71
|
+
|
72
|
+
File format is:
|
73
|
+
|
74
|
+
```
|
75
|
+
hostname:port:database:username:password
|
76
|
+
```
|
77
|
+
|
78
|
+
Only first line is used. If database is set to `*` it is ommited.
|
79
|
+
|
80
|
+
You can ovveride `pgpass` values with command line arguments, e.g. `-h` for hostname.
|
81
|
+
|
28
82
|
## Installation
|
29
83
|
|
30
|
-
|
84
|
+
```
|
85
|
+
gem install sensu-plugins-postgres
|
86
|
+
```
|
87
|
+
|
88
|
+
See [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html) for details.
|
89
|
+
|
90
|
+
### Known issues
|
91
|
+
|
92
|
+
When using Sensu with `EMBEDDED_RUBY=true` and installing Postgres checks with `/usr/bin/sensu-install -p sensu-plugins-postgres` you might get following error:
|
93
|
+
|
94
|
+
```
|
95
|
+
ERROR: Error installing sensu-plugins-postgres:
|
96
|
+
ERROR: Failed to build gem native extension.
|
97
|
+
[...]
|
98
|
+
checking for PQconnectdb() in -lpq... no
|
99
|
+
checking for PQconnectdb() in -llibpq... no
|
100
|
+
checking for PQconnectdb() in -lms/libpq... no
|
101
|
+
Can't find the PostgreSQL client library (libpq)
|
102
|
+
*** extconf.rb failed ***
|
103
|
+
```
|
104
|
+
|
105
|
+
The reason is that **libssl** library which comes with Sensu is incompatible with **libpq** library installed on your system. There is no easy way to fix it. You might want to install sensu-plugins-postgres globally with `gem install sensu-plugins-postgres`.
|
106
|
+
|
107
|
+
Checks are in `/usr/local/bin` directory.
|
31
108
|
|
32
109
|
## Notes
|
data/bin/check-postgres-alive.rb
CHANGED
@@ -27,10 +27,17 @@
|
|
27
27
|
# for details.
|
28
28
|
#
|
29
29
|
|
30
|
+
require 'sensu-plugins-postgres/pgpass'
|
30
31
|
require 'sensu-plugin/check/cli'
|
31
32
|
require 'pg'
|
32
33
|
|
33
34
|
class CheckPostgres < Sensu::Plugin::Check::CLI
|
35
|
+
option :pgpass,
|
36
|
+
description: 'Pgpass file',
|
37
|
+
short: '-f FILE',
|
38
|
+
long: '--pgpass',
|
39
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
40
|
+
|
34
41
|
option :user,
|
35
42
|
description: 'Postgres User',
|
36
43
|
short: '-u USER',
|
@@ -49,14 +56,12 @@ class CheckPostgres < Sensu::Plugin::Check::CLI
|
|
49
56
|
option :database,
|
50
57
|
description: 'Database schema to connect to',
|
51
58
|
short: '-d DATABASE',
|
52
|
-
long: '--database DATABASE'
|
53
|
-
default: 'test'
|
59
|
+
long: '--database DATABASE'
|
54
60
|
|
55
61
|
option :port,
|
56
62
|
description: 'Database port',
|
57
63
|
short: '-P PORT',
|
58
|
-
long: '--port PORT'
|
59
|
-
default: 5432
|
64
|
+
long: '--port PORT'
|
60
65
|
|
61
66
|
option :timeout,
|
62
67
|
description: 'Connection timeout (seconds)',
|
@@ -64,7 +69,10 @@ class CheckPostgres < Sensu::Plugin::Check::CLI
|
|
64
69
|
long: '--timeout TIMEOUT',
|
65
70
|
default: nil
|
66
71
|
|
72
|
+
include Pgpass
|
73
|
+
|
67
74
|
def run
|
75
|
+
pgpass
|
68
76
|
con = PG.connect(host: config[:hostname],
|
69
77
|
dbname: config[:database],
|
70
78
|
user: config[:user],
|
@@ -32,10 +32,17 @@
|
|
32
32
|
# for details.
|
33
33
|
#
|
34
34
|
|
35
|
+
require 'sensu-plugins-postgres/pgpass'
|
35
36
|
require 'sensu-plugin/check/cli'
|
36
37
|
require 'pg'
|
37
38
|
|
38
39
|
class CheckPostgresConnections < Sensu::Plugin::Check::CLI
|
40
|
+
option :pgpass,
|
41
|
+
description: 'Pgpass file',
|
42
|
+
short: '-f FILE',
|
43
|
+
long: '--pgpass',
|
44
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
45
|
+
|
39
46
|
option :user,
|
40
47
|
description: 'Postgres User',
|
41
48
|
short: '-u USER',
|
@@ -49,20 +56,17 @@ class CheckPostgresConnections < Sensu::Plugin::Check::CLI
|
|
49
56
|
option :hostname,
|
50
57
|
description: 'Hostname to login to',
|
51
58
|
short: '-h HOST',
|
52
|
-
long: '--hostname HOST'
|
53
|
-
default: 'localhost'
|
59
|
+
long: '--hostname HOST'
|
54
60
|
|
55
61
|
option :port,
|
56
62
|
description: 'Database port',
|
57
63
|
short: '-P PORT',
|
58
|
-
long: '--port PORT'
|
59
|
-
default: 5432
|
64
|
+
long: '--port PORT'
|
60
65
|
|
61
66
|
option :database,
|
62
67
|
description: 'Database name',
|
63
68
|
short: '-d DB',
|
64
|
-
long: '--db DB'
|
65
|
-
default: 'postgres'
|
69
|
+
long: '--db DB'
|
66
70
|
|
67
71
|
option :warning,
|
68
72
|
description: 'Warning threshold number or % of connections. (default: 200 connections)',
|
@@ -91,8 +95,11 @@ class CheckPostgresConnections < Sensu::Plugin::Check::CLI
|
|
91
95
|
long: '--timeout TIMEOUT',
|
92
96
|
default: nil
|
93
97
|
|
98
|
+
include Pgpass
|
99
|
+
|
94
100
|
def run
|
95
101
|
begin
|
102
|
+
pgpass
|
96
103
|
con = PG.connect(host: config[:hostname],
|
97
104
|
dbname: config[:database],
|
98
105
|
user: config[:user],
|
data/bin/check-postgres-query.rb
CHANGED
@@ -29,12 +29,19 @@
|
|
29
29
|
# for details.
|
30
30
|
#
|
31
31
|
|
32
|
+
require 'sensu-plugins-postgres/pgpass'
|
32
33
|
require 'sensu-plugin/check/cli'
|
33
34
|
require 'pg'
|
34
35
|
require 'dentaku'
|
35
36
|
|
36
37
|
# Check PostgresSQL Query
|
37
38
|
class CheckPostgresQuery < Sensu::Plugin::Check::CLI
|
39
|
+
option :pgpass,
|
40
|
+
description: 'Pgpass file',
|
41
|
+
short: '-f FILE',
|
42
|
+
long: '--pgpass',
|
43
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
44
|
+
|
38
45
|
option :user,
|
39
46
|
description: 'Postgres User',
|
40
47
|
short: '-u USER',
|
@@ -48,20 +55,17 @@ class CheckPostgresQuery < Sensu::Plugin::Check::CLI
|
|
48
55
|
option :hostname,
|
49
56
|
description: 'Hostname to login to',
|
50
57
|
short: '-h HOST',
|
51
|
-
long: '--hostname HOST'
|
52
|
-
default: 'localhost'
|
58
|
+
long: '--hostname HOST'
|
53
59
|
|
54
60
|
option :port,
|
55
61
|
description: 'Database port',
|
56
62
|
short: '-P PORT',
|
57
|
-
long: '--port PORT'
|
58
|
-
default: 5432
|
63
|
+
long: '--port PORT'
|
59
64
|
|
60
65
|
option :database,
|
61
66
|
description: 'Database name',
|
62
67
|
short: '-d DB',
|
63
|
-
long: '--db DB'
|
64
|
-
default: 'postgres'
|
68
|
+
long: '--db DB'
|
65
69
|
|
66
70
|
option :query,
|
67
71
|
description: 'Database query to execute',
|
@@ -94,8 +98,11 @@ class CheckPostgresQuery < Sensu::Plugin::Check::CLI
|
|
94
98
|
long: '--timeout TIMEOUT',
|
95
99
|
default: nil
|
96
100
|
|
101
|
+
include Pgpass
|
102
|
+
|
97
103
|
def run
|
98
104
|
begin
|
105
|
+
pgpass
|
99
106
|
con = PG.connect(host: config[:hostname],
|
100
107
|
dbname: config[:database],
|
101
108
|
user: config[:user],
|
@@ -26,10 +26,17 @@
|
|
26
26
|
# for details.
|
27
27
|
#
|
28
28
|
|
29
|
+
require 'sensu-plugins-postgres/pgpass'
|
29
30
|
require 'sensu-plugin/check/cli'
|
30
31
|
require 'pg'
|
31
32
|
|
32
33
|
class CheckPostgresReplicationStatus < Sensu::Plugin::Check::CLI
|
34
|
+
option :pgpass,
|
35
|
+
description: 'Pgpass file',
|
36
|
+
short: '-f FILE',
|
37
|
+
long: '--pgpass',
|
38
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
39
|
+
|
33
40
|
option(:master_host,
|
34
41
|
short: '-m',
|
35
42
|
long: '--master-host=HOST',
|
@@ -44,8 +51,7 @@ class CheckPostgresReplicationStatus < Sensu::Plugin::Check::CLI
|
|
44
51
|
option(:port,
|
45
52
|
short: '-P',
|
46
53
|
long: '--port=PORT',
|
47
|
-
description: 'PostgreSQL port'
|
48
|
-
default: 5432)
|
54
|
+
description: 'PostgreSQL port')
|
49
55
|
|
50
56
|
option(:database,
|
51
57
|
short: '-d',
|
@@ -90,6 +96,8 @@ class CheckPostgresReplicationStatus < Sensu::Plugin::Check::CLI
|
|
90
96
|
default: nil,
|
91
97
|
description: 'Connection timeout (seconds)')
|
92
98
|
|
99
|
+
include Pgpass
|
100
|
+
|
93
101
|
def compute_lag(master, slave, m_segbytes)
|
94
102
|
m_segment, m_offset = master.split('/')
|
95
103
|
s_segment, s_offset = slave.split('/')
|
@@ -100,6 +108,7 @@ class CheckPostgresReplicationStatus < Sensu::Plugin::Check::CLI
|
|
100
108
|
ssl_mode = config[:ssl] ? 'require' : 'prefer'
|
101
109
|
|
102
110
|
# Establishing connection to the master
|
111
|
+
pgpass
|
103
112
|
conn_master = PG.connect(host: config[:master_host],
|
104
113
|
dbname: config[:database],
|
105
114
|
user: config[:user],
|
@@ -28,11 +28,18 @@
|
|
28
28
|
# for details.
|
29
29
|
#
|
30
30
|
|
31
|
+
require 'sensu-plugins-postgres/pgpass'
|
31
32
|
require 'sensu-plugin/metric/cli'
|
32
33
|
require 'pg'
|
33
34
|
require 'socket'
|
34
35
|
|
35
36
|
class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
37
|
+
option :pgpass,
|
38
|
+
description: 'Pgpass file',
|
39
|
+
short: '-f FILE',
|
40
|
+
long: '--pgpass',
|
41
|
+
default: "#{ENV['HOME']}/.pgpass"
|
42
|
+
|
36
43
|
option :user,
|
37
44
|
description: 'Postgres User',
|
38
45
|
short: '-u USER',
|
@@ -46,20 +53,17 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
46
53
|
option :hostname,
|
47
54
|
description: 'Hostname to login to',
|
48
55
|
short: '-h HOST',
|
49
|
-
long: '--hostname HOST'
|
50
|
-
default: 'localhost'
|
56
|
+
long: '--hostname HOST'
|
51
57
|
|
52
58
|
option :port,
|
53
59
|
description: 'Database port',
|
54
60
|
short: '-P PORT',
|
55
|
-
long: '--port PORT'
|
56
|
-
default: 5432
|
61
|
+
long: '--port PORT'
|
57
62
|
|
58
63
|
option :database,
|
59
64
|
description: 'Database name',
|
60
65
|
short: '-d DB',
|
61
|
-
long: '--db DB'
|
62
|
-
default: 'postgres'
|
66
|
+
long: '--db DB'
|
63
67
|
|
64
68
|
option :scheme,
|
65
69
|
description: 'Metric naming scheme, text to prepend to $queue_name.$metric',
|
@@ -72,9 +76,11 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
72
76
|
long: '--timeout TIMEOUT',
|
73
77
|
default: nil
|
74
78
|
|
79
|
+
include Pgpass
|
80
|
+
|
75
81
|
def run
|
76
82
|
timestamp = Time.now.to_i
|
77
|
-
|
83
|
+
pgpass
|
78
84
|
con = PG.connect(host: config[:hostname],
|
79
85
|
dbname: config[:database],
|
80
86
|
user: config[:user],
|
@@ -28,11 +28,18 @@
|
|
28
28
|
# for details.
|
29
29
|
#
|
30
30
|
|
31
|
+
require 'sensu-plugins-postgres/pgpass'
|
31
32
|
require 'sensu-plugin/metric/cli'
|
32
33
|
require 'pg'
|
33
34
|
require 'socket'
|
34
35
|
|
35
36
|
class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
37
|
+
option :pgpass,
|
38
|
+
description: 'Pgpass file',
|
39
|
+
short: '-f FILE',
|
40
|
+
long: '--pgpass',
|
41
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
42
|
+
|
36
43
|
option :user,
|
37
44
|
description: 'Postgres User',
|
38
45
|
short: '-u USER',
|
@@ -46,20 +53,17 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
46
53
|
option :hostname,
|
47
54
|
description: 'Hostname to login to',
|
48
55
|
short: '-h HOST',
|
49
|
-
long: '--hostname HOST'
|
50
|
-
default: 'localhost'
|
56
|
+
long: '--hostname HOST'
|
51
57
|
|
52
58
|
option :port,
|
53
59
|
description: 'Database port',
|
54
60
|
short: '-P PORT',
|
55
|
-
long: '--port PORT'
|
56
|
-
default: 5432
|
61
|
+
long: '--port PORT'
|
57
62
|
|
58
63
|
option :database,
|
59
64
|
description: 'Database name',
|
60
65
|
short: '-d DB',
|
61
|
-
long: '--db DB'
|
62
|
-
default: 'postgres'
|
66
|
+
long: '--db DB'
|
63
67
|
|
64
68
|
option :scheme,
|
65
69
|
description: 'Metric naming scheme, text to prepend to $queue_name.$metric',
|
@@ -72,9 +76,11 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
72
76
|
long: '--timeout TIMEOUT',
|
73
77
|
default: nil
|
74
78
|
|
79
|
+
include Pgpass
|
80
|
+
|
75
81
|
def run
|
76
82
|
timestamp = Time.now.to_i
|
77
|
-
|
83
|
+
pgpass
|
78
84
|
con = PG.connect(host: config[:hostname],
|
79
85
|
dbname: config[:database],
|
80
86
|
user: config[:user],
|
@@ -26,11 +26,18 @@
|
|
26
26
|
# for details.
|
27
27
|
#
|
28
28
|
|
29
|
+
require 'sensu-plugins-postgres/pgpass'
|
29
30
|
require 'pg'
|
30
31
|
require 'sensu-plugin/metric/cli'
|
31
32
|
require 'socket'
|
32
33
|
|
33
34
|
class CheckpostgresReplicationStatus < Sensu::Plugin::Metric::CLI::Graphite
|
35
|
+
option :pgpass,
|
36
|
+
description: 'Pgpass file',
|
37
|
+
short: '-f FILE',
|
38
|
+
long: '--pgpass',
|
39
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
40
|
+
|
34
41
|
option :master_host,
|
35
42
|
short: '-m',
|
36
43
|
long: '--master=HOST',
|
@@ -45,8 +52,7 @@ class CheckpostgresReplicationStatus < Sensu::Plugin::Metric::CLI::Graphite
|
|
45
52
|
option :database,
|
46
53
|
short: '-d',
|
47
54
|
long: '--database=NAME',
|
48
|
-
description: 'Database NAME'
|
49
|
-
default: 'postgres'
|
55
|
+
description: 'Database NAME'
|
50
56
|
|
51
57
|
option :user,
|
52
58
|
short: '-u',
|
@@ -67,8 +73,7 @@ class CheckpostgresReplicationStatus < Sensu::Plugin::Metric::CLI::Graphite
|
|
67
73
|
option :port,
|
68
74
|
description: 'Database port',
|
69
75
|
short: '-P PORT',
|
70
|
-
long: '--port PORT'
|
71
|
-
default: 5432
|
76
|
+
long: '--port PORT'
|
72
77
|
|
73
78
|
option :timeout,
|
74
79
|
description: 'Connection timeout (seconds)',
|
@@ -76,8 +81,11 @@ class CheckpostgresReplicationStatus < Sensu::Plugin::Metric::CLI::Graphite
|
|
76
81
|
long: '--timeout TIMEOUT',
|
77
82
|
default: nil
|
78
83
|
|
84
|
+
include Pgpass
|
85
|
+
|
79
86
|
def run
|
80
87
|
# Establishing connections to the master
|
88
|
+
pgpass
|
81
89
|
conn_master = PG.connect(host: config[:master_host],
|
82
90
|
dbname: config[:database],
|
83
91
|
user: config[:user],
|
@@ -28,11 +28,18 @@
|
|
28
28
|
# for details.
|
29
29
|
#
|
30
30
|
|
31
|
+
require 'sensu-plugins-postgres/pgpass'
|
31
32
|
require 'sensu-plugin/metric/cli'
|
32
33
|
require 'pg'
|
33
34
|
require 'socket'
|
34
35
|
|
35
36
|
class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
37
|
+
option :pgpass,
|
38
|
+
description: 'Pgpass file',
|
39
|
+
short: '-f FILE',
|
40
|
+
long: '--pgpass',
|
41
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
42
|
+
|
36
43
|
option :user,
|
37
44
|
description: 'Postgres User',
|
38
45
|
short: '-u USER',
|
@@ -46,20 +53,17 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
46
53
|
option :hostname,
|
47
54
|
description: 'Hostname to login to',
|
48
55
|
short: '-h HOST',
|
49
|
-
long: '--hostname HOST'
|
50
|
-
default: 'localhost'
|
56
|
+
long: '--hostname HOST'
|
51
57
|
|
52
58
|
option :port,
|
53
59
|
description: 'Database port',
|
54
60
|
short: '-P PORT',
|
55
|
-
long: '--port PORT'
|
56
|
-
default: 5432
|
61
|
+
long: '--port PORT'
|
57
62
|
|
58
63
|
option :database,
|
59
64
|
description: 'Database name',
|
60
65
|
short: '-d DB',
|
61
|
-
long: '--db DB'
|
62
|
-
default: 'postgres'
|
66
|
+
long: '--db DB'
|
63
67
|
|
64
68
|
option :scheme,
|
65
69
|
description: 'Metric naming scheme, text to prepend to $queue_name.$metric',
|
@@ -72,11 +76,13 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
72
76
|
long: '--timeout TIMEOUT',
|
73
77
|
default: nil
|
74
78
|
|
79
|
+
include Pgpass
|
80
|
+
|
75
81
|
def run
|
76
82
|
timestamp = Time.now.to_i
|
77
83
|
|
78
84
|
locks_per_type = Hash.new(0)
|
79
|
-
|
85
|
+
pgpass
|
80
86
|
con = PG.connect(host: config[:hostname],
|
81
87
|
dbname: config[:database],
|
82
88
|
user: config[:user],
|
@@ -28,11 +28,18 @@
|
|
28
28
|
# for details.
|
29
29
|
#
|
30
30
|
|
31
|
+
require 'sensu-plugins-postgres/pgpass'
|
31
32
|
require 'sensu-plugin/metric/cli'
|
32
33
|
require 'pg'
|
33
34
|
require 'socket'
|
34
35
|
|
35
36
|
class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
37
|
+
option :pgpass,
|
38
|
+
description: 'Pgpass file',
|
39
|
+
short: '-f FILE',
|
40
|
+
long: '--pgpass',
|
41
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
42
|
+
|
36
43
|
option :user,
|
37
44
|
description: 'Postgres User',
|
38
45
|
short: '-u USER',
|
@@ -46,14 +53,12 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
46
53
|
option :hostname,
|
47
54
|
description: 'Hostname to login to',
|
48
55
|
short: '-h HOST',
|
49
|
-
long: '--hostname HOST'
|
50
|
-
default: 'localhost'
|
56
|
+
long: '--hostname HOST'
|
51
57
|
|
52
58
|
option :port,
|
53
59
|
description: 'Database port',
|
54
60
|
short: '-P PORT',
|
55
|
-
long: '--port PORT'
|
56
|
-
default: 5432
|
61
|
+
long: '--port PORT'
|
57
62
|
|
58
63
|
option :scheme,
|
59
64
|
description: 'Metric naming scheme, text to prepend to $queue_name.$metric',
|
@@ -66,9 +71,11 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
66
71
|
long: '--timeout TIMEOUT',
|
67
72
|
default: nil
|
68
73
|
|
74
|
+
include Pgpass
|
75
|
+
|
69
76
|
def run
|
70
77
|
timestamp = Time.now.to_i
|
71
|
-
|
78
|
+
pgpass
|
72
79
|
con = PG.connect(host: config[:hostname],
|
73
80
|
dbname: 'postgres',
|
74
81
|
user: config[:user],
|
@@ -29,11 +29,18 @@
|
|
29
29
|
# for details.
|
30
30
|
#
|
31
31
|
|
32
|
+
require 'sensu-plugins-postgres/pgpass'
|
32
33
|
require 'sensu-plugin/metric/cli'
|
33
34
|
require 'pg'
|
34
35
|
require 'socket'
|
35
36
|
|
36
37
|
class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
38
|
+
option :pgpass,
|
39
|
+
description: 'Pgpass file',
|
40
|
+
short: '-f FILE',
|
41
|
+
long: '--pgpass',
|
42
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
43
|
+
|
37
44
|
option :user,
|
38
45
|
description: 'Postgres User',
|
39
46
|
short: '-u USER',
|
@@ -47,20 +54,17 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
47
54
|
option :hostname,
|
48
55
|
description: 'Hostname to login to',
|
49
56
|
short: '-h HOST',
|
50
|
-
long: '--hostname HOST'
|
51
|
-
default: 'localhost'
|
57
|
+
long: '--hostname HOST'
|
52
58
|
|
53
59
|
option :port,
|
54
60
|
description: 'Database port',
|
55
61
|
short: '-P PORT',
|
56
|
-
long: '--port PORT'
|
57
|
-
default: 5432
|
62
|
+
long: '--port PORT'
|
58
63
|
|
59
64
|
option :database,
|
60
65
|
description: 'Database name',
|
61
66
|
short: '-d DB',
|
62
|
-
long: '--db DB'
|
63
|
-
default: 'postgres'
|
67
|
+
long: '--db DB'
|
64
68
|
|
65
69
|
option :scheme,
|
66
70
|
description: 'Metric naming scheme, text to prepend to $queue_name.$metric',
|
@@ -73,9 +77,11 @@ class PostgresStatsDBMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
73
77
|
long: '--timeout TIMEOUT',
|
74
78
|
default: nil
|
75
79
|
|
80
|
+
include Pgpass
|
81
|
+
|
76
82
|
def run
|
77
83
|
timestamp = Time.now.to_i
|
78
|
-
|
84
|
+
pgpass
|
79
85
|
con = PG.connect(host: config[:hostname],
|
80
86
|
dbname: config[:database],
|
81
87
|
user: config[:user],
|
@@ -29,11 +29,18 @@
|
|
29
29
|
# for details.
|
30
30
|
#
|
31
31
|
|
32
|
+
require 'sensu-plugins-postgres/pgpass'
|
32
33
|
require 'sensu-plugin/metric/cli'
|
33
34
|
require 'pg'
|
34
35
|
require 'socket'
|
35
36
|
|
36
37
|
class PostgresStatsIOMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
38
|
+
option :pgpass,
|
39
|
+
description: 'Pgpass file',
|
40
|
+
short: '-f FILE',
|
41
|
+
long: '--pgpass',
|
42
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
43
|
+
|
37
44
|
option :user,
|
38
45
|
description: 'Postgres User',
|
39
46
|
short: '-u USER',
|
@@ -47,20 +54,17 @@ class PostgresStatsIOMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
47
54
|
option :hostname,
|
48
55
|
description: 'Hostname to login to',
|
49
56
|
short: '-h HOST',
|
50
|
-
long: '--hostname HOST'
|
51
|
-
default: 'localhost'
|
57
|
+
long: '--hostname HOST'
|
52
58
|
|
53
59
|
option :port,
|
54
60
|
description: 'Database port',
|
55
61
|
short: '-P PORT',
|
56
|
-
long: '--port PORT'
|
57
|
-
default: 5432
|
62
|
+
long: '--port PORT'
|
58
63
|
|
59
64
|
option :database,
|
60
65
|
description: 'Database name',
|
61
66
|
short: '-d DB',
|
62
|
-
long: '--db DB'
|
63
|
-
default: 'postgres'
|
67
|
+
long: '--db DB'
|
64
68
|
|
65
69
|
option :scope,
|
66
70
|
description: 'Scope, see http://www.postgresql.org/docs/9.2/static/monitoring-stats.html',
|
@@ -79,9 +83,11 @@ class PostgresStatsIOMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
79
83
|
long: '--timeout TIMEOUT',
|
80
84
|
default: nil
|
81
85
|
|
86
|
+
include Pgpass
|
87
|
+
|
82
88
|
def run
|
83
89
|
timestamp = Time.now.to_i
|
84
|
-
|
90
|
+
pgpass
|
85
91
|
con = PG.connect(host: config[:hostname],
|
86
92
|
dbname: config[:database],
|
87
93
|
user: config[:user],
|
@@ -29,11 +29,18 @@
|
|
29
29
|
# for details.
|
30
30
|
#
|
31
31
|
|
32
|
+
require 'sensu-plugins-postgres/pgpass'
|
32
33
|
require 'sensu-plugin/metric/cli'
|
33
34
|
require 'pg'
|
34
35
|
require 'socket'
|
35
36
|
|
36
37
|
class PostgresStatsTableMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
38
|
+
option :pgpass,
|
39
|
+
description: 'Pgpass file',
|
40
|
+
short: '-f FILE',
|
41
|
+
long: '--pgpass',
|
42
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
43
|
+
|
37
44
|
option :user,
|
38
45
|
description: 'Postgres User',
|
39
46
|
short: '-u USER',
|
@@ -47,20 +54,17 @@ class PostgresStatsTableMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
47
54
|
option :hostname,
|
48
55
|
description: 'Hostname to login to',
|
49
56
|
short: '-h HOST',
|
50
|
-
long: '--hostname HOST'
|
51
|
-
default: 'localhost'
|
57
|
+
long: '--hostname HOST'
|
52
58
|
|
53
59
|
option :port,
|
54
60
|
description: 'Database port',
|
55
61
|
short: '-P PORT',
|
56
|
-
long: '--port PORT'
|
57
|
-
default: 5432
|
62
|
+
long: '--port PORT'
|
58
63
|
|
59
64
|
option :database,
|
60
65
|
description: 'Database name',
|
61
66
|
short: '-d DB',
|
62
|
-
long: '--db DB'
|
63
|
-
default: 'postgres'
|
67
|
+
long: '--db DB'
|
64
68
|
|
65
69
|
option :scope,
|
66
70
|
description: 'Scope, see http://www.postgresql.org/docs/9.2/static/monitoring-stats.html',
|
@@ -79,9 +83,11 @@ class PostgresStatsTableMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
79
83
|
long: '--timeout TIMEOUT',
|
80
84
|
default: nil
|
81
85
|
|
86
|
+
include Pgpass
|
87
|
+
|
82
88
|
def run
|
83
89
|
timestamp = Time.now.to_i
|
84
|
-
|
90
|
+
pgpass
|
85
91
|
con = PG.connect(host: config[:hostname],
|
86
92
|
dbname: config[:database],
|
87
93
|
user: config[:user],
|
@@ -27,10 +27,17 @@
|
|
27
27
|
# for details.
|
28
28
|
#
|
29
29
|
|
30
|
+
require 'sensu-plugins-postgres/pgpass'
|
30
31
|
require 'sensu-plugin/metric/cli'
|
31
32
|
require 'pg'
|
32
33
|
|
33
34
|
class MetricsPostgresQuery < Sensu::Plugin::Metric::CLI::Graphite
|
35
|
+
option :pgpass,
|
36
|
+
description: 'Pgpass file',
|
37
|
+
short: '-f FILE',
|
38
|
+
long: '--pgpass',
|
39
|
+
default: ENV['PGPASSFILE'] || "#{ENV['HOME']}/.pgpass"
|
40
|
+
|
34
41
|
option :user,
|
35
42
|
description: 'Postgres User',
|
36
43
|
short: '-u USER',
|
@@ -44,20 +51,17 @@ class MetricsPostgresQuery < Sensu::Plugin::Metric::CLI::Graphite
|
|
44
51
|
option :hostname,
|
45
52
|
description: 'Hostname to login to',
|
46
53
|
short: '-h HOST',
|
47
|
-
long: '--hostname HOST'
|
48
|
-
default: 'localhost'
|
54
|
+
long: '--hostname HOST'
|
49
55
|
|
50
56
|
option :port,
|
51
57
|
description: 'Database port',
|
52
58
|
short: '-P PORT',
|
53
|
-
long: '--port PORT'
|
54
|
-
default: 5432
|
59
|
+
long: '--port PORT'
|
55
60
|
|
56
61
|
option :database,
|
57
62
|
description: 'Database name',
|
58
63
|
short: '-d DB',
|
59
|
-
long: '--db DB'
|
60
|
-
default: 'postgres'
|
64
|
+
long: '--db DB'
|
61
65
|
|
62
66
|
option :query,
|
63
67
|
description: 'Database query to execute',
|
@@ -91,8 +95,11 @@ class MetricsPostgresQuery < Sensu::Plugin::Metric::CLI::Graphite
|
|
91
95
|
long: '--timeout TIMEOUT',
|
92
96
|
default: nil
|
93
97
|
|
98
|
+
include Pgpass
|
99
|
+
|
94
100
|
def run
|
95
101
|
begin
|
102
|
+
pgpass
|
96
103
|
con = PG.connect(host: config[:hostname],
|
97
104
|
dbname: config[:database],
|
98
105
|
user: config[:user],
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Pgpass
|
2
|
+
def pgpass
|
3
|
+
if File.file?(config[:pgpass])
|
4
|
+
pgpass = Hash[[:hostname, :port, :database, :user, :password].zip(File.readlines(config[:pgpass])[0].strip.split(':'))]
|
5
|
+
pgpass[:database] = nil if pgpass[:database] == '*'
|
6
|
+
pgpass.each do |k, v|
|
7
|
+
config[k] ||= v
|
8
|
+
end
|
9
|
+
else
|
10
|
+
config[:hostname] ||= ENV['PGHOST'] || 'localhost'
|
11
|
+
config[:port] ||= ENV['PGPORT'] || 5432
|
12
|
+
config[:database] ||= ENV['PGDATABASE'] || 'postgres'
|
13
|
+
config[:user] ||= ENV['PGUSER'] || 'postgres'
|
14
|
+
config[:password] ||= ENV['PGPASSWORD']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
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: 1.
|
4
|
+
version: 1.4.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-
|
11
|
+
date: 2017-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -220,6 +220,7 @@ files:
|
|
220
220
|
- bin/metric-postgres-statstable.rb
|
221
221
|
- bin/metrics-postgres-query.rb
|
222
222
|
- lib/sensu-plugins-postgres.rb
|
223
|
+
- lib/sensu-plugins-postgres/pgpass.rb
|
223
224
|
- lib/sensu-plugins-postgres/version.rb
|
224
225
|
homepage: https://github.com/sensu-plugins/sensu-plugins-postgres
|
225
226
|
licenses:
|