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

FreeBSD Manual Pages

  
 
  

home | help
SYMUX(8)		    System Manager's Manual		      SYMUX(8)

NAME
       symux --	symon stream multiplexer

SYNOPSIS
       symux [-dltv] [-f filename]

DESCRIPTION
       symon(8)	 is  a	lightweight  system  monitor  that measures cpu, load,
       filesystem, interface, disk, memory, pf,	pf queues, mbuf, proc and sen-
       sor statistics every 5 seconds. This information	 is  then  spooled  to
       symux for further processing.

       symon(8)	 has been designed to inflict minimal performance and security
       impact on the system it monitors.  symux	has performance	impact propor-
       tional to the amount of streams	it  needs  to  manage.	Ideally	 symux
       should  live  on	 a  different  system  and  collect  data from several
       symon(8)	instances in a LAN.  symux stores the incoming streams in .rrd
       files and distributes the information to	connected listeners. Listeners
       can connect to symux on a tcp port and receive incoming symon(8)	trans-
       missions	decoded	into ascii.

       symux needs no specific privileges besides  being  able	to  open  it's
       ports and the rrd files.	It should be run as nobody.

       The options:

       -d      Stop symux from becoming	a daemon and show debug	information on
	       stdout.	Use  this setting to find hosts	or specific statistics
	       that do get sent, but are ignored due to	configuration.

       -f filename
	       Read configuration from filename	instead	of /etc/symux.conf.

       -l      List rrd	files found in active configuration.

       -t      Test configuration file and exit.

       -v      Show version.

CONFIGURATION
       symux obtains configuration data	from /etc/symux.conf.  The  configura-
       tion file contains one mux stanza that defines on what host address and
       port  symux  should  listen  to for incoming monitored data. There is a
       source section for every	host that is to	be monitored. The source  sec-
       tion  defines  what  data to accept and where to	write that data	to. In
       the case	that a source is  of  another  address	family	than  the  mux
       stanza,	i.e.  source  =	 ipv6  with  mux  = ipv4, a listen port	of the
       sources'	family is opened using the  unspecified	 address.  Whitespace,
       newlines	and text behind	'#' are	ignored. The format in BNF:

	     stmt	  = mux-stmt | source-stmt
	     mux-stmt	  = "mux" host [ port ]
	     host	  = ip4addr | ip6addr |	hostname
	     port	  = [ "port" | "," ] portnumber
	     source-stmt  = "source" host "{"
			    accept-stmts
			    [ write-stmts ]
			    [ datadir-stmt ] "}"
	     accept-stmts = accept-stmt	[accept-stmts]
	     accept-stmt  = "accept" "{" resources "}"
	     resources	  = resource [ version ] ["(" argument ")"]
			    [ ","|" " resources	]
	     resource	  = "cpu" | "cpuiow" | "debug" | "df" |	"flukso" |
			    "if" | "io"	| "load" | "mbuf" | "mem" | "pf" |
			    "pfq" | "proc" | "sensor" |	"smart"
	     version	  = number
	     argument	  = number | interfacename | diskname
	     datadir-stmt = "datadir" dirname
	     write-stmts  = write-stmt [write-stmts]
	     write-stmt	  = "write" resource "in" filename

       Note that

       port    in the mux-stmt specifies the port-number for both the udp port
	       (incoming  symon(8) traffic) and	the tcp	port for incoming lis-
	       teners.

       version
	       is needed to distinguish	between	the same type  of  information
	       (i.e.   io  )  coming from different versions of	OpenBSD. If no
	       version number is supplied, the latest will be assumed.

       datadir
	       will guess filenames for	all accepted  streams.	 write	state-
	       ments always take precendence over a datadir statement.

EXAMPLE
       Here is an example symux.conf that listens to udp port 2100 on lo0, and
       accepts	  cpu,	 memory,   pf,	 interfaces   xl0/de0/lo0/wi0,	 disks
       wd[0-3]/cd[0-1],	disk free blocks of three  partition  streams  from  a
       symon(8)	on localhost.  symux will also listen on tcp port 2100 for in-
       coming listeners.

	     mux 127.0.0.1 2100
	     source 127.0.0.1 {
		 accept	{ cpu(0), mem, pf,
			  if(xl0), if(de0),
			  if(lo0), if(wi0),
			  io(wd0), io(wd1), io(wd2),
			  io(wd3), io(cd0), io(cd1),
			  df(sd0a), df(sd0d), df(sd0e) }

		 datadir "/var/www/symon/rrds/localhost"
	     }

