From the requirements-gathering exercise I know that the system is going to be centralized—that is, there will be multiple agents reporting to the master monitoring server. Therefore at least two distinct components are needed: a monitoring server and a monitoring agent. The server process is going to communicate with the clients and retrieve the performance and status data from them.
Now there is a question of how smart the agent needs to be. Does it need to know how to perform all checks by itself? Or should it have a pluggable architecture whereby the agent itself only acts as a controller component? I am going to choose the architecture in which the agent relies on plug-ins to perform all checks. The agent process itself will only proxy the server requests to the plug-in code and pass the results back. I'll call these plug-ins the "sensors," because that is effectively what they are doing—measuring the system's parameters.
Figure 9-1 represents a high-level component interaction diagram. The following sections provide a more detailed design description of each component.
Was this article helpful?