From d95caf2e092457eba9c7d9b2998fe3ffbeda706b Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Sun, 20 May 2007 16:53:16 +0200 Subject: [PATCH] Added Perl plugin template MyPlugin.pm. --- debian/examples/MyPlugin.pm | 125 ++++++++++++++++++++++++++++++++++++ debian/rules | 3 +- 2 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 debian/examples/MyPlugin.pm diff --git a/debian/examples/MyPlugin.pm b/debian/examples/MyPlugin.pm new file mode 100644 index 0000000..3c9121f --- /dev/null +++ b/debian/examples/MyPlugin.pm @@ -0,0 +1,125 @@ +# /usr/share/doc/collectd/examples/MyPlugin.pm +# +# A Perl plugin template for collectd. +# +# Written by Sebastian Harl +# +# This is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; only version 2 of the License is applicable. + +# Notes: +# - each of the functions below (and the corresponding plugin_register call) +# is optional + +package Collectd::Plugin::MyPlugin; + +use strict; +use warnings; + +# data set definition: +# see section "DATA TYPES" in collectd-perl(5) for details +my $dataset = +[ + { + name => 'my_ds', + type => Collectd::DS_TYPE_GAUGE, + min => 0, + max => undef, + }, +]; + +# This code is executed after loading the plugin to register it with collectd. +Collectd::plugin_register (Collectd::TYPE_LOG, 'myplugin', \&my_log); +Collectd::plugin_register (Collectd::TYPE_DATASET, 'myplugin', $dataset); +Collectd::plugin_register (Collectd::TYPE_INIT, 'myplugin', \&my_init); +Collectd::plugin_register (Collectd::TYPE_READ, 'myplugin', \&my_read); +Collectd::plugin_register (Collectd::TYPE_WRITE, 'myplugin', \&my_write); +Collectd::plugin_register (Collectd::TYPE_SHUTDOWN, 'myplugin', \&my_shutdown); + +# For each of the functions below see collectd-perl(5) for details about +# arguments and the like. + +# This function is called once upon startup to initialize the plugin. +sub my_init +{ + # open sockets, initialize data structures, ... + + # A false return value indicates an error and causes the plugin to be + # disabled. + return 1; +} # my_init () + +# This function is called in regular intervals to collectd the data. +sub my_read +{ + # value list to dispatch to collectd: + # see section "DATA TYPES" in collectd-perl(5) for details + my $vl = {}; + + # do the magic to read the data: + # the number of values has to match the number of data sources defined in + # the registered data set + $vl->{'values'} = [ rand(65535) ]; + $vl->{'plugin'} = 'myplugin'; + # any other elements are optional + + # dispatch the values to collectd which passes them on to all registered + # write functions - the first argument is used to lookup the data set + # definition + Collectd::plugin_dispatch_values ('myplugin', $vl); + + # A false return value indicates an error and the plugin will be skipped + # for an increasing amount of time. + return 1; +} # my_read () + +# This function is called after values have been dispatched to collectd. +sub my_write +{ + my $type = shift; + my $ds = shift; + my $vl = shift; + + if (scalar (@$ds) != scalar (@{$vl->{'values'}})) { + Collectd::plugin_log (Collectd::LOG_WARNING, + "DS number does not match values length"); + return; + } + + for (my $i = 0; $i < scalar (@$ds); ++$i) { + # do the magic to output the data + print "$vl->{'host'}: $vl->{'plugin'}: "; + + if (defined $vl->{'plugin_instance'}) { + print "$vl->{'plugin_instance'}: "; + } + + print "$type: "; + + if (defined $vl->{'type_instance'}) { + print "$vl->{'type_instance'}: "; + } + + print "$vl->{'values'}->[$i]\n"; + } + return 1; +} # my_write() + +# This function is called before shutting down collectd. +sub my_shutdown +{ + # close sockets, ... + return 1; +} # my_shutdown () + +# This function is called when plugin_log () has been used. +sub my_log +{ + my $level = shift; + my $msg = shift; + + print "LOG: $level - $msg\n"; + return 1; +} # my_log () + diff --git a/debian/rules b/debian/rules index 4fea9ab..8de27de 100755 --- a/debian/rules +++ b/debian/rules @@ -107,7 +107,8 @@ binary-indep: install-indep dh_testroot dh_installchangelogs -i ChangeLog dh_installdocs -A -i debian/README.Debian AUTHORS README TODO - dh_installexamples -i debian/examples/myplugin.c + dh_installexamples -i debian/examples/myplugin.c \ + debian/examples/MyPlugin.pm dh_compress -i dh_fixperms -i dh_installdeb -i -- 2.30.2