symux.8 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. .\" -*- nroff -*-
  2. .\"
  3. .\" Copyright (c) 2001-2012 Willem Dijkstra
  4. .\" All rights reserved.
  5. .\"
  6. .\" Redistribution and use in source and binary forms, with or without
  7. .\" modification, are permitted provided that the following conditions
  8. .\" are met:
  9. .\"
  10. .\" - Redistributions of source code must retain the above copyright
  11. .\" notice, this list of conditions and the following disclaimer.
  12. .\" - Redistributions in binary form must reproduce the above
  13. .\" copyright notice, this list of conditions and the following
  14. .\" disclaimer in the documentation and/or other materials provided
  15. .\" with the distribution.
  16. .\"
  17. .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  18. .\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  19. .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  20. .\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  21. .\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  22. .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  23. .\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  24. .\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  25. .\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  26. .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  27. .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  28. .\" POSSIBILITY OF SUCH DAMAGE.
  29. .\"
  30. .Dd April 4, 2012
  31. .Dt SYMUX 8
  32. .Os
  33. .Sh NAME
  34. .Nm symux
  35. .Nd symon stream multiplexer
  36. .Sh SYNOPSIS
  37. .Nm
  38. .Op Fl dltv
  39. .Op Fl f Ar filename
  40. .Pp
  41. .Sh DESCRIPTION
  42. .Xr symon 8
  43. is a lightweight system monitor that measures cpu, load, filesystem, interface, disk,
  44. memory, pf, pf queues, mbuf, proc and sensor statistics every 5 seconds. This
  45. information is then spooled to
  46. .Nm
  47. for further processing.
  48. .Pp
  49. .Xr symon 8
  50. has been designed to inflict minimal performance and security impact on
  51. the system it monitors.
  52. .Nm
  53. has performance impact proportional to the amount of streams it needs to
  54. manage. Ideally
  55. .Nm
  56. should live on a different system and collect data from several
  57. .Xr symon 8
  58. instances in a LAN.
  59. .Nm
  60. stores the incoming streams in .rrd files and distributes the
  61. information to connected listeners. Listeners can connect to
  62. .Nm
  63. on a tcp port and receive incoming
  64. .Xr symon 8
  65. transmissions decoded into ascii.
  66. .Lp
  67. .Nm
  68. needs no specific privileges besides being able to open it's ports and
  69. the rrd files. It should be run as
  70. .Ar "nobody" .
  71. .Lp
  72. The options:
  73. .Bl -tag -width Ds
  74. .It Fl d
  75. Stop
  76. .Nm
  77. from becoming a daemon and show debug information on stdout. Use this setting
  78. to find hosts or specific statistics that do get sent, but are ignored due to
  79. configuration.
  80. .It Fl f Ar filename
  81. Read configuration from
  82. .Ar filename
  83. instead of
  84. .Pa /etc/symux.conf .
  85. .It Fl l
  86. List rrd files found in active configuration.
  87. .It Fl t
  88. Test configuration file and exit.
  89. .It Fl v
  90. Show version.
  91. .El
  92. .Sh CONFIGURATION
  93. .Nm
  94. obtains configuration data from
  95. .Pa /etc/symux.conf .
  96. The configuration file contains one mux stanza that defines on what host
  97. address and port
  98. .Nm
  99. should listen to for incoming monitored data. There is a source section
  100. for every host that is to be monitored. The source section defines what
  101. data to accept and where to write that data to. In the case that a
  102. source is of another address family than the mux stanza, i.e. source =
  103. ipv6 with mux = ipv4, a listen port of the sources' family is opened
  104. using the unspecified address. Whitespace, newlines and text behind '#'
  105. are ignored. The format in BNF:
  106. .Pp
  107. .Bd -literal -offset indent -compact
  108. stmt = mux-stmt | source-stmt
  109. mux-stmt = "mux" host [ port ]
  110. host = ip4addr | ip6addr | hostname
  111. port = [ "port" | "," ] portnumber
  112. source-stmt = "source" host "{"
  113. accept-stmts
  114. [ write-stmts ]
  115. [ datadir-stmt ] "}"
  116. accept-stmts = accept-stmt [accept-stmts]
  117. accept-stmt = "accept" "{" resources "}"
  118. resources = resource [ version ] ["(" argument ")"]
  119. [ ","|" " resources ]
  120. resource = "cpu" | "cpuiow" | "debug" | "df" | "flukso" |
  121. "if" | "io" | "load" | "mbuf" | "mem" | "pf" |
  122. "pfq" | "proc" | "sensor" | "smart"
  123. version = number
  124. argument = number | interfacename | diskname
  125. datadir-stmt = "datadir" dirname
  126. write-stmts = write-stmt [write-stmts]
  127. write-stmt = "write" resource "in" filename
  128. .Ed
  129. .Pp
  130. Note that
  131. .Bl -tag -width Ds
  132. .It Va port
  133. in the
  134. .Va mux-stmt
  135. specifies the port-number for both the udp port (incoming
  136. .Xr symon 8
  137. traffic) and the tcp port for incoming listeners.
  138. .It Va version
  139. is needed to distinguish between the same type of information (i.e.
  140. .Va io
  141. ) coming from different versions of OpenBSD. If no version number is
  142. supplied, the latest will be assumed.
  143. .It Va datadir
  144. will guess filenames for all accepted streams.
  145. .Va write
  146. statements always take precendence over a
  147. .Va datadir
  148. statement.
  149. .El
  150. .Sh EXAMPLE
  151. Here is an example
  152. .Ar symux.conf
  153. that listens to udp port 2100 on lo0, and accepts cpu, memory, pf,
  154. interfaces xl0/de0/lo0/wi0, disks wd[0-3]/cd[0-1], disk free blocks
  155. of three partition streams from a
  156. .Xr symon 8
  157. on localhost.
  158. .Nm
  159. will also listen on tcp port 2100 for incoming listeners.
  160. .Pp
  161. .Bd -literal -offset indent -compact
  162. mux 127.0.0.1 2100
  163. source 127.0.0.1 {
  164. accept { cpu(0), mem, pf,
  165. if(xl0), if(de0),
  166. if(lo0), if(wi0),
  167. io(wd0), io(wd1), io(wd2),
  168. io(wd3), io(cd0), io(cd1),
  169. df(sd0a), df(sd0d), df(sd0e) }
  170. .Pp
  171. datadir "/var/www/symon/rrds/localhost"
  172. }
  173. .Ed
  174. .Sh LISTENERS
  175. .Nm
  176. offers received
  177. .Xr symon 8
  178. data to other programs via tcp. An example of a listener session:
  179. .Pp
  180. .Bd -literal -offset indent -compact
  181. nexus:~/project/symon$ telnet 10.0.0.1 2100
  182. Trying 10.0.0.1...
  183. Connected to 10.0.0.1.
  184. Escape character is '^]'.
  185. .Pp
  186. 10.0.0.1;mem::1077662160:7630848:53850112:469417984:0:25600;cpu:0:
  187. 1077662160:0.00:0.00:0.30:0.20:99.50;io:wd0:1077662160:2074:12759:
  188. 0:30736384:131780608;
  189. 10.0.0.2;mbuf::1077658247:138:74:0:0:41:0:23:0:90:360:868352:25:0:
  190. 0:0;pf::1077658247:700930123:535398451:0:352:1107229:706391:119833
  191. 9:4:0:0:2:3:29:4109383:83291:83262:980325:0:1:6:0:0;mem::107765824
  192. 7:79155200:131956736:391430144:0:536739840;cpu:0:1077658247:0.50:0
  193. \.00:0.00:0.90:98.60;proc:httpd:1077658247:9:216:172:8:3:0.00:14999
  194. 552:0;if:lo0:1077658247:147104:147104:45868177:45868177:0:0:0:0:0:
  195. 0;if:xl0:1077658247:284267:452077:150620236:273265863:372:89478:0:
  196. 0:0:0;if:de0:1077658247:1813721:1197722:729054136:568900227:101:2:
  197. 0:0:198:0;
  198. .Pp
  199. ^]
  200. telnet> close
  201. Connection closed.
  202. .Ed
  203. .Lp
  204. The format is
  205. .Va symon-version
  206. :
  207. .Va symon-host-ip
  208. :
  209. .Va stream-name
  210. :
  211. .Va stream-argument
  212. :
  213. .Va timestamp
  214. :
  215. .Va data
  216. .Lp
  217. Data formats:
  218. .Bl -tag -width Ds
  219. .It cpu
  220. Time spent in ( user, nice, system, interrupt, idle ). Total time is 100, data
  221. is offered with precision 2.
  222. .It cpuiow
  223. Time spent in ( user, nice, system, interrupt, idle, iowait ). Total time is
  224. 100, data is offered with precision 2.
  225. .It debug
  226. Kernel variables debug0 to debug19. ( debug0 : ... : debug19 ). Values are 32
  227. bit unsigned integers.
  228. .It df
  229. Disk free statistics ( blocks : bfree : bavail : files :
  230. ffree : syncwrites : asyncwrites ). Values are 64 bit unsigned integers.
  231. .It load
  232. Load averages for the last 1, 5, and 15 minutes ( load1, load5, load15 ). Data is offered with prec ision
  233. 2 and a maximum of 655.
  234. .It if
  235. Alias for if2. See below.
  236. .It if1
  237. Pre OpenBSD 4.3 interface counters ( packets_in, packets_out, bytes_in,
  238. bytes_out, multicasts_in, multicasts_out, errors_in, errors_out, collisions,
  239. drops ). Values are 32 bit unsigned integers.
  240. .It if2
  241. Interface counters ( ipackets, opackets, ibytes, obytes,
  242. imcasts, omcasts, ierrors, oerrors, collisions, drops
  243. ). Values are 64 bit unsigned integers.
  244. .It io
  245. Alias for io2. See below.
  246. .It io1
  247. Pre OpenBSD 3.5 io/disk counters ( total_transfers, total_seeks, total_bytes
  248. ). Values are 64 bit unsigned integers.
  249. .It io2
  250. Io/disk counters ( rxfer, wxfer, seeks, rbytes,
  251. wbytes). Values are 64 bit unsigned integers.
  252. .It mbuf
  253. Mbuf statistics ( totmbufs : mt_data : mt_oobdata : mt_control :
  254. mt_header : mt_ftable : mt_soname : mt_soopts : pgused : pgtotal :
  255. totmem : totpct : m_drops : m_wait : m_drain ).
  256. .It mem
  257. Alias for mem2. See below.
  258. .It mem1
  259. Pre symon 2.78 memory counters ( real_active, real_total, free, swap_used,
  260. swap_total ). All values are in bytes rounded to page boundaries. Values are 32
  261. bit unsigned integers.
  262. .It mem2
  263. Memory in ( real_active, real_total, free, swap_used, swap_total ). All values
  264. are in bytes rounded to page boundaries. Values are 64 bit unsigned integers.
  265. .It pf
  266. Packet filter statistics ( bytes_v4_in : bytes_v4_out : bytes_v6_in :
  267. bytes_v6_out : packets_v4_in_pass : packets_v4_in_drop : packets_v4_out_pass :
  268. packets_v4_out_drop : packets_v6_in_pass : packets_v6_in_drop :
  269. packets_v6_out_pass : packets_v6_out_drop : states_entries : states_searches :
  270. states_inserts : states_removals : counters_match : counters_badoffset :
  271. counters_fragment : counters_short : counters_normalize : counters_memory
  272. ). Values are 64 bit unsigned integers.
  273. .It pfq
  274. pf/altq queue statistics ( sent_bytes : sent_packets : drop_bytes :
  275. drop_packets ). Values are 64 bit unsigned integers.
  276. .It proc
  277. Process statistics ( number : uticks : sticks : iticks : cpusec : cpupct :
  278. procsz : rsssz ).
  279. .It sensor
  280. Single sensor measurement offered with 7.6 precision. Value depends on sensor
  281. type.
  282. .It smart
  283. SMART attributes ( read_error_rate: reallocated_sectors: spin_retries:
  284. air_flow_temp: temperature: reallocations: current_pending: uncorrectables:
  285. soft_read_error_rate: g_sense_error_rate: temperature2: free_fall_protection
  286. ). Values depend on drive model and may change between models.
  287. .It flukso
  288. Average pwr sensor value offered with 7.6 precision. Value is a moving average
  289. and will depend on the number of measurements seen in a particular symon
  290. interval.
  291. .El
  292. .Sh SIGNALS
  293. .Bl -tag -width Ds
  294. .It SIGHUP
  295. Causes
  296. .Nm
  297. to read
  298. .Pa /etc/symux.conf
  299. or the file specified by the
  300. .Fl f
  301. flag.
  302. .Nm
  303. will keep the old configuration if errors occured during parsing of the
  304. configuration file.
  305. .El
  306. .Sh FILES
  307. .Bl -tag -width Ds
  308. .It Pa /var/run/symux.pid
  309. Contains the program id of the
  310. .Nm
  311. daemon.
  312. .It Pa /etc/symux.conf
  313. .Nm
  314. system wide configuration file.
  315. .El
  316. .Sh LEGACY FORMATS
  317. .Nm
  318. supports symon(8) clients that send
  319. .Bl -tag -width Ds
  320. .It pre OpenBSD 3.5 disk statistics.
  321. These streams should be identified as io1(<disk>) instead of
  322. io(<disk>) in
  323. .Pa /etc/symux.conf.
  324. Also note that symon(8) measures io1 or io2 depending on whether it was
  325. compiled on a host that supports version 1 or 2. The rrd datastructures of
  326. these streams differ and there is no easy way to change an io1 rrd into an io2
  327. rrd.
  328. .It pre symon 2.78 mem/if statistics.
  329. These streams should be identified as if1(<interface>) and mem1() in
  330. .Pa /etc/symux.conf.
  331. symon versions 2.78 and up will always report if2 and mem2 statistics. The rrd
  332. files for the old and new probes are identical and need not be changed.
  333. .El
  334. .Pp
  335. .Nm
  336. will output what version of information it is offered by symon(8)s on
  337. the network when started with the
  338. .Va -d
  339. flag.
  340. .Sh BUGS
  341. .Nm
  342. writes incoming data to rrd files "in process". An rrdupdate on a somewhat
  343. stale rrdfile -- with the last data from quite some time in the past -- is a
  344. very expensive operation. This can cause
  345. .Nm
  346. to lockup while rrdupdate is updating the rrd file.
  347. .Nm
  348. will be unresponsive during this process.
  349. .Sh AUTHOR
  350. Willem Dijkstra <wpd@xs4all.nl>. \%Daniel \%Hartmeier helped to port to big-endian
  351. architectures. \%Matthew \%Gream helped to port symon to other BSD platforms.
  352. .Pp
  353. Port contributors: \%Marc \%Balmer, \%Tito \%Dal \%Canton, \%Matthew
  354. \%Gream, \%Daniel \%Hartmeier, \%Lars \%Kotthoff, \%Constantine
  355. A. \%Murenin, J. \%Martin \%Petersen, \%Fredrik \%Soderblom, \%Harm
  356. \%Schotanus and \%Martin van der \%Werff.
  357. .Sh SEE ALSO
  358. .Xr symon 8