# data set definition:
# see section "DATA TYPES" in collectd-perl(5) for details
-# (take a look at the types.db file for a large list of predefined data-sets)
+#
+# NOTE: If you're defining a custom data-set, you have to make that known to
+# any servers as well. Else, the server is not able to store values using the
+# type defined by that data-set.
+# It is strongly recommended to use one of the types and data-sets pre-defined
+# in the types.db file.
my $dataset =
[
{
# This code is executed after loading the plugin to register it with collectd.
plugin_register (TYPE_LOG, 'myplugin', 'my_log');
-plugin_register (TYPE_DATASET, 'myplugin', $dataset);
+plugin_register (TYPE_NOTIF, 'myplugin', 'my_notify');
+plugin_register (TYPE_DATASET, 'mytype', $dataset);
plugin_register (TYPE_INIT, 'myplugin', 'my_init');
plugin_register (TYPE_READ, 'myplugin', 'my_read');
plugin_register (TYPE_WRITE, 'myplugin', 'my_write');
# 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
+ # the registered data set. The type used here (in this example:
+ # "mytype") must be defined in the types.db, see types.db(5) for
+ # details, or registered as "TYPE_DATASET".
$vl->{'values'} = [ rand(65535) ];
$vl->{'plugin'} = 'myplugin';
+ $vl->{'type'} = 'mytype';
# 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
- plugin_dispatch_values ('myplugin', $vl);
+ # write functions
+ plugin_dispatch_values ($vl);
# A false return value indicates an error and the plugin will be skipped
# for an increasing amount of time.
my $vl = shift;
if (scalar (@$ds) != scalar (@{$vl->{'values'}})) {
- plugin_log (LOG_WARNING,
- "DS number does not match values length");
+ plugin_log (LOG_WARNING, "DS number does not match values length");
return;
}
return 1;
} # my_log ()
+# This function is called when plugin_dispatch_notification () has been used
+sub my_notify
+{
+ my $notif = shift;
+
+ my ($sec, $min, $hour, $mday, $mon, $year) = localtime ($notif->{'time'});
+
+ printf "NOTIF (%04d-%02d-%02d %02d:%02d:%02d): %d - ",
+ $year + 1900, $mon + 1, $mday, $hour, $min, $sec,
+ $notif->{'severity'};
+
+ if (defined $notif->{'host'}) {
+ print "$notif->{'host'}: ";
+ }
+
+ if (defined $notif->{'plugin'}) {
+ print "$notif->{'plugin'}: ";
+ }
+
+ if (defined $notif->{'plugin_instance'}) {
+ print "$notif->{'plugin_instance'}: ";
+ }
+
+ if (defined $notif->{'type'}) {
+ print "$notif->{'type'}: ";
+ }
+
+ if (defined $notif->{'type_instance'}) {
+ print "$notif->{'type_instance'}: ";
+ }
+
+ print "$notif->{'message'}\n";
+ return 1;
+} # my_notify ()
+