...
- The schema is checked into svn.
Todo / info to fill out:
- Management cmd line client
- Management data formats
- Gateway defintions for SNMP, JMX etc..
...
- Must operate from a formally defined management schema.
- Must natively use the AMQP protocol and its type system.
- Must support the following operations
- SET operation on configurable (persistent) aspects of objects
- GET operation on all aspects of objects
- METHOD invocation on schema-defined object-specific methods
- Distribution of unsolicited periodic updates of instrumentation data
- Data updates shall carry an accurate sample timestamp for rate calculation
- Updates shall carry object create/delete timestamps.
- Transient objects shall be fully accounted for via updates. Note that short-lived transient objects may come and go within a single update interval. All of the information pertaining to such an object must be captured and transmitted.
- Distribution of unsolicited event and/or alert indications (schema defined)
- Role-based access control at object, operation, and method granularity
- End-to-end encryption and signing of management content
- Schema must be self-describing so the management client need not have prior knowledge of the management model of the system under management.
Definitions of Terms
- Must be extensible to support the management of objects beyond the AMQP component set. This allows AMQP to be used as a general-purpose management protocol.
Architectural Framework
There are two primary interfaces defined in the management architecture:
- The Management Console Interface is used by management clients (CLIs, GUIs, console servers, etc.) to remotely access management data.
- The Extension Interface is used by software components (not necessarily related to the AMQP infrastructure) to provide access to their managed objects.
No Format |
---|
+---------+ +---------+ +---------+
| | | | | |
| CLI/GUI | | Console |<======>| CLI/GUI |
| | | Server | | |
+---------+ | | +---------+
^ +---------+
| ^
| |
v v
+---------------------------------+
| |
| Managed AMQP Infrastructure |
| |
+---------------------------------+
^
|
v
+------------+
| |-+
| Management | |-+
| Extensions | | |
| | | |
+------------+ | |
+------------+ |
+------------+
|
Both management interfaces are based on the AMQP protocol and its type system.
Definitions of Terms
class | A type definition for a manageable object. |
package | A grouping of class definitions that are related to a single software component. The package concept is used to extend the management schema beyond just the AMQP software components. |
object | Also "manageable object". An instantiation of a class. An object represents a physical or logical component in the core function of the system under management. |
configuration element | A typed member of a class which represents a configurable attribute of the class. Configurable attributes are persistent on the system under management (i.e. they are inherent to the system or are stored in a configuration file on the system). |
instrumentation element | A typed member of a class which represents |
class | A type definition for a manageable object. |
object | Also "manageable object". An instantiation of a class. An object represents a physical or logical component in the core function of the system under management. |
configuration element | A typed member of a class which represents a configurable attribute of the class. Configurable attributes are persistent on the system under management (i.e. they are inherent to the system or are stored in a configuration file on the system). |
instrumentation element | A typed member of a class which represents an instrumentation attribute of the class. Instrumentation elements are typically counters or state values. |
method | A member of a class which represents a callable procedure on an object of the class. Methods may have an arbitrary set of typed arguments and may supply a return code. Methods typically have side effects on the associated object. |
event | A member of a class which represents the occurence of an event of interest within the system under management. |
management agent | A software component built into the broker that handles management traffic and distributes management data. |
...
- Command keys have the structure:
method.<package>.<class>.<method>
where<package>
is the namespace in which the <class> name is valid,<class>
is the name of the class as defined in the schema, and<method>
is one of "get", "set", or a schema-defined class-specific method name.
- Unsolicited keys have the structure:
mgmt.<type>.<package>.<class>.<severity>
where<type>
is one of "schema", "config", "inst", or "event",<package>
is the namespace in which the <class> name is valid, and<class>
is the name of the class as defined in the schemaschema.<severity>
is relevant for events only. It is one of "critical", "error", "warning", or "info".
In both cases, the content of the message (i.e. method arguments, element values, etc.) is carried in the body segment of the message.
...
The opcode field identifies the operation represented by the message:
opcode | description |
'S' | This message contains a schema record which describes the full schema description for a single object class |
'C' | This message contains a content record. Content records contain the values of all configuration or instrumentation elements in an object. Such records are broadcast on a periodic interval if 1) a change has been made in the value of one of the elements, or 2) if a new management client has bound a queue to the management exchange. |
'M'S' | This message contains a schema record which describes the full schema description for a single object classmethod request |
'CR' | This message contains a method reply |
The class field identifies the type of content data in a content record.
...
'M'
...
This message contains a method request
...
'R'
...
This message contains a method reply
If the opcode is not 'C', this field must be set to zero.
class | description |
'C' | Configuration content |
'I' | Instrumentation content |
Schema Messages
Schema messages are published periodically if 1) the first instance of the object class has been created, or 2) a new management client has bound a queue to the management exchange. A schema message contains all schema-related data for a single object class.
No Format |
---|
+-----+-----+-----+-----+-----+-----+
| 'A' | 'M' | '0' | '1' | 'S' | 0 |
+-----+-----+-----+-----+-----+-----+----------------------+
| packageName (short string) | |
The class field identifies the type of content data in a content record. If the opcode is not 'C', this field must be set to zero.
class | description |
'C' | Configuration content |
'I' | Instrumentation content |
Schema Messages
Schema messages are published periodically if 1) the first instance of the object class has been created, or 2) a new management client has bound a queue to the management exchange. A schema message contains all schema-related data for a single object class.
No Format |
---|
+-------------------------+-------------+-----+-----+-----+-----+ | 'A' | 'M' | '0' | '1' | 'S' | 0 className (short string) | +--------+--------+-----+-----+-----+-----+----------------------+ | classNameschema-hash (short string)bin128) | +-----------+-----------+-----------+-----------+----------+ | configCnt | instCnt | methodCnt | eventCnt | +-----------+-----------+-----------+-----------+----------------------------+ | configCnt config-element records | +----------------------------------------------------------------------------+ | instCnt instrumentation-element records | +----------------------------------------------------------------------------+ | methodCnt method records | +----------------------------------------------------------------------------+ | eventCnt event records | +----------------------------------------------------------------------------+ |
...
Argument field tables contain the following fields:
field name | method | event | optional | description | ||
name | yes | yes | no | Argument name | ||
type | yes | yes | no | Type code for the argument | ||
dir | yes | no | yes | Direction code for method arguments | ||
unit | yes | yes | yes | Units for numeric values (i.e. seconds, bytes, etc.) | ||
min | yes | no | yes | Minimum value for numerics | ||
max | yes | no | yes | Maximum value for numerics | ||
maxlen | ||||||
field name | method | event | optional | description | ||
name | yes | yes | no | Argument name | yes | Maximum length for strings |
desctype | yes | yes | no | yes | Description of Type code for the argument | |
dirdefault | yes | no | yes | Direction code for method arguments | ||
unit | yes | yes | yes | Units for numeric values (i.e. seconds, bytes, etc.) | ||
min | yes | no | yes | Minimum value for numerics | ||
max | yes | no | yes | Maximum value for numerics | ||
maxlen | yes | no | yes | Maximum length for strings | ||
desc | yes | yes | yes | Description of the argument | ||
default | yes | no | yes | Default value for the argument |
type codes are numerics with the following values:
value | type |
1 | uint8 |
2 | uint16 |
3 | uint32 |
4 | uint64 |
6 | short string |
7 | long string |
access codes are numerics with the following values:
value | access |
1 | Read-Create access |
2 | Read-Write access |
3 | Read-Only access |
direction codes are numerics with the following values:
value | direction |
1 | Input (from client to broker) |
2 | Output (from broker to client) |
3 | IO (bidirectional) |
Configuration and Instrumentation Content Messages
Content messages are published when changes are made to the values of content or instrumentation elements or when new management clients bind a queue to the management exchange.
Default value for the argument |
type codes are numerics with the following values:
value | type |
1 | uint8 |
2 | uint16 |
3 | uint32 |
4 | uint64 |
6 | short string |
7 | long string |
access codes are numerics with the following values:
value | access |
1 | Read-Create access |
2 | Read-Write access |
3 | Read-Only access |
direction codes are numerics with the following values:
value | direction |
1 | Input (from client to broker) |
2 | Output (from broker to client) |
3 | IO (bidirectional) |
Configuration and Instrumentation Content Messages
Content messages are published when changes are made to the values of content or instrumentation elements or when new management clients bind a queue to the management exchange.
No Format |
---|
+-----+-----+-----+-----+-----+-----+
| 'A' | 'M' | '0' | '1' | 'C' | cls |
+-----+-----+-----+-----+-----+-----+----------------------+
| packageName (short string) | |
No Format |
+-----------+---------------------------+-----+-----+-----+-----+ | 'A' | 'M' | '0' | '1' | 'C' | cls className (short string) | +---------+-------+-----+-----+-----+-----+----------------------+ | class classNamehash (short string)bin128) | +-----+-----+-----+-----+-----+-----+-----+-----+----------+ | timestamp of current sample (datetime) | +-----+-----+-----+-----+-----+-----+-----+-----+ | time object was created (datetime) | +-----+-----+-----+-----+-----+-----+-----+-----+ | time object was deleted (datetime) | +-----+-----+-----+-----+-----+-----+-----+-----+ | objectId (uint64) | +-----+-----+-----+-----+-----+-----+-----+-----+------------------------+ | config/inst values (in schema order) | +------------------------------------------------------------------------+ |
...