Projet

Général

Profil

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

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
}