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 | } |
