XYMOND(8)
π NAME π
xymond β the master network daemon for a Xymon server. Yes bestie, this is XYMOND(8), from the System Manager's Manual, and it's the whole personality of your monitoring setup π
β¨ SYNOPSIS β¨
xymond [options]
π¦ DESCRIPTION π¦
So. xymond is the core daemon in the Xymon Monitor. It's built to handle monitoring of a large number of hosts, and it is obsessed with being a high-speed, low-overhead implementation of a Big Brother compatible server. Main character energy fr fr.
The way it pulls that off? xymond stores all information about the state of the monitored systems in memory, instead of storing it in the host filesystem. Iconic, no cap.
A bunch of plug-ins can be enabled to level up the basic operation β like, there's a set of plugins provided to implement persistent storage in a way that's compatible with the Big Brother daemon. But even with those plugins enabled, xymond still performs much faster than the standard bbd daemon. It ate, honestly.
xymond is normally started and controlled by the xymonlaunch(8) tool, so the command you use to invoke xymond should be chilling in the tasks.cfg file.
πΈ OPTIONS πΈ
--hosts=FILENAMEβ tells it where the Xymonhosts.cfgfile lives. This is used to check if incoming status messages refer to known hosts; depending on the--ghostsoption, messages for unknown hosts may be dropped. If you skip this option, the default path used is set by theHOSTSCFGenvironment variable.--checkpoint-file=FILENAMEβ at regular intervals,xymonddumps its entire internal state into this check-point file. It also dumps it whenxymondterminates, or when it receives aSIGUSR1signal. π«Ά--checkpoint-interval=Nβ the interval (in seconds) between dumps to the check-point file. Default is900seconds (15 minutes).--restart=FILENAMEβ points at an existing file holding a previously generatedxymondcheckpoint. On startup,xymondrestores its internal state from the info in this file. Fun fact: you can use the same filename for--checkpoint-fileand--restart. Recycling queen π--ghosts={allow|drop|log|match}β how to handle status messages from unknown hosts. Let's break it down:allowaccepts all status messages, regardless of whether the host is known in thehosts.cfgfile or not.dropsilently ignores reports from unknown hosts.logworks likedrop, but logs the event in thexymondoutput file.matchtries to match the name of the unknown host reporting against the known names by ignoring any domain-names β if a match is found, then a temporary client alias is automatically generated.
The default is log.
--no-purpleβ stops status messages from going purple when they're no longer valid. Unlike the standardbbddaemon, purple-handling is done byxymond. Not us forgetting, it's a choice.--merge-clientlocalβ theclient-local.cfg(5)file holds client-configuration that can be found by matching a client against its hostname, its classname, or the name of the OS the client is running. By defaultxymondreturns one entry from the file to the client, looking for a hostname, classname or OS match (in that order). This option makesxymondmerge all matching entries together into one and return all of it to the client.--listen=IP[:PORT]β the IP-address and port wherexymondlistens for incoming connections. By default,xymondlistens on IP0.0.0.0(i.e. all IP-addresses available on the host) and port1984.--lqueue=NUMBERβ the listen-queue for incoming connections. You don't need to tune this unless you have a very busyxymonddaemon.--no-bfqβ tellsxymondto NOT use the local messagequeue interface for receiving status-updates fromxymond_clientandxymonnet.--daemonβxymondis normally started byxymonlaunch(8). If you do not want to usexymonlaunch, you can startxymondwith this option; it will then detach from the terminal and keep running as a background task. Solo era π--timeout=Nβ the timeout used for incoming connections. If a status has not been received more thanNseconds after the connection was accepted, then the connection is dropped and any status message is discarded. Default:10seconds.--flap-count=Nβ track theNlatest status-changes for flap-detection. See the--flap-secondsoption too. To disable flap-checks globally, setNto zero. To disable for a specific host, you must use thenoflapoption inhosts.cfg(5). Default:5.--flap-seconds=Nβ if a status changes more thanflap-counttimes inNseconds or less, then it is considered to be flapping. In that case, the status is locked at the most severe level until the flapping stops. The history information is not updated after the flapping is detected.
β οΈ NOTE: if this is set higher than the default value, you should also use the--flap-countoption to ensure that enough status-changes are stored for flap detection to work. Theflap-countsetting should be at least(N/300)-1β e.g. if you setflap-secondsto3600(1 hour), thenflap-countshould be at least(3600/300)-1, i.e.11.
Default: 1800 seconds (30 minutes).
--delay-red=Nβ sets the delay before a red status causes a change in the web page display.--delay-yellow=Nβ sets the delay before a yellow status causes a change in the web page display.- Usually this is controlled on a per-host basis via the
delayredanddelayyellowsettings inhosts.cfg(5), but these options let you set a default value for the delays. The valueNis in minutes. Default:0minutes (no delay). - Note: since most tests only execute once every 5 minutes, it will usually not make sense to set
Nto anything but a multiple of 5. π§
- Usually this is controlled on a per-host basis via the
--env=FILENAMEβ loads the content ofFILENAMEas environment settings before startingxymond. This is mostly used when running as a stand-alone daemon; ifxymondis started byxymonlaunch, the environment settings are controlled by thexymonlaunchtasks.cfgfile.--pidfile=FILENAMEβxymondwrites the process-ID it's running with to this file. This is for use in automated startup scripts. The default file is$XYMONSERVERLOGS/xymond.pid.--log=FILENAMEβ redirect all output fromxymondtoFILENAME.--store-clientlogs[=[!]COLUMN]β determines which status columns can cause a client message to be broadcast to theCLICHGchannel. By default, no client messages are pushed to theCLICHGchannel. The tea:- If you specify this option with no parameter list, all status columns that go into an alert state will trigger the client data to be sent to the
CLICHGchannel. - If a parameter list is added to this option, only those status columns listed in the list will cause the client data to be sent to the
CLICHGchannel. - Several column names can be listed, separated by commas.
- If all columns are given as
!COLUMNNAME, then all status columns except those listed will cause the client data to be sent.
- If you specify this option with no parameter list, all status columns that go into an alert state will trigger the client data to be sent to the
--status-senders=IP[/MASK][,IP/MASK]β controls which hosts may sendstatus,combo,configandquerycommands toxymond.
By default, any host can send status-updates. If this option is used, then status-updates are accepted only if they are sent by one of the IP-addresses listed here, or if they are sent from the IP-address of the host that the updates pertains to (this is to allow Xymon clients to send in their own status updates, without having to list all clients here). So typically you will need to list your servers running network tests here.
The format of this option is a list of IP-addresses, optionally with a network mask in the form of the number of bits. E.g. if you want to accept status-updates from the host 172.16.10.2, you would use
--status-senders=172.16.10.2
whereas if you want to accept status updates from both 172.16.10.2 and from all of the hosts on the 10.0.2.* network (a 24-bit IP network), you would use
--status-senders=172.16.10.2,10.0.2.0/24
--maint-senders=IP[/MASK][,IP/MASK]β controls which hosts may send maintenance commands toxymond. Maintenance commands are theenable,disable,ackandnotescommands. Format of this option is as for the--status-sendersoption.
π¨ It is strongly recommended that you use this to restrict access to these commands, so that monitoring of a host cannot be disabled by a rogue user β e.g. to hide a system compromise from the monitoring system.
Note: if messages are sent through a proxy, the IP-address restrictions are of little use, since the messages will appear to originate from the proxy server address. It is therefore strongly recommended that you do NOT include the address of a server running xymonproxy in the list of allowed addresses.
--www-senders=IP[/MASK][,IP/MASK]β controls which hosts may send commands to retrieve the state ofxymond. These are thexymondlog,xymondboardandxymondxboardcommands, which are used byxymongen(1)andcombostatus(1)to retrieve the state of the Xymon system so they can generate the Xymon webpages. π
Note: if messages are sent through a proxy, the IP-address restrictions are of little use, since the messages will appear to originate from the proxy server address. It is therefore strongly recommended that you do NOT include the address of a server running xymonproxy in the list of allowed addresses.
--admin-senders=IP[/MASK][,IP/MASK]β controls which hosts may send administrative commands toxymond. These commands are thedropandrenamecommands. Access to these should be restricted, since they provide an un-authenticated means of completely disabling monitoring of a host, and can be used to remove all traces of e.g. a system compromise from the Xymon monitor. π
Note: if messages are sent through a proxy, the IP-address restrictions are of little use, since the messages will appear to originate from the proxy server address. It is therefore strongly recommended that you do NOT include the address of a server running xymonproxy in the list of allowed addresses.
okay bestie, we're back in the OPTIONS list β no recap, let's just keep it moving π
--no-downloadβ turns off the "download" command that clients can use to yank files off the Xymon server. ngl, letting randos download files can be a security risk, so this is your "absolutely not" button. π ββοΈ--ack-each-colorβ okay so by default, if you send an ACK for a yellow status, alerts stop while the status stays yellow or red. A glow-up from yellow to red does not re-enable alerts β that one ACK is covering all the non-green eras. With this option tho, an ACK is only valid for the color the status was when you sent it. So an ACK for yellow gets ignored if the status later turns red, but an ACK for red covers both yellow and red. π
Note: an ACK for a red status will clear any existing yellow acks. That means a long-lived yellow ack gets lost the moment you send a short-lived red ack. So alerts will restart when the red ack expires, even if the status has changed to yellow by then. it's giving consequences, bestie π
--ack-log=FILENAMEβ logs acknowledgements created on the Critical Systems page to FILENAME. NB: acknowledgements created by the Acknowledge Alert CGI are automatically written toacknowledge.login the Xymon server log directory. Alerts from the Critical Systems page can be pointed at that same log. π--debugβ enables debugging output. that's it, that's the tweet. π--dbghost=HOSTNAMEβ when you're troubleshooting one specific host and need to track its exact communications, this option makes xymond dump all traffic from that single host into the file"/tmp/xymond.dbg". very main character of that host, honestly. π΅οΈββοΈ
β¨ HOW ALERTS TRIGGER β¨
When a status arrives, xymond matches the old and new color against the "alert" colors (from the "ALERTCOLORS" setting) and the "OK" colors (from the "OKCOLORS" setting). The old and new color fall into one of three categories:
- OK: the color is one of the
"OK"colors (e.g."green"). π - ALERT: the color is one of the
"alert"colors (e.g."red"). π¨ - UNDECIDED: the color is neither an
"alert"color nor an"OK"color (e.g."yellow"). π€·ββοΈ
If the new status shows an ALERT state, then a message gets triggered to the xymond_alert(8) module. This might be a repeat of a previous alert, but xymond_alert(8) handles that internally, and only sends alert messages with the interval configured in alerts.cfg(5). no spam, just vibes. β¨
If the status goes from a not-OK state (ALERT or UNDECIDED) to OK, and there's a record of having been in an ALERT state previously, then a recovery message is triggered. π«Ά
The use of the OK, ALERT and UNDECIDED states makes it possible to avoid being flooded with alerts when a status flip-flops between e.g yellow and red, or green and yellow. it's literally there to protect your notifications from becoming a group chat. π₯
π CHANNELS π
A lot of the functionality in the Xymon server is delegated to "worker modules" that get fed various events from xymond via a "channel". Programs access a channel using IPC mechanisms β specifically, shared memory and semaphores β or by using an instance of the xymond_channel(8) intermediate program. xymond_channel enables access to a channel via a simple file I/O interface. π¦
A skeleton program for hooking into a xymond channel is provided as part of Xymon in the xymond_sample(8) program. yes, a starter pack. we love to see it. π
The following channels are provided by xymond:
- status β this channel is fed the contents of all incoming
"status"and"summary"messages. π₯ - stachg β this channel is fed information about tests that change status, i.e. the color of the status-log changes. π
- page β this channel is fed information about tests where the color changes between an alert color and a non-alert color. It also receives information about
"ack"messages. π - data β this channel is fed information about all
"data"messages. π - notes β this channel is fed information about all
"notes"messages. π - enadis β this channel is fed information about hosts or tests that are being disabled or enabled. π¦
- client β this channel is fed the contents of the client messages sent by Xymon clients installed on the monitored servers. π»
- clichg β this channel is fed the contents of a host client messages, whenever a status for that host goes red, yellow or purple. π
Information about the data stream passed on these channels is in the Xymon source-tree, see the "xymond/new-daemon.txt" file. iykyk, go read it bestie. π
π¨ SIGNALS π¨
SIGHUPβ re-read thehosts.cfgconfiguration file. πSIGUSR1β force an immediate dump of the checkpoint file. πΎ
π BUGS π
Timeout of incoming connections are not strictly enforced. The check for a timeout only triggers during the normal network handling loop, so a connection that should timeout after N seconds may persist until some activity happens on another (unrelated) connection. so yeah, a zombie connection can lowkey just linger. not me side-eyeing the network loop π
ποΈ FILES ποΈ
If ghost-handling is enabled via the "--ghosts" option, the hosts.cfg file is read to determine the names of all known hosts. π»
π SEE ALSO π
and that's the whole page, bestie β this was Xymon Version 4.3.30: 4 Sep 2019, aka XYMOND(8). go forth and daemon responsibly πβ¨π
π¦ where this page comes from
- debian bookworm: xymon 4.3.30-1+b2 Β· GPL-2.0-only WITH OpenSSL exception
- debian trixie: xymon 4.3.30-4 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu jammy: xymon 4.3.30-1build2 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu jammy: xymon 4.3.30-1ubuntu0.1 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu noble: xymon 4.3.30-2build3 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu noble: xymon 4.3.30-2ubuntu0.1 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu questing: xymon 4.3.30-4
- ubuntu resolute: xymon 4.3.30-5 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu stonking: xymon 4.3.30-6 Β· GPL-2.0-only WITH OpenSSL exception
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms