Configuration
The Metrics Service is made of many components all of which are optional. If no components are added the Metrics Service will act as a black-hole with MetricsUpdates writing, but no call-backs or queries returned from the MetricsService (reader). The following types of components can be configured. The specific components are listed in the following sections along with their function, insertion point and module (jarfile).
Metrics Servlets
The following components allow viewing of Metrics through servlets. (See Using Metrics Servlets). The components are in core.jar and should be loaded into the NodeAgent.
- org.cougaar.core.qos.metrics.MetricsServletPlugin
- Loads the Metric Service Servlets, which are: AgentLoadServlet, RemoteAgentServlet, NodeResourcesServlet, MetricQueryServlet, MetricsWriterServlet,
CPU Load Components
The following components collect metrics about the CPU consumption of Agents. The components are in core.jar and should be loaded into the NodeAgent.
- org.cougaar.core.thread.AgentLoadSensorPlugin
- Sensor for measuring the CPU load for Agents.
- org.cougaar.core.thread.AgentLoadRatePlugin
- Converts the raw CPU sensor measurements into Metrics
- org.cougaar.core.thread.TopPlugin
- servlet for viewing running threads (TopServlet). Also loads the RogueThreadDetector.
Message Load Components
The following component collect metrics about the message traffic into and out of Agents. The components are in the mtsstd.jar and should be load at the insertion point Node.AgentManager.Agent.MessageTransport.Component
- org.cougaar.core.qos.metrics.AgentStatusAspect
- Sensor for Measuring the message flow into and out of Agents (This Aspect is always loaded in the Base template)
- org.cougaar.mts.std.StatisticsAspect
- Sensor for measuring the size of messages
- org.cougaar.core.qos.metrics.AgentStatusRatePlugin
- Converts the raw message sensor measurements into Metrics
- org.cougaar.mts.std.StatisticsPlugin
- Servlet for viewing raw message sensor counters, which include: StatisticsServlet, AgentRemoteStatusServlet, AgentLocalStatusServlet
Agent Mobility and QuO Components
The following Components pull the topology service to detect when Nodes and Agents move. Also, they offer a service for QuO Sysconds to subscribe to Metrics. They should be loaded in the insertion point Node.AgentManager.Agent.MetricsServices.Component
- org.cougaar.core.qos.rss.AgentHostUpdaterComponent
- Periodically polls the topology service and updates the internal Metric Service models to keep the Host-Node-Agent containment hierarchy up to date.
- org.cougaar.lib.mquo.SyscondFactory
- Factory for creating QuO Sysconds which track Metrics.
Persistence Size Components
The follow component measure the memory consumption of Agents. These components are in the core.jar and need to be loaded into every Agent.
- org.cougaar.core.qos.metrics.PersistenceAdapterPlugin
- Sensor for measuring the Agent persistence size.
Gossip Components
The gossip subsystem disseminates metrics between nodes. (See Using Metrics Servlets). The components are in qos.jar
- org.cougaar.core.qos.gossip.GossipAspect
- Piggybacks Metric requests and Metric Values on messages. Load at the insertion point Node.AgentManager.Agent.MessageTransport.Component
- org.cougaar.core.qos.gossip.SimpleGossipQualifierComponent
- Limits which Metrics should be requested or value forwarded Load at the insertion point Node.AgentManager.Agent.MessageTransport.Component
- org.cougaar.core.qos.gossip.GossipFeedComponent
- Metrics Service Feed for updating metrics from remote Nodes. Load at the insertion point Node.AgentManager.Agent.MetricService.Component
- org.cougaar.core.qos.gossip.GossipStatisticsServiceAspect
- Collects gossip overhead statistics Load at the insertion point Node.AgentManager.Agent.MessageTransport.Component
- org.cougaar.core.qos.gossip.GossipStatisticsPlugin
- Load Servlet for viewing Gossip overhead statistics. Load at the insertion point Node.AgentManager.Agent.MessageTransport.Component
RSS-Resource Status Service
The Metric Service need access to configuration files to define the expected network and host capacity. The Metrics-Sites.conf file is required and the Metrics-Defaults.conf file is optional. Example files are in the overlay at …/configs/rss or source in in qos/configs/rss. Also, the data feed with the name “sites” has the special purpose of defining the sites themselves (i.e.subnet masks), so other Metrics Keys should not be put in this conf file.
The cougaarconfig: url scheme means the files are on the cougaar config path. Otherwise, the url is normal and will just down load the conf files. Putting the configuration files on a web server is useful for a cougaar applications which run at a site with a complicated topology. Also, Network and Host management systems can update the files with real data. (Note the conf files are down-loaded only once at startup)
- org.cougaar.core.qos.rss.ConfigFinderDataFeedComponent
- Two Components should be loaded with the following parameters
"name=sites","url=cougaarconfig:Metrics-Sites.conf"
"name=hosts","url=cougaarconfig:Metrics-Defaults.conf"The insertion point is Node.AgentManager.Agent.MetricsServices.Component
Acme Scripts
Acme rule scripts are available for loading the Metrics Service. The rules are in directory qos/csmart/config/rules/metrics. The rule.txtlist the recommended rules to load the standard Metrics Service. Addition rules must be added in order to measure the length of messages (serialization) and setup the network/host configuration files (rss). The rule directories have the following purpose:
sensors- Adds servlets that look at the raw sensors. These rules do not load any of the Metrics Service runtime, so they should not impact performance. These rules are useful for debugging and we recommended that they should alway be loaded.
basic- Loads the basic Metrics Service which includes some potentially high overhead components, such as the Agent-to-Agent traffic matrix and Gossip.
serialization- The basic MTS serialization rule for measures message length. This rule conflicts with other serialization rules, such as bandwidth measurement, security, and compression. These other aspects must be loaded in a specific order which is explained in the
metrics-only-serialization.ruleOnly one serialization rule should be loaded. rss- Supplying network and host configuration data to the RSS is very network specific. Each test site has its own rules which tap into the local sources of system information. If you are running at the TIC, you should load the rules in
rss/tic
