By Michael Churchman August 9, 2016
Do you know what your server agents are doing right now? For that matter, do you know how many agents are at work on your server, or what they're supposed to be doing? Keeping track of server agents isn't always easy, but it's important. You need to know which agents are active, what they should be doing, and what they are doing—and you need to keep them under control. Whether you're a spymaster or a network administrator, it's important to keep each agent from getting in another's way—or worse yet, bringing down the entire system.
Agents: What and Why
What are server agents? They are applications that run automatically in the background, and are
dedicated to a narrowly defined set of tasks, such as analyzing log data, monitoring communication ports, and load-balancing. Server agents may be part of the operating system. They may be associated with specific utilities or applications, or they may be open-source programs installed to handle specific tasks. Here's a list of popular applications that have agents.
In many ways, agents are similar to the kind of background utilities which have been a standard part of computer operating systems for decades. What makes them distinctive is that they run on servers, handling server-level and network-wide tasks, and as a result, the server and the network can be heavily dependent on them.
Server agents aren't the only tools available for handling most of these tasks, of course. An agentless system includes applications which can push deployments, actively probe the system, and take care of many of the other tasks handled by agents. Agentless tools generally use fewer resources than agents, and they typically have a smaller footprint in terms of CPU and memory use. They may lack depth of functionality and the responsiveness and flexibility of agent-based tools.
Agent Problems are System Problems
There are good reasons for using server agents. There are also, unfortunately, some characteristic problems which can accompany the use of server agents:
- Competition for memory and CPU time. Individual agents may make very reasonable demands on memory and processor time, but the cumulative effects of multiple agents can have a serious impact on the system, particularly when (as is often the case) there is no coordination between competing demands.
- Reduced availability of other system resources and utilities. Whether an agent is simply monitoring system behavior or is actively making changes to parts of the system, it can temporarily reduce or slow down access to key resources, including databases, peripherals, and communication ports.
- Uncoordinated system changes. Each agent has its own agenda, which it typically follows in a very single-minded fashion. Individual agents can make changes to a system setting which conflict with the requirements of other applications. Taken to an extreme, this lack of coordination, along with the competition for resources, can even lock the system up entirely.
- Security vulnerabilities. Agents are often script-driven, and frequently have privileged access to sensitive system resources. This makes them tempting targets for attack, and it also means that it is important to have a system in place specifically to prevent attacks.
Keeping Your Agents in Line
If software developers coordinated the activities and demands of their server agents, many of these conflicts could be avoided, but the not-very-surprising truth is that for the most part, they don't. While server agent conflicts may not approach the semi-anarchy of ‘90s background software, when PC desktops often seemed like a wild-west shootout between competing peripheral utilities, communication portals, and other resource- and screen-hogging applications, as agents become more widely used and more complex in their operation, there is an increasing need for some kind of coordination between agents.
A Well-Conducted Orchestra of Agents
What should you look for in a server agent orchestration system? At the very least, it should provide some way to prevent agents from tying up crucial resources or making potentially harmful changes to the system. A first-rate system for agent orchestration should be able to do the following: Manage and limit agent use of memory and CPU time, including automatic limits on CPU use to prevent application performance degradation. Manage (and strongly limit or prevent) changes to key system or software settings by agents, when those changes could have unintended consequences. Manage the interface between each agent and the system in order to prevent potential security problems. Manage agent housekeeping (installation, removal, and updates). For an excellent example of a server agent orchestration system that handles all of these responsibilities, take a look at Intigua's agent-management system, which uses a unique container technology for added control and security.
Getting the Most Out of Your Agents
Server agent orchestration, of course, includes much more than conflict prevention. Most agents are designed to improve server operations, or provide added functionality. As automated background utilities, they make major contributions to the performance of the DevOps delivery chain. In the larger picture, server agent orchestration means optimizing agent interaction for maximum efficiency, and leveraging agent synergy to provide maximum support for your operational needs. Whether you are using an agent provided by one or two vendors, or are employing a variety of agents (both proprietary and open-source), a well-orchestrated set of server agents should perform more like a unified suite of support utilities than a collection of unrelated applications.
In many ways, the key to orchestrating server agents at this level is understanding the capabilities of each agent. As is the case with any kind of software, while the default settings may be adequate for most situations, tailoring the performance of each agent to meet the specific requirements of your DevOps chain allows you to use the entire suite of agents to maximum advantage. In doing this, you can increase the level of automation for both routine and non-routine continuous delivery tasks. You can also eliminate many performance bottlenecks, and reduce the number of alerts. In many respects, server agent orchestration is not an optional housekeeping task. It is an important—if not fundamental—part of the DevOps process itself.
Need to orcehstrate your own agents? The Intigua Agent Manager lets IT and Devops professionals centrally manage and troubleshoot server tool agents at scale. Learn more.