On Fri, 31 May 2002, Nate Campi wrote:
> Is there any documentation on the Mon client/server protocol, or should
> I "use the source", as they say?
"use the source", but i just began a protocol writeup and included it
in the "doc" directory for future releases. the purpose and results of
the commands i've not written up yet. here's what i have:
$Id$
MON PROTOCOL
------------
The client/server protocol for mon works like this:
The server listens on TCP port 2583, which has been assigned by IANA.
In the following, a "line" is a sequence of ASCII text, terminated with
a newline (0A in hexadecimal).
A request submitted by the client is a single line. Only one request
per line is permitted. Any number of requests per session is permitted.
The client indicates the end of requests by sending a "quit" request.
The reply to a request is zero or more lines lines. The end of the
reply is terminated with a positive or negative acknowledgement line.
The positive acks match this regular expression:
^2[0-9][0-9] .*$
Negative acks match this expression:
^5[0-9][0-9] .*$
Characters trailing the leading integer are a comment which summarizes
the success or failure.
The actual value of the leading integer is not meaningful except to
indicate success (200-299) or failure (500-599).
An example session follows:
(client connects to port 2583)
Client: list state
Server: scheduler running
Server: 220 list state completed
Client: list xyzzy
Server: 520 unknown list command
Client: list watch
Server: group1 service1
Server: group1 service2
Server: group2 service1
Server: 220 list watch completed
Client: quit
Server: 220 quitting
(server and client terminate tcp session)
The following are the valid requests and replies implemented in
mon-0.99.2, as defined in the "client_command" routine. A command is
indicated by the word itself, required arguments are surrounded by {},
and optional arguments are surrounded by [].
quit
protid
login {user} {pass}
reset [stopped] [keepstate]
reload [auth]
clear timers {group} {service}
test monitor {group} {service}
test alert {group} {service} {retval} {period}
test startupalert {group} {service} {retval} {period}
test upalert {group} {service} {retval} {period}
test config
version
loadstate disabled
savestate disabled
savestate opstatus
term
stop
start
set maxkeep {num}
set {group} {service} {variable} {value}
get maxkeep
get {group} {service} {variable}
list descriptions
list group {group}
list opstatus
list opstatus {group,service} [group,service ...]
list disabled
list alerthist
list failures
list failurehist
list successes
list warnings
list pids
list watch
list state
list aliases
list aliasgroups
list deps
list dtlog
ack {group} {service} {comment}
disable watch {group}
disable service {group} {service}
disable host {host [host ...]}
enable watch {group}
enable service {group} {service}
enable host {host [host ...]}
servertime
checkauth {cmd}