Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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:

  1. The Management Console Interface is used by management clients (CLIs, GUIs, console servers, etc.) to remotely access management data.
  2. 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)                                   |
        +------------------------------------------------------------------------+

...