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}