From: Sebastian Harl Date: Tue, 5 Feb 2008 21:26:23 +0000 (+0100) Subject: contrib/examples/: Added an example for a notification callback. X-Git-Tag: collectd-4.3.0beta1~8^2~1 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=94105804a59bf3e2a5d4b1320550f8aad1a0c288;p=collectd.git contrib/examples/: Added an example for a notification callback. Signed-off-by: Sebastian Harl Signed-off-by: Florian Forster --- diff --git a/contrib/examples/MyPlugin.pm b/contrib/examples/MyPlugin.pm index b8522721..1a0247ff 100644 --- a/contrib/examples/MyPlugin.pm +++ b/contrib/examples/MyPlugin.pm @@ -34,6 +34,7 @@ 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_NOTIF, 'myplugin', 'my_notify'); plugin_register (TYPE_DATASET, 'myplugin', $dataset); plugin_register (TYPE_INIT, 'myplugin', 'my_init'); plugin_register (TYPE_READ, 'myplugin', 'my_read'); @@ -85,8 +86,7 @@ sub my_write 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; } @@ -126,3 +126,38 @@ sub my_log 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 () + diff --git a/contrib/examples/myplugin.c b/contrib/examples/myplugin.c index fc7856b9..cdd537a7 100644 --- a/contrib/examples/myplugin.c +++ b/contrib/examples/myplugin.c @@ -18,7 +18,8 @@ * is optional */ -#include +#if ! HAVE_CONFIG_H + #include #include @@ -33,6 +34,10 @@ # undef __USE_ISOC99 #endif /* DISABLE_ISOC99 */ +#include + +#endif /* ! HAVE_CONFIG */ + #include #include #include @@ -146,6 +151,44 @@ static void my_log (int severity, const char *msg) } /* static void my_log (int, const char *) */ /* + * This function is called when plugin_dispatch_notification () has been used. + */ +static int my_notify (const notification_t *notif) +{ + char time_str[32] = ""; + struct tm *tm = NULL; + + int n = 0; + + if (NULL == (tm = localtime (¬if->time))) + time_str[0] = '\0'; + + n = strftime (time_str, 32, "%F %T", tm); + if (n >= 32) n = 31; + time_str[n] = '\0'; + + printf ("NOTIF (%s): %i - ", time_str, notif->severity); + + if ('\0' != *notif->host) + printf ("%s: ", notif->host); + + if ('\0' != *notif->plugin) + printf ("%s: ", notif->plugin); + + if ('\0' != *notif->plugin_instance) + printf ("%s: ", notif->plugin_instance); + + if ('\0' != *notif->type) + printf ("%s: ", notif->type); + + if ('\0' != *notif->type_instance) + printf ("%s: ", notif->type_instance); + + printf ("%s\n", notif->message); + return 0; +} /* static int my_notify (notification_t *) */ + +/* * This function is called before shutting down collectd. */ static int my_shutdown (void) @@ -161,6 +204,7 @@ static int my_shutdown (void) void module_register (void) { plugin_register_log ("myplugin", my_log); + plugin_register_notification ("myplugin", my_notify); plugin_register_data_set (&ds); plugin_register_read ("myplugin", my_read); plugin_register_init ("myplugin", my_init);