Instana was founded to enable DevOps teams to tame the complexities of their cloud-native, microservices based applications. To that end, Instana created the first fully automated Application Performance Monitoring (APM) platform. Instana’s automated APM is achieved using a single, lightweight agent that manages small components, called sensors, that are crafted to monitor each technology in your application stack. With no human intervention, the sensors are configured, loaded, and updated by the agent and automatically collect configuration, changes, metrics, and events. The Instana agent injects trace functionality into the service code, automatically capturing the response time and context of EVERY request. With Instana’s dynamic agent, the agent automatically updates and configures itself, no need to update, reload, or restart the agent as technologies or configurations change.
Instana’s dynamic agent is the best option in most scenarios because it’s easy to use and always up to date with performance improvements and bug-fixes. There are, however, use cases that require a higher level of controllability than you get with the dynamic agent. For example, there are environments where users choose to use highly customized configurations that dynamic updates could interfere with. For use cases like this, Instana provides a static agent. Instana’s static agent is a self-contained agent that includes all the latest available components at the time of its release. The drawback is that once the static agent is installed the agent does not update itself. Without the automatic updates, users of the static agent must provide their own way of keeping the Instana agents up-to-date.
Instana is now making it even easier for users to get the stability, controllability, and capacity they need with dynamic version pinning with a GitOps based approach. Using Git with Instana’s Dynamic Agent allows you to stay up to date with the latest and greatest Instana has to offer, while having the stability and controllability you would get with the Static Agent.
What is GitOps?
Git is a distributed version-control system that is used for tracking changes in source code software development and has become the most commonly used version control system. Organizations continue to embrace DevOps as an integral part of their software development structure, changing to a culture of shared responsibility, fast feedback loops, transparency, and collaboration. As developers have taken on more operational duties, they’ve looked for ways to automate their newly acquired operational tasks. This change in methodology, along with developer ingenuity, has led to the evolution of GitOps.
According to The New Stack, “GitOps is centered around using a version control system (such as Git) to house all information, documentation, and code for a Kubernetes deployment, and then use automated directors to deploy changes to the cluster.” DevOps teams in particular have been moving towards GitOps practices to bring ‘configuration as code’ to their automated software delivery pipelines. This gives DevOps engineers a way to use their own version control system within their operational workflows.
Instana Agent Management Goes GitOps
Many Instana customers are leveraging more GitOps methodologies in their software development processes. So when Instana was looking for ways to make it easier for our customers to manage each and every one of their Instana Agent configurations, integrating with current GitOps practices was a no brainer. The Instana agent now supports Git-based configuration management to streamline configuration rollouts across multiple hosts. Instana has built a Git client directly into the Instana Agent making it easy for users to configure a Git repository in the agent. The Instana Agent fetches new configurations directly from the configured Git repository. This capability aligns the management of the Instana agent with the way our customers deploy, configure, and manage their own custom software.
Users now have additional options for managing the Instana Agent. With Git-based agent configuration management, users can pin Instana to a version of their choosing and remotely update the agent with a Git repository. This dynamic version pinning brings the stability, controllability, and capacity of the static agent without any additional software management platform or the drawback of manually SSHing into hundreds of hosts to update configuration files. With this functionality, users are able to fetch configuration data from different specified repositories, meaning you can have different groups of agents fetching different configurations of your choosing. This also allows for the grouping and naming of agents for specific uses like: Dev, Prod, QA, etc. and gives each of those teams the ability to configure the agent from different branches in the Git repository of their choosing.
Additionally, some Instana customers are required to test new software updates before pushing code live. The Instana Git-based agent gives them the control to push the new version when they deem necessary, without having to rely on the Static Agent. Users are able to upgrade to the latest and greatest iteration of Instana, while implementing it with the configurations they need, when they determine the timing is right. This brings these customers the best of the dynamic agent with the stability of the static agent.
Instana Git-Based Agent Management Capabilities
With the Instana Agent’s support or Git-based configuration management, users are able to streamline configuration rollouts across multiple hosts. These capabilities include:
- Versioning for <agent_dir>/etc and all the files therein
- Manage via Git:
- Dynamic version pinning
- Agent keys
- Maven repository settings
- Backend URL(s) (the Instana agent can seamlessly report into multiple backends)
- and more!
- Configurations fetched on:
- Agent startup
- Agent reboot
- Soon: on demand over backend API call and Instana Agent Management UI
- Map different groups of host agents to Git branches, e.g., based on the environment that is monitored: