The agent structure is defined in a JSON definition. This definition is then registered towards the AIMS API. Once registered it can be viewed under "settings -> custom agents".


Example of JSON definition:

{
  "id": "aims.int-sys",
  "majorVersion": 1,
  "minorVersion": 0,
  "name": "AIMS Internal System",
  "metadata": {
    "nodeTypes": [ {
        "name": "aims.int-sys.server",
        "displayName": "AIMS Server",
        "eventTypes": [ "aims.int-sys.server-error" ],
        "propertyTypes": [ "aims.int-sys.server-os" ],
        "statTypes": [ "aims.int-sys.server-cpu" ],
        "statuses": [ "aims.int-sys.unavailable", "aims.core.stopped", "aims.core.started" ]
    } ],
    "nodePropertyTypes": [ {
        "name": "aims.int-sys.server-os",
        "displayName": "operating system"
    } ],
    "nodeStatuses": [ {
        "name": "aims.int-sys.unavailable",
        "displayName": "unavailable",
        "type": "stopped"
    } ],
    "eventTypes": [ {
        "name": "aims.int-sys.server-error",
        "displayName": "AIMS server error"
    } ],
    "statTypeGroups": [ {
        "name": "aims.int-sys.server-stats",
        "displayName": "AIMS server statistics"
    } ],
    "statTypes": [ {
        "name": "aims.int-sys.server-cpu",
        "displayName": "CPU load",
        "group": "aims.int-sys.server-stats",
        "aggregation": "avg",
        "nodeAggregation": "avg",
        "unitType": "percent"
    } ]
  }
}


  • "id" - a unique identifier for your agent. Consists of two parts: <company-name>.<agent-name>. Length is 5-16 characters
  • "majorVersion" - optional, primarely used for updating the version of an agent. If major / minor is dropped, it will default to major=1, minor=0
  • "minorVersion - optional, primarely used for updating the version of an agent
  • "name" - a name for your agent
  • "metadata" - the section that defines the agent structure
    •  "nodeTypes" - define the nodes for the agent. An agent can have multiple nodes
      • "name" - name of node
      • "displayName" - displayed name of the node
      • "eventTypes" - eventtypes for the node, see section below
      • "propertyTypes" -properties connected to the node, see section below
      • "statTypes" - what statistic types belong to the node, see section below
      • "statuses" - what statuses can the node have, see section below
    • "nodePropertyTypes" - a node can have multiple properties
      • "name" - name of the property
      • "displayName" - displayed name of the property
    • "nodeStatuses" - a node can have multiple statuses
      • "name" - name of status
      • "displayName" - displayed name of status
      • "type" - running / paused / stopped / undefined. 
    • "eventTypes" - what type of events are associated with the node
      • "name" - name of event
      • "displayName" - displayed name of event
    • "statTypeGroups" - statTypes can be grouped in statTypeGroups
      • "name" - name of statTypeGroup
      • "displayName" - displayed name of statTypeGroup
    • "statTypes" - time series based statistics provided by the agent. Multiple statTypes can be defined
      • "name" - name of statType
      • "displayName" - displayed name of statType
      • "group" - statTypeGroup
      • "aggregation" - avg / sum / max. The aggregation done by the agent
      • "nodeAggregation" - avg / sum / max. The aggregation done by the node
      • "unitType" - quantity / percent / milliseconds / bytes / hertz