LISTENERS
       symux offers received symon(8) data to other programs via tcp. An exam-
       ple of a	listener session:

	     nexus:~/project/symon$ telnet 10.0.0.1 2100
	     Trying 10.0.0.1...
	     Connected to 10.0.0.1.
	     Escape character is '^]'.

	     10.0.0.1;mem::1077662160:7630848:53850112:469417984:0:25600;cpu:0:
	     1077662160:0.00:0.00:0.30:0.20:99.50;io:wd0:1077662160:2074:12759:
	     0:30736384:131780608;
	     10.0.0.2;mbuf::1077658247:138:74:0:0:41:0:23:0:90:360:868352:25:0:
	     0:0;pf::1077658247:700930123:535398451:0:352:1107229:706391:119833
	     9:4:0:0:2:3:29:4109383:83291:83262:980325:0:1:6:0:0;mem::107765824
	     7:79155200:131956736:391430144:0:536739840;cpu:0:1077658247:0.50:0
	     552:0;if:lo0:1077658247:147104:147104:45868177:45868177:0:0:0:0:0:
	     0;if:xl0:1077658247:284267:452077:150620236:273265863:372:89478:0:
	     0:0:0;if:de0:1077658247:1813721:1197722:729054136:568900227:101:2:
	     0:0:198:0;

	     ^]
	     telnet> close
	     Connection	closed.

       The   format   is   symon-version   :  symon-host-ip  :	stream-name  :
       stream-argument : timestamp : data

       Data formats:

       cpu     Time spent in ( user, nice, system, interrupt,  idle  ).	 Total
	       time is 100, data is offered with precision 2.

       cpuiow  Time  spent in (	user, nice, system, interrupt, idle, iowait ).
	       Total time is 100, data is offered with precision 2.

       debug   Kernel variables	debug0 to debug19. ( debug0 : ... : debug19 ).
	       Values are 32 bit unsigned integers.

       df      Disk free statistics ( blocks : bfree : bavail :	files :	 ffree
	       :  syncwrites : asyncwrites ). Values are 64 bit	unsigned inte-
	       gers.

       load    Load averages for the last 1, 5,	and 15 minutes ( load1,	load5,
	       load15 ). Data is offered with prec ision 2 and	a  maximum  of
	       655.

       if      Alias for if2. See below.

       if1     Pre  OpenBSD  4.3 interface counters ( packets_in, packets_out,
	       bytes_in, bytes_out, multicasts_in, multicasts_out,  errors_in,
	       errors_out, collisions, drops ).	Values are 32 bit unsigned in-
	       tegers.

       if2     Interface  counters  (  ipackets, opackets, ibytes, obytes, im-
	       casts, omcasts, ierrors,	oerrors, collisions, drops  ).	Values
	       are 64 bit unsigned integers.

       io      Alias for io2. See below.

       io1     Pre   OpenBSD  3.5  io/disk  counters  (	 total_transfers,  to-
	       tal_seeks, total_bytes ). Values	are 64 bit unsigned integers.

       io2     Io/disk counters	( rxfer, wxfer,	seeks, rbytes, wbytes).	Values
	       are 64 bit unsigned integers.

       mbuf    Mbuf statistics ( totmbufs : mt_data : mt_oobdata :  mt_control
	       :  mt_header : mt_ftable	: mt_soname : mt_soopts	: pgused : pg-
	       total : totmem :	totpct : m_drops : m_wait : m_drain ).

       mem     Alias for mem2. See below.

       mem1    Pre symon 2.78 memory counters (	real_active, real_total, free,
	       swap_used, swap_total ).	All values are	in  bytes  rounded  to
	       page boundaries.	Values are 32 bit unsigned integers.

       mem2    Memory  in ( real_active, real_total, free, swap_used, swap_to-
	       tal ). All values are in	bytes rounded to page boundaries. Val-
	       ues are 64 bit unsigned integers.

       pf      Packet  filter  statistics  (  bytes_v4_in  :  bytes_v4_out   :
	       bytes_v6_in   :	 bytes_v6_out  :  packets_v4_in_pass  :	 pack-
	       ets_v4_in_drop :	packets_v4_out_pass  :	packets_v4_out_drop  :
	       packets_v6_in_pass : packets_v6_in_drop : packets_v6_out_pass :
	       packets_v6_out_drop   :	 states_entries	 :  states_searches  :
	       states_inserts  :  states_removals  :  counters_match  :	 coun-
	       ters_badoffset  :  counters_fragment  :	counters_short : coun-
	       ters_normalize :	counters_memory	). Values are 64 bit  unsigned
	       integers.

       pfq     pf/altq	 queue	 statistics  (	sent_bytes  :  sent_packets  :
	       drop_bytes : drop_packets ). Values are 64 bit  unsigned	 inte-
	       gers.

       proc    Process statistics ( number : uticks : sticks : iticks :	cpusec
	       : cpupct	: procsz : rsssz ).

       sensor  Single sensor measurement offered with 7.6 precision. Value de-
	       pends on	sensor type.

       smart   SMART   attributes   (	read_error_rate:  reallocated_sectors:
	       spin_retries: air_flow_temp: temperature:  reallocations:  cur-
	       rent_pending: uncorrectables: soft_read_error_rate: g_sense_er-
	       ror_rate:  temperature2:	 free_fall_protection ). Values	depend
	       on drive	model and may change between models.

       flukso  Average pwr sensor value	offered	with 7.6 precision. Value is a
	       moving average and will depend on the  number  of  measurements
	       seen in a particular symon interval.

