exec plugin: Removed the Nagios logic from the plugin.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Mon, 18 Feb 2008 20:19:32 +0000 (21:19 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Mon, 18 Feb 2008 20:19:32 +0000 (21:19 +0100)
Instead point users to the `exec-nagios.px' script in collectd-exec(5).

src/collectd-exec.pod
src/exec.c

index e95fac9..9882601 100644 (file)
@@ -55,21 +55,6 @@ run at once if multiple notifications are received.
 See L<NOTIFICATION DATA FORMAT> below for a description of the data passed to
 these programs.
 
-=begin comment
-
-=item C<NagiosExec>
-
-The executable is treated as a Nagios plugin. That means that the first line
-printed to C<STDOUT> by this program is used as the text of a notification and
-the severity of the notification depends on the exit status of the executable
-only.
-
-For information on how to write Nagios plugins please refer to the Nagios
-documentation. If a plugin works with Nagios but not with collectd please
-complain on the collectd mailing list instead.
-
-=end comment
-
 =back
 
 =head1 EXEC DATA FORMAT
@@ -243,6 +228,23 @@ associated with a certain value.
 
 =back
 
+=head1 USING NAGIOS PLUGINS
+
+Though the interface is far from perfect, there are tons of plugins for Nagios.
+You can use these plugins with collectd by using a simple transition layer,
+C<exec-nagios.px>, which is shipped with the collectd distribution in the
+C<contrib/> directory. It is a simple Perl script that comes with embedded
+documentation. To see it, run the following command:
+
+  perldoc exec-nagios.px
+
+This script expects a configuration file, C<exec-nagios.conf>. You can find an
+example in the C<contrib/> directory, too.
+
+Even a simple mechanism to submit "performance data" to collectd is
+implemented. If you need a more sophisticated setup, please rewrite the plugin
+to make use of collectd's more powerful interface.
+
 =head1 CAVEATS
 
 =over 4
index 44f03e3..c6a58d1 100644 (file)
@@ -35,7 +35,6 @@
 
 #define PL_NORMAL        0x01
 #define PL_NOTIF_ACTION  0x02
-#define PL_NAGIOS_PLUGIN 0x04
 
 #define PL_RUNNING       0x10
 
@@ -128,11 +127,6 @@ static int exec_config_exec (oconfig_item_t *ci) /* {{{ */
   }
   memset (pl, '\0', sizeof (program_list_t));
 
-#if 0
-  if (strcasecmp ("NagiosExec", ci->key) == 0)
-    pl->flags |= PL_NAGIOS_PLUGIN;
-  else
-#endif
   if (strcasecmp ("NotificationExec", ci->key) == 0)
     pl->flags |= PL_NOTIF_ACTION;
   else
@@ -256,9 +250,6 @@ static int exec_config (oconfig_item_t *ci) /* {{{ */
   {
     oconfig_item_t *child = ci->children + i;
     if ((strcasecmp ("Exec", child->key) == 0)
-#if 0
-       || (strcasecmp ("NagiosExec", child->key) == 0)
-#endif
        || (strcasecmp ("NotificationExec", child->key) == 0))
       exec_config_exec (child);
     else
@@ -528,9 +519,6 @@ static void *exec_read_one (void *arg) /* {{{ */
 
     DEBUG ("exec plugin: exec_read_one: buffer = %s", buffer);
 
-    if (pl->flags & PL_NAGIOS_PLUGIN)
-      break;
-
     parse_line (buffer);
   } /* while (fgets) */
 
@@ -542,29 +530,6 @@ static void *exec_read_one (void *arg) /* {{{ */
   DEBUG ("exec plugin: Child %i exited with status %i.",
       (int) pl->pid, pl->status);
 
-  if (pl->flags & PL_NAGIOS_PLUGIN)
-  {
-    notification_t n;
-
-    memset (&n, '\0', sizeof (n));
-    
-    n.severity = NOTIF_FAILURE;
-    if (pl->status == 0)
-      n.severity = NOTIF_OKAY;
-    else if (pl->status == 1)
-      n.severity = NOTIF_WARNING;
-
-    strncpy (n.message, buffer, sizeof (n.message));
-    n.message[sizeof (n.message) - 1] = '\0';
-
-    n.time = time (NULL);
-
-    strncpy (n.host, hostname_g, sizeof (n.host));
-    n.host[sizeof (n.host) - 1] = '\0';
-
-    plugin_dispatch_notification (&n);
-  }
-
   pl->pid = 0;
 
   pthread_mutex_lock (&pl_lock);
@@ -662,8 +627,8 @@ static int exec_read (void) /* {{{ */
     pthread_t t;
     pthread_attr_t attr;
 
-    /* Only execute `normal' and `nagios' style executables here. */
-    if ((pl->flags & (PL_NAGIOS_PLUGIN | PL_NORMAL)) == 0)
+    /* Only execute `normal' style executables here. */
+    if ((pl->flags & PL_NORMAL) == 0)
       continue;
 
     pthread_mutex_lock (&pl_lock);