TIBCO Hawk

TIBCO Hawk is a software product that allows monitoring and management of distributed computing applications. A very scalable product, it is notable for the number of these rule-based software agents deployed (organisations and in total) claimed by the vendor:

Details
TIBCO Hawk provides a distributed agent-based extensible system which allows the monitoring and control of system and application software components. There are 3 main components:
 * Hawk Agents, which embed MicroAgents that in turn communicate with application and system services and processes, or external interfaces
 * Hawk Display, which provides a user interface displaying the community of agents (and thereby systems)
 * Hawk Event Service, which provides the ability to store and retrieve events via a database.

Hawk Agents include a non-inferencing, event-driven rule engine to filter events and send alerts to Hawk Display(s). The rulebases for these can be updated and distributed from a Hawk Display while the agents are operating.

Hawk is designed to be customisable to suit specific enterprise requirements. For example, custom MicroAgents can be used to monitor custom applications though an Application Monitoring Interface (API) using C, C++, or Java. These allow for dynamic discovery on startup, application heartbeat testing, and so on.

Hawk Microagents and adapters are either included or available as options: they either turn system information or events into Hawk events, or turn Hawk events into system actions. These include:
 * Process MicroAgent: allows processes to be monitored (e.g. number of processes and resources used)
 * Filesystem MicroAgent: allows file systems to be monitored (e.g. space available)
 * System microagent: system resources to be monitored (e.g. CPU and memory utilization)
 * Logfile MicroAgent: allows system logs to be read
 * Custom MicroAgent: allows scripts to be executed on a system and return some values
 * Database MicroAgent: monitor the system tables of database engines via JDBC
 * JVM MicroAgent: monitors JVM resources (e.g. memory and thread information)
 * JMX MicroAgent: monitors JMX information
 * SNMP MicroAgent: communicates with SNMP services