Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / postgresql / postgres_queries3_ @ 97ab640b

Historique | Voir | Annoter | Télécharger (2,66 ko)

1 8f7c72c2 Samuel Smith
#!/usr/bin/env perl
2
3
# postgres_queries3: see stats on number of rows 
4
# read, inserted, updated and deleted on a per table basis
5
#
6
# Author:
7
#    Samuel Smith leon36 <snail> gmail <dot> com
8
#
9
# Created:
10
#    20140701
11
#
12
# Usage:
13
#    Place in /etc/munin/plugins/ (or link it there using ln -s)
14
#    Place table names after '_' and delimit with '-'
15
#    EX: postgres_queries3_table1-table2-table3
16
#
17
# Parameters:
18
#    config   (required)
19
#    conf:
20
#    [postgres_*]
21
#    user postgres
22
#
23
#
24
# General info:
25
#    Require permission for database access and read (no writes are processed).
26
#    Recommended user is PostgreSQL database owner.
27
#    On debian systems install libipc-run3-perl
28
#
29
# Log info:
30
# 20140701 - Initial 
31 a0415034 Samuel Smith
# 20140924 - 
32
#	-ignore internal pg tables
33
#	-missing stuff in config	
34 8f7c72c2 Samuel Smith
35
36
use strict;
37
use IPC::Run3 qw( run3 );
38
39
40
my %values;
41
42
my $query = \<<EOF;
43
select	
44
	'sel_seq.value '	|| SUM(seq_scan)	|| E'\n' ||
45
	'sel_seq_rows.value '	|| SUM(seq_tup_read)	|| E'\n' ||
46
	'sel_idx.value '	|| SUM(idx_scan)	|| E'\n' ||
47
	'sel_idx_rows.value '	|| SUM(idx_tup_fetch)	|| E'\n' ||
48
	'inserts.value '	|| SUM(n_tup_ins)	|| E'\n' ||
49
	'updates.value '	|| SUM(n_tup_upd)	|| E'\n' ||
50
	'deletes.value '	|| SUM(n_tup_del)
51 a0415034 Samuel Smith
		from pg_stat_all_tables where relname not like 'pg_%';
52 8f7c72c2 Samuel Smith
EOF
53
54
55
$0 =~ /postgres_queries3_(.*)/;
56
57
my @dbs = split(/-/,$1);
58
59
if( defined $ARGV[0] and $ARGV[0] eq "config" ){
60
print qq/graph_title Postgres All Queries
61 a0415034 Samuel Smith
graph_args --base 1000 -l 0 -r
62 8f7c72c2 Samuel Smith
graph_vlabel Queries per \${graph_period}
63 29bdf34e dipohl
graph_category db 
64 8f7c72c2 Samuel Smith
graph_info Shows number of select, insert, update and delete queries
65
sel_seq.label s_selects
66
sel_seq.info Sequential selects on all tables
67
sel_seq.type DERIVE
68
sel_seq.min 0
69 a0415034 Samuel Smith
sel_seq.max 100
70 8f7c72c2 Samuel Smith
sel_seq_rows.label s_select rows
71
sel_seq_rows.info Rows returned from sequential selects
72
sel_seq_rows.type DERIVE
73 a0415034 Samuel Smith
sel_seq_rows.min 0
74
sel_seq_rows.max 100
75 8f7c72c2 Samuel Smith
sel_idx.label i_selects
76
sel_idx.info Sequential selects on all indexes
77
sel_idx.type DERIVE
78 a0415034 Samuel Smith
sel_idx.min 0
79
sel_idx.max 100
80 8f7c72c2 Samuel Smith
sel_idx_rows.label i_select rows
81
sel_idx_rows.info Rows returned form index selects
82
sel_idx_rows.type DERIVE
83 a0415034 Samuel Smith
sel_idx_rows.min 0
84
sel_idx_rows.min 100
85 8f7c72c2 Samuel Smith
inserts.label inserts
86
inserts.info Rows inserted on all tables
87
inserts.type DERIVE
88
inserts.min 0
89 a0415034 Samuel Smith
inserts.max 100
90 8f7c72c2 Samuel Smith
updates.label updates
91
updates.info Rows updated on all tables
92
updates.type DERIVE
93
updates.min 0
94 a0415034 Samuel Smith
updates.max 100
95 8f7c72c2 Samuel Smith
deletes.label deletes
96
deletes.info Rows deleted from all tables
97
deletes.type DERIVE
98
deletes.min 0
99 a0415034 Samuel Smith
deletes.max 100
100 8f7c72c2 Samuel Smith
/;
101
exit;
102
}
103
104
foreach my $db (@dbs){
105
	my @out;
106
107
	run3( "psql -At $db", $query, \@out);
108
109
	foreach my $line (@out){
110
		my($key, $value) = split(/ /, $line);
111
		$values{$key} += $value;
112
	}
113
	
114
115
}
116
117
foreach my $key (keys %values){
118
	print "$key $values{$key}\n";
119
}