Annotation of embedaddon/bmon/man/bmon.1, revision 1.1.1.1

1.1       misho       1: .TH bmon 1 "Feb 27, 2005" "Bandwidth Monitor"
                      2: .SH NAME
                      3: bmon \- Portable bandwidth monitor and rate estimator
                      4: .SH SYNOPSIS
                      5: .B bmon
                      6: [
                      7: .B \-awSchV
                      8: ] [
                      9: .B \-i
                     10: .I <mod>
                     11: ] [
                     12: .B \-o
                     13: .I <mod>
                     14: ] [
                     15: .B \-I
                     16: .I <mod>
                     17: ] [
                     18: .B \-O
                     19: .I <mod>
                     20: ]
                     21: .br
                     22: .ti +5
                     23: [
                     24: .B \-f
                     25: .I <path>
                     26: ] [
                     27: .B \-p
                     28: .I <policy>
                     29: ] [
                     30: .B \-r
                     31: .I <float>
                     32: ] [
                     33: .B \-s
                     34: .I <float>
                     35: ]
                     36: .br
                     37: .ti +5
                     38: [
                     39: .B \-A
                     40: .I <attrs>
                     41: ] [
                     42: .B \-N
                     43: .I <ngraphs>
                     44: ] [
                     45: .B \-u
                     46: .I <uid>
                     47: ] [
                     48: .B \-g
                     49: .I <gid>
                     50: ]
                     51: .br
                     52: .ti +5
                     53: [
                     54: .B \-R
                     55: .I <float>
                     56: ] [
                     57: .B \-H
                     58: .I <float>
                     59: ] [
                     60: .B \-L
                     61: .I <lifetime>
                     62: ] [
                     63: .B \-t
                     64: .I <path>
                     65: ]
                     66: .PP
                     67: 
                     68: .SH DESCRIPTION
                     69: bmon is a portable bandwidth monitor with multiple input
                     70: methods and output modes. A set of architecture specific
                     71: input modules provide the core with the listof interfaces
                     72: and their counters. The core stores this counters and
                     73: provides rate estimation including a history over the last
                     74: 60 seconds, minutes, hours and days to the output modules
                     75: which output them according to the configuration.
                     76: 
                     77: The set of counters is dependant on the input module and
                     78: may vary. Secondary input and output modules may be used
                     79: to collect counter values from other nodes or to write
                     80: HTML statistics. This input/output architecture minimizes
                     81: the work needed to port it to other architectures or
                     82: generate specific statistics.
                     83: 
                     84: .SH OPTIONS
                     85: .TP
                     86: .B \-i
                     87: Set primary \fIinput module\fR  and its configuration. The
                     88: argument "list" will result in a list of available input
                     89: modules. See INPUT MODULES for more details.
                     90: .TP
                     91: .B \-o
                     92: Set primary \fIoutput module\fR and its configuration. The
                     93: argument "list" will result in a list of available output
                     94: modules. See OUTPUT MODULES for more details.
                     95: .TP
                     96: .B \-I
                     97: Set secondary \fIinput modules\fR and their configuration.
                     98: The argument "list" will result in a list of available
                     99: secondary input modules.
                    100: .TP
                    101: .B \-O
                    102: Set secondary \fIoutput modules\fR and their configuration.
                    103: The argument "list" will result in a list of available
                    104: secondary output modules.
                    105: .TP
                    106: .B \-f
                    107: Set alternative configuration \fIpath\fR.
                    108: .TP
                    109: .B \-p
                    110: Set interface acceptance policy. See INTERFACE SELECTION for
                    111: more details.
                    112: .TP
                    113: .B \-a
                    114: Include interfaces even if their status is down.
                    115: .TP
                    116: .B \-A
                    117: Set attribute acceptance policy for attributes you whish to
                    118: collect historical data for. Equivalent to INTERFACE
                    119: SELECTION but without support for wildcards. Set to "all"
                    120: to maintain a history for all attributes.
                    121: .TP
                    122: .B \-r
                    123: Set reading \fIinterval\fR in which the input module will be
                    124: called. The default for this is one second. Should be less or
                    125: equal than 1 or a factor of it. Values not equal to 1 will
                    126: result in additional rate calculation with the read interval
                    127: as its unit.
                    128: .TP
                    129: .B \-R
                    130: Set rate \fIinterval\fR, i.e. the time period taken into account for the
                    131: rate calculation. The default value is 30 seconds.
                    132: .TP
                    133: .B \-H
                    134: Set the \fIhearbeat\fR while reading, specifies the variance
                    135: of incomming updates still acceptable. A factor of 0.1 specifies
                    136: a accepted variance of 10% before and after the expected timestamp.
                    137: .TP
                    138: .B \-L
                    139: Set the \fIlifetime\fRlifetime of a item, i.e. the time that
                    140: can pass until a item is deleted if it does not receive any updates.
                    141: The default is 30 seconds.
                    142: .TP
                    143: .B \-t
                    144: Set \fIpath\fR to the itemtab file.
                    145: .TP
                    146: .B \-c
                    147: Enable the use of SI unit schema.
                    148: .TP
                    149: .B \-N
                    150: Set number of graphs to draw, does not work for all outputs
                    151: methods.
                    152: .TP
                    153: .B \-s
                    154: Set sleeping \fIinterval\fR between calls to output short
                    155: interval callbacks for interactive output modules. Changing
                    156: this can affect the variance of read intervals.
                    157: .TP
                    158: .B \-w
                    159: Enable signal driven output intervals. The output module will
                    160: only be invoked upon receiving of SIGUSR1. Use bmon \-S \- to
                    161: send the signal to a running bmon instance in signal driven mode.
                    162: .TP
                    163: .B \-S
                    164: Send SIGUSR1 to a running bmon instance. This arugment takes
                    165: either \fI-\fR which will result in invoking ps to find bmon
                    166: instances or a \fIpid\fR directly.
                    167: .TP
                    168: .B \-u
                    169: Change user ID to \fIuid\fR after initialization.
                    170: .TP
                    171: .B \-g
                    172: Change group ID to \fIgid\fR after initialization.
                    173: .TP
                    174: .B \-h
                    175: Prints a help text and exits.
                    176: .TP
                    177: .B \-V
                    178: Prints the version and exits.
                    179: 
                    180: .SH INPUT MODULES
                    181: 
                    182: Input modules provide the core with interface statistics.
                    183: Two kinds of modules exist, primary and secondary input
                    184: modules. Their main difference is usage, there may be only
                    185: one primary module running at the same time while the number
                    186: of secondary input modules is not limited.
                    187: 
                    188: Every input module has a description, help text and list of
                    189: options available which can be seen by adding the option
                    190: "help" to the module options:
                    191: .TP
                    192: .RS
                    193: .NF
                    194: bmon \-i netlink:help
                    195: .FI
                    196: .RE
                    197: 
                    198: See MODULE CONFIGURATION for more details.
                    199: 
                    200: 
                    201: .SH PRIMARY INPUT MODULES
                    202: .TP
                    203: \fBnetlink\fR (Linux)
                    204: Requires libnl and uses an rtnetlink to collect interface
                    205: statistics. This input module also provides statistics about
                    206: traffic control qdiscs and classes. It is the preferred
                    207: input module on Linux.
                    208: 
                    209: .TP
                    210: \fBkstat\fR (SunOS)
                    211: Provides interface statistics on SunOS operating systems in
                    212: form of 32bit and 64bit counters. It is the preferred input
                    213: module on SunOS.
                    214: 
                    215: .TP
                    216: \fBsysctl\fR (BSD, Darwin)
                    217: Provides interface statistics on BSD and Darwin operating
                    218: systems. Is is the preferred input module on any BSD
                    219: alike system.
                    220: 
                    221: .TP
                    222: \fBproc\fR (Linux)
                    223: Provides interface statistics on Linux using the proc
                    224: filesystem (/proc/net/dev). It is one of the fallback
                    225: input modules on Linux and will work on nearly every
                    226: Linux kernel version.
                    227: 
                    228: .TP
                    229: \fBsysfs\fR (Linux)
                    230: Provides interface statistics on Linux using the sys
                    231: filesystem (/sys/class/net/). It may be used together
                    232: with newer Linux kernel versions but has no real
                    233: advantage over the netlink input module. It caches
                    234: open file descriptors to speed it up and is used
                    235: as fallback method.
                    236: 
                    237: .TP
                    238: \fBnetstat\fR (POSIX)
                    239: Provides limited interface statistics on almost any
                    240: POSIX operating system by invoking netstat \-i \-a. Only
                    241: use this as last hope.
                    242: 
                    243: .TP
                    244: \fBdummy\fR (any)
                    245: The purpose of the dummy input module is for testing. It
                    246: generates in either a static or randomized form.
                    247: 
                    248: .TP
                    249: \fBnulll\fR (any)
                    250: Does not provide any interface statistics and thus can be
                    251: used to disable local interface collection.
                    252: 
                    253: .SH SECONDARY INPUT MODULES
                    254: 
                    255: .TP
                    256: \fBdistribution\fR
                    257: Collects interface statistics from other nodes. It is the
                    258: counterpart of the secondary output module called distribution.
                    259: Its purpose is to distribute statistics in real time with
                    260: not too much bandwidth consumption itself. See DISTRIBUTION
                    261: for more details.
                    262: 
                    263: .SH OUTPUT MODULES
                    264: 
                    265: Output modules are feeded with rate estimations and graphs
                    266: from the core and print them out to the configured output
                    267: device. Two kinds of modules exist, primary and secondary
                    268: output modules. Their main difference is usage, there may be
                    269: only one primary module running at the same time while the number
                    270: of secondary output modules is not limited.
                    271: 
                    272: Every output module has a description, help text and list of
                    273: options available which can be seen by adding the option
                    274: "help" to the module options:
                    275: .TP
                    276: .RS
                    277: .NF
                    278: bmon \-o ascii:help
                    279: .FI
                    280: .RE
                    281: 
                    282: See MODULE CONFIGURATION for more details.
                    283: 
                    284: .SH PRIMARY OUTPUT MODULES
                    285: 
                    286: .TP
                    287: \fBascii\fR
                    288: The ascii output modules prints out the diagrams and
                    289: lists to standard output. The output format is highly
                    290: configurable and suits as vmstat alike tool for interface
                    291: statistics.
                    292: 
                    293: .TP
                    294: \fBcurses\fR
                    295: Interactive curses user interface providing real time rate
                    296: estimations and graphs. The default view is a list of all
                    297: interfaces grouped per node. The graphical history diagram
                    298: and a list of detailed counters may be enabled/disable
                    299: during runtime. Press '?' while the UI is running to see
                    300: the quick reference.
                    301: 
                    302: .TP
                    303: \fBformat\fR
                    304: Formatable ascii output for scripts. Calls a drawing function
                    305: for every item per node and outputs according to the specified
                    306: format string. The format string consists of text support various
                    307: escaping sequences and placeholders in the form of $(placeholder).
                    308: 
                    309: .TP
                    310: \fBnull\fR
                    311: Disables primary output.
                    312: 
                    313: .SH SECONDARY OUTPUT MODULES
                    314: 
                    315: .TP
                    316: \fBhtml\fR
                    317: Writes all interface statistics and diagrams as HTML files including
                    318: a navigation menu for all nodes and their interfaces. The layout
                    319: can be easly changed by altering the stylesheet which will not be
                    320: overwritten.
                    321: 
                    322: .TP
                    323: \fBdistribution\fR (any)
                    324: Distributes all statistics over the network using an UDP based
                    325: statistic distribution protocol. The default configuration will
                    326: use the multicast address all\-nodes but it may also be configured
                    327: so send to a unicast address.
                    328: 
                    329: .TP
                    330: \fBrrd\fR (any)
                    331: Updates and creates RRD databases using librrd. Step, heartbeat
                    332: and archives can be freely configured.
                    333: 
                    334: .TP
                    335: \fBaudio\fR (any)
                    336: Outputs the currently selected attribute rate as MIDI
                    337: sequence.
                    338: 
                    339: .TP
                    340: \fBdb\fR (any)
                    341: Writes current rate estimations into a database for other tools
                    342: to pick up.
                    343: 
                    344: .TP
                    345: \fBxml_event\fR (any)
                    346: Writes a continious stream of XML objects containing the
                    347: counters to a standard output or into a file.
                    348: 
                    349: .TP
                    350: \fBxml_state\fR (any)
                    351: XML based state output, outputs counters as-is as XML
                    352: objects into a file. The file is overwritten in each
                    353: cycle and locked during this period.
                    354: 
                    355: .SH MODULE CONFIGURATION
                    356: 
                    357: ARGUMENT ::= modulename:OPTS[,modulename:OPTS[,...]]
                    358: .br
                    359: OPTS     ::= OPTION[;OPTION[;...]]
                    360: .br
                    361: OPTION   ::= type[=value]
                    362: 
                    363: If you specify multiple primrary input or output modules the
                    364: first reported to be working module will be used.
                    365: 
                    366: If you specify multiple secondary input or output modules all
                    367: of them will get invoked.
                    368: 
                    369: .SH DISTRIBUTION
                    370: 
                    371: Statistic distribution is a powerful method to spread the statistic
                    372: all over the network and make the available on every machine. The
                    373: advantage over web based statistic overviews and multi terminal
                    374: remote shell based solutions is its nearly realtime accuracy while
                    375: being lightweight and not polluting the network too much. The protocol
                    376: is UDP based and thus not reliable and optmized on size.
                    377: 
                    378: See include/bmon/distribution.h for the protocol specification.
                    379: 
                    380: .SH DIAGRAM TYPES
                    381: 
                    382: You will find the following diagram types being used by all output
                    383: modules in some form:
                    384: 
                    385: .TP
                    386: \fBlist\fR
                    387: A list of interfaces including their byte and packets rate (bps/pps).
                    388: 
                    389: .TP
                    390: \fBgraphical history diagram \fR
                    391: A graph showing the history of a counter over the last 60 (read interval/
                    392: seconds/minutes/hours/days). The outer left column is the most recent
                    393: rate while the outer right column is the most outdated. The preferred
                    394: diagram to impress co\-workers.
                    395: 
                    396: .TP
                    397: \fBdetailed\fR
                    398: Detailed counters such as error counters or other attributes assigned
                    399: to this interface. The list of attributes may very depending on the
                    400: input module and architecture of the host OS.
                    401: 
                    402: .SH INTERFACE SELECTION
                    403: 
                    404: SELECTION ::= NAME[,NAME[,...]]
                    405: .br
                    406: NAME      ::= [!]interface
                    407: 
                    408: The interface name may contain the character '*' which will act as a wildcard and represents any
                    409: number of any character type, i.e. eth*, h*0, ...
                    410: 
                    411: .TP
                    412: Examples:
                    413: .RS
                    414: .NF
                    415: lo,eth0,eth1
                    416: .FI
                    417: .RE
                    418: .RS
                    419: .NF
                    420: eth*,!eth0
                    421: .FI
                    422: .RE
                    423: 
                    424: .SH CONFIGURATION FILE
                    425: 
                    426: Bmon will try and read configuration data from the following
                    427: files in the specified order: /etc/bmon.conf, $HOME/.bmonrc.
                    428: 
                    429: None of the above files will be read if the path to the
                    430: configuration file was specified using the \-f option.
                    431: 
                    432: Configuration possibilities:
                    433: 
                    434: \fBinput\fR \fI<module configuration>\fR
                    435: .br
                    436: .ti +7
                    437: Specify primary input module (\-i), see INPUT MODULES.
                    438: 
                    439: \fBsecondary_input\fR \fI<module configuration>\fR
                    440: .br
                    441: .ti +7
                    442: Specify secondary input modules (\-I), see INPUT MODULES.
                    443: 
                    444: \fBoutput\fR \fI<module configuration>\fR
                    445: .br
                    446: .ti +7
                    447: Specify primary output module (\-o), see OUTPUT MODULES.
                    448: 
                    449: \fBsecondary_output\fB \fI<module configuration>\fR
                    450: .br
                    451: .ti +7
                    452: Specify secondary output modules (\-O), see OUTPUT MODULES.
                    453: 
                    454: \fBpolicy\fB \fI<policy>\fR
                    455: .br
                    456: .ti +7
                    457: Set interface acceptance policy (\-p), see INTERFACE SELECTION.
                    458: 
                    459: \fBread_interval\fB \fI<interval>\fR
                    460: .br
                    461: .ti +7
                    462: Set reading interval in which the input module will be called
                    463: (-r).
                    464: 
                    465: \fBsleep_time\fB \fI<interval>\fR
                    466: .br
                    467: .ti +7
                    468: Set sleeping interval between calls to output short interval
                    469: callbacks for interactive output modules. (\-s)
                    470: 
                    471: \fBshow_all\fR
                    472: .br
                    473: .ti +7
                    474: Include interface even if their status is down. (\-a)
                    475: 
                    476: \fBuse_si\fR
                    477: .br
                    478: .ti +7
                    479: Use SI metric system. (\-c)
                    480: 
                    481: \fBnr_graphs\fR \fI<num>\fR
                    482: .br
                    483: .ti +7
                    484: Set number of graphs to draw, does not work for all outputs methods. (\-N)
                    485: 
                    486: \fBitemtab\fR \fI<path>\fR
                    487: .br
                    488: .ti +7
                    489: Path to itemtab. (\-t)
                    490: 
                    491: \fBheartbeat_factor\fR \fI<factor 0..1>\fR
                    492: .br
                    493: .ti +7
                    494: Set heartbeat factor
                    495: 
                    496: \fBrate_interval\fR \fI<interval>\fR
                    497: .br
                    498: .ti +7
                    499: Set rate interval, i.e. the time period taken into account for the
                    500: rate calculation. (\-R)
                    501: 
                    502: \fBlifetime\fR \fI<seconds>\fR
                    503: .br
                    504: .ti +7
                    505: Set lifetime of a item, i.e. the time that can pass until a
                    506: item is deleted if it does not receive any updates. (\-L)
                    507: 
                    508: \fBinclude\fR \fI<file>\fR
                    509: .br
                    510: .ti +7
                    511: Include \fIfile\fR and read it as configuration file.
                    512: 
                    513: \fBColor layouts\fR
                    514: .br
                    515: .ti +7
                    516: See COLOR LAYOUTS.
                    517: 
                    518: \fBBindings\fR
                    519: .br
                    520: .ti +7
                    521: See BIND INTERFACE.
                    522: 
                    523: 
                    524: .SH COLOR LAYOUTS
                    525: 
                    526: The layout is used to specify the look'n'feel of the curses
                    527: output module. The color "default" represents the terminal
                    528: color which can be used to keep the background transparent
                    529: for transparent terminals.
                    530: 
                    531: .LP
                    532: .B Colors:
                    533: default, black, red, green, yellow, blue, magenta, cyan, white
                    534: .LP
                    535: .B Flags:
                    536: reverse
                    537: .LP
                    538: .B Layouts:
                    539: Default, Statusbar, Header, List, Selected, 
                    540: 
                    541: Prototype:
                    542: .br
                    543: .ti +7
                    544: \fBLayout\fR \fI<name>\fR \fI<foreground>\fR \fI<background>\fR \fI<flags>\fR
                    545: 
                    546: Example:
                    547: .br
                    548: .ti +7
                    549: Layout Statusbar red black reverse
                    550: 
                    551: Feel free to submit patches extending the configurability using layouts.
                    552: 
                    553: .SH BIND INTERFACE
                    554: 
                    555: The bind interface can be used to bind not yet assigned keys to
                    556: shell scripts. It currently works in the curses output module but
                    557: it might be ported to other output modules in the future. The interface
                    558: name of the currently selected interface is provided to the script
                    559: via the first argument.
                    560: 
                    561: Prototype:
                    562: .br
                    563: .ti +7
                    564: \fBBind\fR \fI<key>\fR \fI<Executable>\fR
                    565: 
                    566: Example:
                    567: .br
                    568: .ti +7
                    569: bind D /sbin/intf_down.sh
                    570: 
                    571: .SH EXAMPLES
                    572: 
                    573: To run bmon in curses mode monitoring the interfaces eth0
                    574: and eth1:
                    575: .RS
                    576: .NF
                    577: \fBbmon \-i eth0,eth1 \-o curses\fP
                    578: .FI
                    579: .RE
                    580: 
                    581: To run bmon in acii mode printing the detailed diagram
                    582: with fixed y\-axis unit:
                    583: .RS
                    584: .NF
                    585: \fBbmon \-o 'ascii:diagram=detailed;ynit=kb'\fP
                    586: .FI
                    587: .RE
                    588: 
                    589: To run bmon in signal driven mode drawing the graphical
                    590: diagram with customized drawing characters and fixed x
                    591: and y axis:
                    592: .RS
                    593: .NF
                    594: \fBbmon \-s \-o 'ascii:diagram=graph;fgchar=#;bgcar=_;xunit=min'\fP
                    595: .FI
                    596: .RE
                    597: 
                    598: To run bmon with no primrary output (daemon) but
                    599: distribute the statistic over the network:
                    600: .RS
                    601: .NF
                    602: \fBbmon \-o null \-O distribution\fP
                    603: .FI
                    604: .RE
                    605: 
                    606: To run bmon collecting local and remote statistics and
                    607: show it in curses mode:
                    608: .RS
                    609: .NF
                    610: \fBbmon \-I distribution:multicast \-o curses\fP
                    611: .FI
                    612: .RE
                    613: 
                    614: To build a relay and collect remote statistic and send
                    615: them to a unicast address while ignoring while
                    616: the destination is unreachable:
                    617: .RS
                    618: .NF
                    619: \fBbmon \-i null \-I distribution:multicast \-o null \-O 'distribution:ip=10.0.0.1;errignore;forward'\fP
                    620: .FI
                    621: .RE
                    622: 
                    623: To collect local statistics and those from the whole
                    624: network and generate a HTML page out of the those
                    625: statistics:
                    626: .RS
                    627: .NF
                    628: \fBbmon \-I distribution:multicast \-o null \-O html:path=/var/istats/\fP
                    629: .FI
                    630: .RE
                    631: 
                    632: .SH KNOWN ISSUES
                    633: The curses output modules doesn't work properly on NetBSD < 2.0 because getch() cannot be set to be non\-blocking.
                    634: 
                    635: sysctl input segfaults on sparc64 OpenBSD.
                    636: 
                    637: .SH FILES
                    638: /etc/bmon.conf
                    639: .br
                    640: $HOME/.bmonrc
                    641: 
                    642: 
                    643: .SH SEE ALSO
                    644: ifconfig(8), kstat(1M), netlink(3)
                    645: 
                    646: .SH AUTHOR
                    647: Thomas Graf <tgraf@suug.ch>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>