Projet

Général

Profil

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

root / plugins / postgresql / postgresql_active_locks @ 17f78427

Historique | Voir | Annoter | Télécharger (1,43 ko)

1
#!/bin/bash
2
#
3
# Plugin to monitor PostgreSQL Locks
4
#
5
# Author:
6
#    Guilherme Augusto da Rocha Silva <gars.dba@gmail.com>
7
#
8
# Created:
9
#    5th of november 2007
10
#
11
# Modified:
12
#    22th of September 2011 by Nozomu Kaneko <nozom.kaneko@gmail.com>
13
#
14
# Usage:
15
#    Place in /etc/munin/plugins/ (or link it there using ln -s)
16
#
17
# Parameters:
18
#    config   (required)
19
#
20
# General info:
21
#    Require permission for database access and read (no writes are processed).
22
#    Recommended user is PostgreSQL database owner (default: postgres).
23
#
24
# Log info:
25
#
26

    
27
dbserver='localhost'
28
dbuser='postgres'
29

    
30
modes="AccessExclusive AccessShare Exclusive RowExclusive RowShare Share ShareRowExclusive ShareUpdateExclusive"
31

    
32
if [ "$1" = "config" ]; then
33
   echo 'graph_args --lower-limit 0'
34
   echo 'graph_category db'
35
   echo 'graph_info Shows active locks on database server.'
36
   echo 'graph_scale no'
37
   echo 'graph_title PostgreSQL Active Locks'
38
   echo 'graph_vlabel Number of active locks'
39
   for mode in $modes; do
40
     echo $mode.label $mode
41
     echo $mode.info `echo $mode | perl -pe 's/(.)([A-Z])/$1 $2/g'` Lock.
42
   done
43
   exit 0
44
fi
45

    
46
for mode in $modes; do
47
   eval ${mode}=0
48
done
49

    
50
eval $(psql -h ${dbserver} -U ${dbuser} template1 -tc "SELECT trim(mode, 'Lock'), COUNT(*) FROM pg_locks GROUP BY mode ORDER BY 1;" | while read name sep num
51
do
52
   test -z "${name}" && continue
53
   echo ${name}=${num}
54
done)
55

    
56
for mode in $modes; do
57
   echo ${mode}.value $(eval echo \$$mode)
58
done
59