Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GDNSD-PLUGIN-EXTMON(8)		      gdnsd		  GDNSD-PLUGIN-EXTMON(8)

NAME
     gdnsd-plugin-extmon - gdnsd plugin for monitoring via external commands

SYNOPSIS
     Example plugin config:

       service_types => {
	 wget_ssl_index => {
	   plugin => "extmon",
	   timeout => 15,
	   interval => 30,
	   cmd => ["/usr/bin/wget", "-T", "3", "-q", "-O", "/dev/null", "https://%%ITEM%%/index.html"]
	 },
	 svc_alwaysok => {
	   plugin => "extmon",
	   timeout => 1,
	   direct => true,
	   cmd => ["/bin/sh", "-c", "exit 0"]
	 },
	 svc_alwaysfail_via_timeout => {
	   plugin => "extmon",
	   timeout => 2,
	   max_proc => 10,
	   cmd => ["/bin/sh", "-c", "sleep 5"]
	 }
       }

       # optional, if installed path confuses the daemon...
       plugins => {
	 extmon => { helper_path => "/usr/local/libexec/gdnsd/gdnsd_extmon_helper" }
       }

DESCRIPTION
     gdnsd-plugin-extmon allows you to configure external commands to provide
     monitoring feedback to the dynamic address plugins.

CONFIGURATION - GLOBAL
     These are plugin-global settings which are configured within "plugins => {
     extmon => { ... } }".

     helper_path
	 String pathname, optional.

	 Normally, this plugin will successfully locate its helper binary
	 gdnsd_extmon_helper in the installation libexec directory at /usr/lo-
	 cal/libexec/gdnsd/gdnsd_extmon_helper.  If for some reason it can't do
	 so, e.g. due to a relocated installation, you can set an explicit full
	 pathname to the helper here.

     helper_failure_action
	 String, either "stasis" or "kill_daemon".  Default is "stasis".

	 This configures the behavior of the plugin if the helper process
	 gdnsd_extmon_helper unexpectedly dies, which prevents the gathering of
	 any further legitimate monitoring state updates.

	 Regardless of this setting, there will be at least one syslog message
	 indicating the failure.

	 If set to "stasis", all monitored states are left as-is with no further
	 updates.  The downside is that unless someone notices the syslog mes-
	 sage, this failure mode is hard to notice.

	 If set to "kill_daemon", the whole gdnsd daemon will fail fatally.

CONFIGURATION - PER-SERVICE-TYPE
     The universal, plugin-neutral service_type parameters all apply in their
     usual sense: "up_thresh", "ok_thresh", "down_thresh", "interval", "plugin",
     and "timeout".  See gdnsd.config(5) for basic information on these.  The
     following are specific to this "extmon" plugin:

     cmd Array of one or more strings, required.

	 This sets the command and arguments to execute for the monitoring
	 check.  The array is passed directly to execv() for execution (with
	 re-use of the first element as the pathname to execute).  If you need
	 to use shell facilities, start the argument list with e.g. ""/bin/sh",
	 "-c", ...".

	 All argument strings are searched for the magic string "%%ITEM%%"
	 (which can appear multiple times per argument).  Everywhere this magic
	 string is found, the IP address or CNAME text of the resource being
	 monitored will be substituted in its place.

	 The command must exit with an exit value of zero for success or
	 non-zero for failure.

     direct
	 Boolean, default false.

	 Normally extmon's results are processed by the same anti-flap state ma-
	 chine used for traditional monitors like the HTTP and TCP monitoring
	 plugins.  This means the results are subject to the various thresholds
	 ("ok_thresh", "up_thresh", "down_thresh") and it may take some time for
	 a new persistent state to actually affect resolution.

	 If "direct" is set to "true", the results of extmon's monitoring are
	 applied directly and immediately as the final state of the monitored
	 resources after every monitoring check.  If your command flaps back and
	 forther between success and failure on every run, so will the internal
	 state and so will the resulting changes in resolution.  Useful if
	 extmon is actually gathering state from an external complex monitoring
	 environment that has already taken care of things like anti-flap mea-
	 sures.

     max_proc
	 Integer, default 0 (unlimited).

	 The maximum number of concurrent processes to spawn.

	 This sets the limit on the number of concurrent commands that will be
	 run.  If the limit is exceeded, excess commands are rescheduled for 0.1
	 seconds later. After a few runs, the processes will be spread out
	 enough to run without running into the limit.

EXECUTION ENVIRONMENT
     The plugin launches a helper binary gdnsd_extmon_helper during daemon
     startup, and this helper does the actual runtime command executions.  It
     manages the timeouts and intervals and feeds results back to the plugin
     over a pipe.  This communication is one-way at runtime (no daemon -> helper
     traffic) for security reasons (to help ensure that a compromised daemon
     can't easily leverage the helper to muck with the execution of the external
     commands).  This separation also prevents a class of functional and secu-
     rity bugs related to mixing runtime pthreads with routine forking to exec
     the child processes.

     The executed scripts will run with the same userid the daemon normally
     drops privileges to.

     The stdout, stdin, and stderr descriptors will usually be set to /dev/null.
     stdout and stderr may be open to the current tty if the main daemon was
     started in foreground debugging mode via "-f start".

SEE ALSO
     gdnsd.config(5), gdnsd(8)

     The gdnsd manual.

COPYRIGHT AND LICENSE
     Copyright (c) 2012 Brandon L Black <blblack@gmail.com>

     This file is part of gdnsd.

     gdnsd 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, either version 3 of the License, or (at your option) any later
     version.

     gdnsd is distributed in the hope that it will be useful, but WITHOUT ANY
     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
     FOR A PARTICULAR PURPOSE.	See the GNU General Public License for more de-
     tails.

     You should have received a copy of the GNU General Public License along
     with gdnsd.  If not, see <http://www.gnu.org/licenses/>.

gdnsd 3.8.0			   2026-08-01		  GDNSD-PLUGIN-EXTMON(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gdnsd-plugin-extmon&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help