root / plugins / openfire / openfire_ @ 09b88141
Historique | Voir | Annoter | Télécharger (5,54 ko)
| 1 |
#!/usr/bin/env perl |
|---|---|
| 2 |
# -*- perl -*- |
| 3 |
|
| 4 |
=head1 NAME |
| 5 |
|
| 6 |
openfire_ a Plugin for displaying Openfire Stats |
| 7 |
|
| 8 |
=head1 INTERPRETATION |
| 9 |
|
| 10 |
This plugin displays the following charts: |
| 11 |
|
| 12 |
1) db Displaying DB Connections Stats. |
| 13 |
2) threads Displaying Stats about Openfire Stats. |
| 14 |
3) tasks Displaying Stats about Openfire Background Tasks. |
| 15 |
4) sessions Displaying the Number of current Jabber Sessions. |
| 16 |
5) nio Displaying some Network I/O Stats. |
| 17 |
6) queue Displaying the Number of queued Events |
| 18 |
7) timestamp Displaying the Log Timestamp (should be increasing - for Debugging) |
| 19 |
|
| 20 |
You can set the modes with naming the softlink: |
| 21 |
|
| 22 |
1) openfire_db |
| 23 |
2) openfire_threads |
| 24 |
3) openfire_tasks |
| 25 |
4) openfire_sessions |
| 26 |
5) openfire_nio |
| 27 |
6) openfire_queue |
| 28 |
7) openfire_timestamp |
| 29 |
|
| 30 |
=head1 CONFIGURATION |
| 31 |
|
| 32 |
You need to have the Openfire "Load Statistic" Plugin-installed! |
| 33 |
|
| 34 |
This plugin is configurable environment variables. |
| 35 |
|
| 36 |
user root must be root user |
| 37 |
env.statsfile path to stats.txt file |
| 38 |
|
| 39 |
Example: |
| 40 |
|
| 41 |
[openfire_*] |
| 42 |
user root |
| 43 |
env.statsfile /var/log/openfire/stats.txt |
| 44 |
|
| 45 |
|
| 46 |
=head1 AUTHOR |
| 47 |
|
| 48 |
Philipp Haussleiter <philipp@haussleiter.de> |
| 49 |
|
| 50 |
=head1 LICENSE |
| 51 |
|
| 52 |
GPLv2 |
| 53 |
|
| 54 |
=cut |
| 55 |
|
| 56 |
# MAIN |
| 57 |
use warnings; |
| 58 |
use strict; |
| 59 |
use File::Basename; |
| 60 |
|
| 61 |
my $statsfile = ($ENV{'statsfile'} || '/usr/share/openfire/logs/stats.txt');
|
| 62 |
|
| 63 |
my $tailBin = "/usr/bin/tail"; |
| 64 |
|
| 65 |
# db,threads,tasks,sessions,nio,timestamp |
| 66 |
my $type = basename($0); |
| 67 |
$type =~ s/openfire_//; |
| 68 |
|
| 69 |
|
| 70 |
if ( exists $ARGV[0] and $ARGV[0] eq "config" ) {
|
| 71 |
if( $type eq "db" ) {
|
| 72 |
print "graph_args --base 1000 -l 0\n"; |
| 73 |
print "graph_title Openfire DB Usage\n"; |
| 74 |
print "graph_vlabel Number of Connections\n"; |
| 75 |
print "graph_category chat\n"; |
| 76 |
print "graph_info The Graph shows Number of DB Connections\n"; |
| 77 |
print "db_used.draw AREA\ndb_used.label used\ndb_used.type GAUGE\n"; |
| 78 |
print "db_current.draw STACK\ndb_current.label current\ndb_current.type GAUGE\n"; |
| 79 |
print "db_min.draw STACK\ndb_min.label min\ndb_min.type GAUGE\n"; |
| 80 |
print "db_max.draw STACK\ndb_max.label max\ndb_max.type GAUGE\n"; |
| 81 |
} |
| 82 |
if( $type eq "threads" ) {
|
| 83 |
print "graph_args --base 1000 -l 0\n"; |
| 84 |
print "graph_scale no\n"; |
| 85 |
print "graph_title Openfire Threads\n"; |
| 86 |
print "graph_vlabel Number of Threads\n"; |
| 87 |
print "graph_category chat\n"; |
| 88 |
print "graph_info The Graph shows Number of Threads\n"; |
| 89 |
print "thread_core.draw AREA\nthread_core.label Core Threads\nthread_core.type GAUGE\n"; |
| 90 |
print "thread_active.draw STACK\nthread_active.label active Threads\nthread_active.type GAUGE\n"; |
| 91 |
} |
| 92 |
if( $type eq "tasks" ) {
|
| 93 |
print "graph_args --base 1000 -l 0\n"; |
| 94 |
print "graph_scale no\n"; |
| 95 |
print "graph_title Openfire Tasks\n"; |
| 96 |
print "graph_vlabel Number of Tasks\n"; |
| 97 |
print "graph_category chat\n"; |
| 98 |
print "graph_info The Graph shows Number of Tasks\n"; |
| 99 |
print "task_queue.draw AREA\ntask_queue.label queued Tasks\ntask_queue.type GAUGE\n"; |
| 100 |
print "task_completed.draw STACK\ntask_completed.label completed Tasks\ntask_completed.type DERIVE\n"; |
| 101 |
} |
| 102 |
if( $type eq "sessions" ) {
|
| 103 |
print "graph_args --base 1000 -l 0\n"; |
| 104 |
print "graph_scale no\n"; |
| 105 |
print "graph_title Openfire Sessions\n"; |
| 106 |
print "graph_vlabel Number of Sessions\n"; |
| 107 |
print "graph_category chat\n"; |
| 108 |
print "graph_info The Graph shows Number of Jabber Sessions\n"; |
| 109 |
print "sessions.label Jabber Sessions\nsessions.type GAUGE\n"; |
| 110 |
} |
| 111 |
if( $type eq "nio" ) {
|
| 112 |
print "graph_args --base 1000 -l 0\n"; |
| 113 |
print "graph_title Openfire I/O (NIO)\n"; |
| 114 |
print "graph_vlabel Reads/Writes per \${graph_period} in (-) / out (+)\n";
|
| 115 |
print "graph_category chat\n"; |
| 116 |
print "graph_info The Graph shows Number of Stanzas\n"; |
| 117 |
print "nio_written.label nio\nnio_written.draw LINE1\nnio_written.max 10000\nnio_written.min 0\nnio_written.graph no\n"; |
| 118 |
print "nio_read.label nio\nnio_read.draw LINE1\nnio_read.max 10000\nnio_read.min 0\nnio_read.negative nio_written\nnio_read.type DERIVE\n"; |
| 119 |
} |
| 120 |
if( $type eq "queue" ) {
|
| 121 |
print "graph_args --base 1000 -l 0\n"; |
| 122 |
print "graph_title Openfire Queue\n"; |
| 123 |
print "graph_vlabel Number of queued Stanzas\n"; |
| 124 |
print "graph_category chat\n"; |
| 125 |
print "graph_info The Graph shows Number of queued Stanzas\n"; |
| 126 |
print "nio_queued_events.draw AREA\nnio_queued_events.label queued Events\nnio_queued_events.type GAUGE\n"; |
| 127 |
print "nio_queued_writes.draw STACK\nnio_queued_writes.label queued Writes\nnio_queued_writes.type GAUGE\n"; |
| 128 |
} |
| 129 |
if( $type eq "timestamp" ) {
|
| 130 |
print "graph_args --base 1000 -l 0\n"; |
| 131 |
print "graph_title Openfire Log Timestamp\n"; |
| 132 |
print "graph_vlabel Timestamp\n"; |
| 133 |
print "graph_category chat\n"; |
| 134 |
print "graph_info The Graph shows the Timestamp of the Log\n"; |
| 135 |
print "timestamp.draw AREA\ntimestamp.label Log Timestamp\ntimestamp.type GAUGE\n"; |
| 136 |
} |
| 137 |
} else {
|
| 138 |
my $cmd = "$tailBin -1 $statsfile"; |
| 139 |
my $result = `$cmd`; |
| 140 |
my @array=split(/,/,$result); |
| 141 |
my $count = scalar @array; |
| 142 |
my $diff = 0; |
| 143 |
if($count < 14) {
|
| 144 |
$diff = 4; |
| 145 |
} |
| 146 |
|
| 147 |
if( $type eq "timestamp" ) {
|
| 148 |
print "timestamp.value $array[0]\n"; |
| 149 |
} |
| 150 |
if( $count == 14 && $type eq "db" ) {
|
| 151 |
print "db_min.value $array[1]\n"; |
| 152 |
print "db_max.value $array[2]\n"; |
| 153 |
print "db_current.value $array[3]\n"; |
| 154 |
print "db_used.value $array[4]\n"; |
| 155 |
} |
| 156 |
if( $type eq "threads" ) {
|
| 157 |
print "thread_core.value $array[5-$diff]\n"; |
| 158 |
print "thread_active.value $array[6-$diff]\n"; |
| 159 |
} |
| 160 |
if( $type eq "tasks" ) {
|
| 161 |
print "task_queue.value $array[7-$diff]\n"; |
| 162 |
print "task_completed.value $array[8-$diff]\n"; |
| 163 |
} |
| 164 |
if( $type eq "sessions" ) {
|
| 165 |
print "sessions.value $array[9-$diff]\n"; |
| 166 |
} |
| 167 |
if( $type eq "nio" ) {
|
| 168 |
print "nio_read.value $array[10-$diff]\n"; |
| 169 |
print "nio_written.value $array[11-$diff]\n"; |
| 170 |
} |
| 171 |
if( $type eq "queue" ) {
|
| 172 |
print "nio_queued_events.value $array[12-$diff]\n"; |
| 173 |
print "nio_queued_writes.value $array[13-$diff]"; |
| 174 |
} |
| 175 |
} |