SIGNALS
       SIGHUP  Causes  symux  to read /etc/symux.conf or the file specified by
	       the -f flag.  symux will	keep the old configuration  if	errors
	       occured during parsing of the configuration file.

FILES
       /var/run/symux.pid
	       Contains	the program id of the symux daemon.

       /etc/symux.conf
	       symux system wide configuration file.

LEGACY FORMATS
       symux supports symon(8) clients that send

       pre OpenBSD 3.5 disk statistics.
	       These  streams  should  be identified as	io1(<disk>) instead of
	       io(<disk>) in /etc/symux.conf. Also note	that symon(8) measures
	       io1 or io2 depending on whether it was compiled on a host  that
	       supports	 version  1  or	 2.  The  rrd  datastructures of these
	       streams differ and there	is no easy way to change  an  io1  rrd
	       into an io2 rrd.

       pre symon 2.78 mem/if statistics.
	       These  streams  should  be  identified  as if1(<interface>) and
	       mem1() in /etc/symux.conf. symon	versions 2.78 and up will  al-
	       ways  report if2	and mem2 statistics. The rrd files for the old
	       and new probes are identical and	need not be changed.

       symux will  output  what	 version  of  information  it  is  offered  by
       symon(8)s on the	network	when started with the -d flag.

BUGS
       symux writes incoming data to rrd files "in process". An	rrdupdate on a
       somewhat	 stale	rrdfile	 -- with the last data from quite some time in
       the past	-- is a	very expensive operation.  This	 can  cause  symux  to
       lockup  while  rrdupdate	is updating the	rrd file.  symux will be unre-
       sponsive	during this process.

AUTHOR
       Willem Dijkstra <wpd@xs4all.nl>.	Daniel Hartmeier  helped  to  port  to
       big-endian  architectures.  Matthew Gream helped	to port	symon to other
       BSD platforms.

       Port contributors: Marc Balmer, Tito Dal	Canton,	Matthew	Gream,	Daniel
       Hartmeier,  Lars	 Kotthoff, Constantine A. Murenin, J. Martin Petersen,
       Fredrik Soderblom, Harm Schotanus and Martin van	der Werff.

SEE ALSO
       symon(8)

FreeBSD	Ports 14.quarterly	 April 4, 2012			      SYMUX(8)

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

home | help