<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog - Sematext Community</title>
	<atom:link href="https://sematext.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://sematext.com/blog/</link>
	<description>Solr / Elasticsearch Experts - Search &#38; Big Data Analytics</description>
	<lastBuildDate>Mon, 19 Oct 2026 09:16:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.10</generator>

<image>
	<url>https://sematext.com/wp-content/uploads/2024/12/cropped-ST-favicon-32x32.png</url>
	<title>Blog - Sematext Community</title>
	<link>https://sematext.com/blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Best AI Agent Governance Tools in 2026: Reviews &#038; Comparisons</title>
		<link>https://sematext.com/blog/best-ai-agent-governance-tools/</link>
		
		<dc:creator><![CDATA[Otis]]></dc:creator>
		<pubDate>Fri, 16 Oct 2026 12:50:37 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[AI agents]]></category>
		<category><![CDATA[infrastructure monitoring]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Tools & comparisons]]></category>
		<category><![CDATA[ai agents]]></category>
		<category><![CDATA[governance]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=71156</guid>

					<description><![CDATA[<p>AI agents are becoming a huge category of software running inside our organizations. The problem is that many companies are adopting them faster than they can inventory, secure, and govern them. I have also heard that CIOs and CISOs in some organizations are slowing down or blocking AI adoption until they feel more comfortable with [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/best-ai-agent-governance-tools/">Best AI Agent Governance Tools in 2026: Reviews &#038; Comparisons</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>AI agents are becoming a huge category of software running inside our organizations. The problem is that many companies are adopting them faster than they can inventory, secure, and govern them. I have also heard that CIOs and CISOs in some organizations are slowing down or blocking AI adoption until they feel more comfortable with being able to have better control of AI used within their organization. So here are some tools that should help such CIOs and CISOs.</p>
<p>This shortlist covers tools that take different approaches: some discover and monitor agents across infrastructure, some enforce restrictions on what agents can do, some focus on AI applications built inside enterprise platforms, and others govern AI systems across their lifecycle. These are not interchangeable categories, so I suggest you choose based on where your agents run and what you need to control. That said, there is also a problem of shadow AI (defined further below)…</p>
<h2 id="what-are-ai-agents-and-why-should-you-care-about-governing-them"><b>What are AI agents, and why should you care about governing them?</b></h2>
<p>An AI agent is software that uses an AI model to pursue a goal, make decisions, and take actions. Instead of simply generating text in response to a prompt, it might execute shell commands, read files, call APIs, query a database, create tickets, deploy code, or communicate with other services.</p>
<p>An agentic application is an application that uses one or more agents to perform a workflow. It might combine an LLM, a planning loop, a set of tools, access to company data, and a mechanism for deciding what to do next. Some agentic applications are built by our developers. Others arrive through third-party software, coding assistants, SaaS platforms, or tools installed by individual employees or even contractors.</p>
<p>The important distinction is that an agent doesn’t merely process information. Depending on its permissions and implementation, it can change the state of our systems.</p>
<h3 id="shadow-ai-the-agents-you-dont-know-about-are-the-ones-you-cant-govern"><b>Shadow AI: the agents you don’t know about are the ones you can’t govern</b></h3>
<p>You can’t monitor something you don’t know exists.</p>
<p>A developer might install an AI coding agent on a workstation or server. An operations engineer might deploy an autonomous troubleshooting tool. Someone might configure an MCP server that exposes internal tools to an AI assistant. A business team might create an agent in a SaaS platform without involving IT.</p>
<p>These are all potential sources of Shadow AI: AI systems used or deployed without the organization’s knowledge, approval, or appropriate oversight. Not necessarily with a malicious intent, but with possibly highly problematic consequences.</p>
<div style="background: rgba(220,38,38,0.06); border-left: 3px solid #DC2626; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #7f1d1d;"><strong style="color: #991b1b;">An inventory of <i>approved</i> agents is useful, but it isn’t sufficient. I also need to <i>discover</i> agents that have already appeared or will appear in the future, identify where they run, understand which users and services they can access, and record what they actually do.<br>
</strong></div>
<h3 id="what-can-go-wrong"><b>What can go wrong?</b></h3>
<p>An agent may have access to more than it needs. A compromised agent, malicious instruction, unsafe tool integration, or ordinary model mistake could result in:</p>
<ul>
<li aria-level="1"><b>Data exposure</b>: reading credentials, configuration files, customer data, or proprietary source code and sending information to an external destination.</li>
<li aria-level="1"><b>Destructive operations</b>: deleting files, changing production configuration, executing dangerous shell commands, or modifying infrastructure.</li>
<li aria-level="1"><b>Privilege escalation and lateral movement</b>: using available credentials or tools to reach systems beyond the original task.</li>
<li aria-level="1"><b>Supply-chain attacks</b>: interacting with an untrusted MCP server, installing a malicious agent skill, or executing code supplied by an external tool.</li>
<li aria-level="1"><b>Uncontrolled costs</b>: spawning agents, making repeated model calls, or running long workflows without appropriate limits.</li>
<li aria-level="1"><b>Compliance and accountability problems</b>: being unable to establish which agent accessed sensitive data, who authorized it, what happened, or which safeguards were in place.</li>
</ul>
<p>This is not an exhaustive list, but I think you see the pattern and why you need to be able to detect, monitor, and govern the AI tools.</p>
<p>Traditional infrastructure monitoring remains important, but CPU utilization and application logs alone don’t tell you whether an AI agent attempted to read a private key or connect to an unapproved endpoint.</p>
<h3 id="governance-means-more-than-observing-activity"><b>Governance means more than observing activity</b></h3>
<p>We can separate AI agent governance into three related capabilities:</p>
<ol>
<li aria-level="1"><b>Discovery and inventory</b>: identify agents, hosts, owners, versions, models, tools, permissions, and connections.</li>
<li aria-level="1"><b>Monitoring and investigation</b>: capture activity, detect risky behavior, correlate events into sessions, assess risk, and alert the right people.</li>
<li aria-level="1"><b>Preventive controls</b>: enforce policies that allow or deny particular actions, restrict access to files and destinations, limit tool use, or require human approval.</li>
</ol>
<p>The third capability is the one we are focusing on in this article. An alert that arrives after an agent has deleted production data is useful for an investigation, but it isn’t a preventive security control.</p>
<p>You also want governance to include policy ownership, exceptions, change history, risk assessments, and evidence that can be reviewed by management, security teams, and auditors. Depending on the business, cost controls and usage reporting are important parts of the same picture.</p>
<p>See also: <a href="https://sematext.com/blog/best-ai-agent-monitoring-tools/">Best AI Agent Monitoring Tools</a> (ignoring the governance capabilities that we focus on here)</p>
<h3 id="what-about-the-eu-ai-act"><b>What about the EU AI Act?</b></h3>
<p>As of October 2026, the EU AI Act is moving from preparation into active application. Its main application date is 2 August 2026, although certain obligations have different timelines, including later application dates for some high-risk AI systems. The exact obligations depend on the system, its intended use, the organization’s role, and applicable transitional provisions. Not every internal AI agent automatically qualifies as a high-risk AI system.</p>
<p>The Act provides for substantial administrative fines. For example, certain prohibited-practice violations can attract fines of up to €35 million or 7% of worldwide annual turnover, whichever is applicable under the relevant provision. Other violations have different thresholds. These are maximum statutory penalties, not automatic fines for simply using an AI agent.</p>
<p>I would not buy a governance product on the assumption that it makes my company EU AI Act compliant. I would look for controls and evidence that help me meet the obligations that actually apply to my business. Depending on the situation, GDPR, sector-specific rules, contractual requirements, and ordinary security obligations may matter just as much.</p>
<h2 id="what-core-functionality-should-you-look-for-in-an-ai-agent-governance-tool"><b>What core functionality should you look for in an AI agent governance tool?</b></h2>
<p>Before comparing vendors, I would define the requirements. For example, a tool that scans prompts is not necessarily a tool that can discover agents on my servers or block them from accessing credentials.</p>
<table>
<tbody>
<tr>
<td><b>Capability</b></td>
<td><b>What I would expect</b></td>
</tr>
<tr>
<td>Agent discovery</td>
<td>Automatically identify agents, including previously unknown agents, across hosts, endpoints, cloud platforms, SaaS, and developer environments.</td>
</tr>
<tr>
<td>Agent inventory</td>
<td>Record agent identity, location, owner, model, tools, permissions, and external connections.</td>
</tr>
<tr>
<td>Activity monitoring</td>
<td>Track commands, file access, network connections, tool calls, and relevant agent sessions.</td>
</tr>
<tr>
<td>Runtime enforcement</td>
<td>Block unauthorized actions before they complete, rather than merely alerting afterward.</td>
</tr>
<tr>
<td>Policy management</td>
<td>Define reusable allow/deny rules and scope them to agents, hosts, users, workloads, or environments.</td>
</tr>
<tr>
<td>Threat detection</td>
<td>Detect suspicious behavior, prompt injection, credential exposure, unsafe tool use, and data exfiltration.</td>
</tr>
<tr>
<td>Data protection</td>
<td>Identify sensitive information and prevent it from reaching unapproved models or external destinations.</td>
</tr>
<tr>
<td>Alerting and response</td>
<td>Prioritize incidents, notify the right people, and integrate with existing security workflows.</td>
</tr>
<tr>
<td>Audit and compliance</td>
<td>Preserve evidence of activity, policy decisions, exceptions, and remediation. Provide reports useful for auditors and management.</td>
</tr>
<tr>
<td>Cost governance</td>
<td>Track model usage and costs by agent, session, host, team, or workload, where supported.</td>
</tr>
</tbody>
</table>
<p></p>
I would also check where enforcement occurs. A gateway can govern traffic passing through that gateway, but it may not see an agent executing a local shell command or reading a file directly. An endpoint agent can see host-level behavior, but it may not understand the business context of a workflow in Salesforce or another SaaS platform.
<p>That distinction matters more than the number of features listed on a vendor’s website, so you want to discern this first.</p>
<h2 id="comparison-at-a-glance"><b>Comparison at a glance</b></h2>
<p>The ten solutions below cover different parts of the problem. I would not treat them as ten directly interchangeable products.</p>
<table>
<tbody>
<tr>
<td><b>Solution</b></td>
<td><b>Best fit</b></td>
<td><b>Discovery and inventory</b></td>
<td><b>Preventive controls</b></td>
<td><b>Compliance and reporting</b></td>
</tr>
<tr>
<td><a href="https://sematext.com/capabilities/ai-agent-watch/">Sematext AI Agent Watch</a></td>
<td>Agents running on infrastructure</td>
<td>Host-level agent discovery and activity</td>
<td>Host-level command, file, and network policies</td>
<td>Activity reports, risk scores, governance events</td>
</tr>
<tr>
<td><a href="https://www.paloaltonetworks.com/prisma/agent-security" target="_blank" rel="noopener noreferrer">Palo Alto Networks Prisma AIRS</a></td>
<td>Enterprise-wide AI security</td>
<td>Broad AI ecosystem discovery</td>
<td>Runtime AI and agent controls</td>
<td>Enterprise security posture</td>
</tr>
<tr>
<td><a href="https://www.checkpoint.com/ai-security/ai-agent-security/" target="_blank" rel="noopener noreferrer">Check Point AI Agent Security</a></td>
<td>Enterprise AI security and access controls</td>
<td>Agents across supported platforms</td>
<td>Runtime action and data controls</td>
<td>Security and governance visibility</td>
</tr>
<tr>
<td><a href="https://zenity.io/platform" target="_blank" rel="noopener noreferrer">Zenity</a></td>
<td>Enterprise and low-code agents</td>
<td>SaaS, cloud, custom, and endpoint agents</td>
<td>Agent behavior and runtime policies</td>
<td>Governance and security posture</td>
</tr>
<tr>
<td><a href="https://noma.security/solutions/agent-control-plane" target="_blank" rel="noopener noreferrer">Noma Security</a></td>
<td>Cross-environment agent control plane</td>
<td>Agents, tools, skills, MCP servers</td>
<td>Policy enforcement through integrations</td>
<td>Compliance evidence and reporting</td>
</tr>
<tr>
<td><a href="https://snyk.io/evo/agentic-development-security/" target="_blank" rel="noopener noreferrer">Snyk Evo Agentic Development Security</a></td>
<td>AI coding agents and software development</td>
<td>Coding agents, MCP servers, skills</td>
<td>Controls inside development workflows</td>
<td>Development security findings and governance</td>
</tr>
<tr>
<td><a href="https://www.ibm.com/products/watsonx-governance" target="_blank" rel="noopener noreferrer">IBM watsonx.governance</a></td>
<td>Formal AI risk management</td>
<td>AI asset and use-case inventories</td>
<td>Governance controls and guardrails</td>
<td>Lifecycle governance, evaluation, documentation</td>
</tr>
<tr>
<td><a href="https://www.cisco.com/site/us/en/products/security/ai-defense/index.html" target="_blank" rel="noopener noreferrer">Cisco AI Defense</a></td>
<td>Enterprise AI traffic and agent security</td>
<td>AI application and supply-chain visibility</td>
<td>AI interaction and tool-use protection</td>
<td>Security visibility and policy enforcement</td>
</tr>
<tr>
<td><a href="https://www.microsoft.com/en-us/security/business/microsoft-purview" target="_blank" rel="noopener noreferrer">Microsoft Purview</a></td>
<td>Organizations using Microsoft 365</td>
<td>AI usage and data-governance visibility</td>
<td>Data-centric controls, depending on workload</td>
<td>Audit, compliance, and data protection</td>
</tr>
<tr>
<td><a href="https://aws.amazon.com/bedrock/guardrails/" target="_blank" rel="noopener noreferrer">AWS Bedrock Guardrails</a></td>
<td>Agents built on AWS Bedrock</td>
<td>Primarily application- and service-centric</td>
<td>Model input/output and application guardrails</td>
<td>Evaluation and governance integrations</td>
</tr>
</tbody>
</table>
<p>This is a capability-oriented comparison, not a claim that every vendor has identical coverage in every deployment. Exact support depends on the product tier, integrations, deployment model, and current release.</p>
<h2 id="1-sematext-ai-agent-watch"><b>1. </b><a href="https://sematext.com/capabilities/ai-agent-watch/"><b>Sematext AI Agent Watch</b></a></h2>
<p>Product: Infrastructure-level AI agent discovery, monitoring, and governance – <a href="https://sematext.com/capabilities/ai-agent-watch/">AI Agent Watch</a></p>
<p>Docs: <a href="https://sematext.com/docs/ai-agent-watch/governance/">Governance documentation</a></p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-71157" src="https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-report.png" alt="Sematext AI Agent Governance" width="1697" height="927" srcset="https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-report.png 1697w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-report-300x164.png 300w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-report-1024x559.png 1024w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-report-768x420.png 768w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-report-1536x839.png 1536w" sizes="(max-width: 1697px) 100vw, 1697px" /><br>
Image: Governance report</p>
<p><img decoding="async" src="https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-rules.png" alt="Sematext AI Agent Governance" width="2244" height="1800" class="alignnone size-full wp-image-71172" srcset="https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-rules.png 2244w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-rules-300x241.png 300w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-rules-1024x821.png 1024w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-rules-768x616.png 768w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-rules-1536x1232.png 1536w, https://sematext.com/wp-content/uploads/2026/10/sematext-aiaw-governance-rules-2048x1643.png 2048w" sizes="(max-width: 2244px) 100vw, 2244px" /><br>
Image: Governance policies</p>
<h3 id="description"><b>Description</b></h3>
<p>Sematext AI Agent Watch takes an infrastructure-first approach. Instead of requiring you to know which AI agents developers and operations teams have installed, it discovers agents running on monitored hosts and records their activity. You can then investigate commands, file access, network connections, sessions, sensitive-data exposure, and model usage and costs. Its governance capabilities go beyond passive monitoring: policies can deny specified operations at the host level. For example, you can block an agent from reading a credential file, executing a destructive command, or connecting to a restricted destination. The Sematext Agent enforces policies locally and sends governance events to Sematext Cloud for investigation. Sensitive information is detected in the agent (even when encrypted) on the host and is not transferred over the network to Sematext.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">Automatic discovery of AI agents on monitored infrastructure.</li>
<li aria-level="1">Activity visibility for commands, file reads and writes, and outbound connections.</li>
<li aria-level="1">Session-level investigation, risk scores, alerts, and sensitive-data detection.</li>
<li aria-level="1"><a href="https://sematext.com/capabilities/ai-agent-governance/">Governance policies</a> for tool execution, file access, and network activity.</li>
<li aria-level="1">Policy scoping to specific agents and hosts.</li>
<li aria-level="1">Governance events that can be reviewed even without an associated notification rule.</li>
<li aria-level="1">Model usage and cost tracking.</li>
<li aria-level="1">Optional integration with the wider Sematext infrastructure monitoring platform.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Combines discovery, observability, security monitoring, and preventive controls in one product.</li>
<li aria-level="1">Host-level visibility can catch activity that a model API gateway may never see.</li>
<li aria-level="1">Policies can deny actions instead of relying entirely on post-event alerts.</li>
<li aria-level="1">Transparent, usage-oriented pricing and a free trial.</li>
<li aria-level="1">Fits teams that already want infrastructure monitoring without adopting a large enterprise security suite.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">Host-level enforcement has specific platform prerequisites. The current governance documentation requires Sematext Agent 4.6 or later, Linux kernel 5.17 or later, and BPF-LSM enabled. Good news is that this kernel was released in early 2022 and most Linux distributions have BPF-LSM enabled.</li>
<li aria-level="1">Host-level controls are not a substitute for application-level authorization or SaaS-specific governance.</li>
<li aria-level="1">Companies looking for a complete enterprise AI risk-management framework may need additional tooling.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p><a href="https://sematext.com/pricing/">Sematext pricing</a> lists AI Agent Watch starting at approximately $1.68 per host per month at the published base rate, with pricing dependent on the infrastructure monitoring plan and data retention. A 14-day free trial is available. This is the most affordable solution on this list, as far as I can tell or guess.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>The combination of discovery, monitoring and enforcement is elegantly done. In infrastructure security, it is easy to build a dashboard that tells me something dangerous happened. It is much more useful to have a mechanism that can deny the operation in the first place.</p>
<p>I like the host-level approach because I don’t want to assume every agent uses a centrally managed LLM gateway. Local coding agents, scripts, and tools may execute commands or access files without sending every operation through an API gateway.</p>
<p>For a smaller company that wants to know which agents are running on its servers and what they are doing, this is one of the first products I would evaluate.</p>
<h2 id="2-palo-alto-networks-prisma-airs"><b>2. Palo Alto Networks Prisma AIRS</b></h2>
<p>Product: Enterprise AI security platform – <a href="https://www.paloaltonetworks.com/prisma/agent-security" target="_blank" rel="noopener noreferrer">Prisma AIRS Agent Security</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71158" src="https://sematext.com/wp-content/uploads/2026/10/palo-alto-prisma-airs.jpg" alt="Palo Alto Networks Prisma" width="2048" height="1201" srcset="https://sematext.com/wp-content/uploads/2026/10/palo-alto-prisma-airs.jpg 2048w, https://sematext.com/wp-content/uploads/2026/10/palo-alto-prisma-airs-300x176.jpg 300w, https://sematext.com/wp-content/uploads/2026/10/palo-alto-prisma-airs-1024x601.jpg 1024w, https://sematext.com/wp-content/uploads/2026/10/palo-alto-prisma-airs-768x450.jpg 768w, https://sematext.com/wp-content/uploads/2026/10/palo-alto-prisma-airs-1536x901.jpg 1536w" sizes="(max-width: 2048px) 100vw, 2048px" /></p>
<p>Image: AI asset discovery or agent security policy dashboard.</p>
<h3 id="description"><b>Description</b></h3>
<p>Prisma AIRS is Palo Alto Networks’ broader AI security platform. It addresses AI security across discovery, assessment, runtime protection, and agent security. Rather than concentrating on a single host or agent framework, it aims to give security teams visibility into AI applications, models, agents, and their interactions. Its agent security capabilities include agent identity, behavior, tool use, and runtime controls intended to stop unauthorized actions. The platform is particularly relevant if you already use Palo Alto Networks security products or need to manage AI risks across a large, heterogeneous environment. It is broader than a standalone agent inventory tool, but the breadth also means you need to understand which components and licenses are necessary for my particular use case.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">AI asset discovery and security posture visibility.</li>
<li aria-level="1">Agent identity and runtime behavior controls.</li>
<li aria-level="1">AI application and model assessment.</li>
<li aria-level="1">Runtime protection against malicious interactions and data exposure.</li>
<li aria-level="1">AI gateway capabilities for governing AI interactions.</li>
<li aria-level="1">Enterprise security integrations.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Broad coverage across the AI lifecycle.</li>
<li aria-level="1">A natural option for organizations with existing Palo Alto Networks security infrastructure.</li>
<li aria-level="1">Addresses both AI application risks and agent behavior.</li>
<li aria-level="1">Designed for larger environments with diverse AI systems.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">May be more complex than a small company needs.</li>
<li aria-level="1">Multiple capabilities and licensing components can make evaluation complicated.</li>
<li aria-level="1">I would verify how well its discovery covers locally installed agents and direct host operations, rather than assuming its AI traffic visibility covers them.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>Pricing for the relevant Prisma AIRS capabilities is not published as a simple, universal per-agent rate. See the<a href="https://www.paloaltonetworks.com/ai-security/prisma-airs" target="_blank" rel="noopener noreferrer"> Prisma AIRS product page</a> or contact Palo Alto Networks for a quote.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like the lifecycle approach. Agent governance should not stop at detecting suspicious prompts; it should include understanding the assets involved, assessing risk, and enforcing controls at runtime.</p>
<p>What I dislike is the potential complexity. For a company with 50 or 100 employees, I would first identify the exact problem I need to solve and ask for a demonstration of that workflow. I would not buy a broad platform simply because its feature list looks comprehensive.</p>
<h2 id="3-check-point-ai-agent-security"><b>3. Check Point AI Agent Security</b></h2>
<p>Product: AI agent discovery, risk assessment, and runtime protection – <a href="https://www.checkpoint.com/ai-security/ai-agent-security/" target="_blank" rel="noopener noreferrer">AI Agent Security</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71159" src="https://sematext.com/wp-content/uploads/2026/10/checkpoint-lancia-ai-defense-plane.jpg" alt="CheckPoint Lancia AI Defense" width="1200" height="800" srcset="https://sematext.com/wp-content/uploads/2026/10/checkpoint-lancia-ai-defense-plane.jpg 1200w, https://sematext.com/wp-content/uploads/2026/10/checkpoint-lancia-ai-defense-plane-300x200.jpg 300w, https://sematext.com/wp-content/uploads/2026/10/checkpoint-lancia-ai-defense-plane-1024x683.jpg 1024w, https://sematext.com/wp-content/uploads/2026/10/checkpoint-lancia-ai-defense-plane-768x512.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p>
<p>Image: agent discovery, risk assessment, or runtime enforcement view.</p>
<h3 id="description"><b>Description</b></h3>
<p>Check Point approaches agent security through discovery, contextual risk assessment, and runtime enforcement. Its stated capabilities cover agents across supported cloud and low-code platforms, as well as the tools, skills, MCP servers, and connected components that affect their risk. It can inspect prompts, model responses, external content, and agent tool calls, then apply security policies to risky interactions. That makes it relevant when you need to govern how agents use data, invoke APIs, and interact with enterprise systems. I would particularly investigate it if my organization already uses Check Point security products or if I want AI-specific controls integrated into a wider security architecture.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">Agent discovery across supported environments.</li>
<li aria-level="1">Contextual risk assessment of tools, skills, and MCP servers.</li>
<li aria-level="1">Runtime monitoring and enforcement.</li>
<li aria-level="1">Controls for agent access to data, APIs, and connected systems.</li>
<li aria-level="1">Detection of prompt injection and sensitive-data exposure.</li>
<li aria-level="1">Policy-based blocking, redaction, and other response actions, depending on the policy and integration.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Combines agent inventory with action-level protection.</li>
<li aria-level="1">Addresses both malicious inputs and unsafe agent behavior.</li>
<li aria-level="1">Fits into a broader enterprise security strategy.</li>
<li aria-level="1">More relevant to agent workflows than conventional network monitoring alone.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">The actual scope of discovery depends on supported platforms and integrations.</li>
<li aria-level="1">It may be excessive for a small company with only a few local agents.</li>
<li aria-level="1">I would test whether its runtime controls cover the specific tools and execution paths my agents use.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>I could not find a universal public price for the relevant agent security capabilities, which is typically a little red flag for me. See the<a href="https://www.checkpoint.com/ai-security/ai-agent-security/" target="_blank" rel="noopener noreferrer"> official product page</a> for product details and a sales inquiry.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like that the product description focuses on actions and access, not just model inputs and outputs. That feels like the right level of abstraction for an agent that can invoke tools and change state.</p>
<p>What I would challenge during an evaluation, if you do one, is the distinction between observing an agent interaction and preventing the underlying action. I would request a concrete demonstration: have an agent attempt a prohibited operation, confirm that the operation is blocked, and then inspect the resulting audit event.</p>
<h2 id="4-zenity"><b>4. Zenity</b></h2>
<p>Product: AI agent security and governance – <a href="https://zenity.io/platform" target="_blank" rel="noopener noreferrer">zenity.io</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71160" src="https://sematext.com/wp-content/uploads/2026/10/zenity-ai-observability.jpg" alt="Zenity AI" width="1000" height="800" srcset="https://sematext.com/wp-content/uploads/2026/10/zenity-ai-observability.jpg 1000w, https://sematext.com/wp-content/uploads/2026/10/zenity-ai-observability-300x240.jpg 300w, https://sematext.com/wp-content/uploads/2026/10/zenity-ai-observability-768x614.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<p>Image: agent inventory, risk posture, or runtime policy dashboard.</p>
<h3 id="description"><b>Description</b></h3>
<p>Zenity started with security and governance for low-code and no-code applications and has expanded into AI agent security. Its platform covers agents in SaaS platforms, cloud environments, custom applications, and supported endpoint deployments. It emphasizes discovering agents, evaluating their configuration and permissions, identifying exploitable exposure, and governing behavior at runtime. This is useful when agents are being created by developers and business users across several platforms rather than deployed only on managed Linux servers. Zenity is particularly relevant to companies using enterprise copilots and low-code development tools, where agents can inherit permissions and access data through existing integrations.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">AI agent inventory and observability.</li>
<li aria-level="1">AI security posture management.</li>
<li aria-level="1">Assessment of configuration, permissions, and exposure.</li>
<li aria-level="1">Runtime detection and policy enforcement.</li>
<li aria-level="1">Support for SaaS, cloud, custom, and endpoint agent environments.</li>
<li aria-level="1">Security visibility for agents built using enterprise and low-code platforms.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Designed around agent behavior and business application risks.</li>
<li aria-level="1">Covers more than one deployment model.</li>
<li aria-level="1">Useful for organizations with substantial low-code and SaaS agent adoption.</li>
<li aria-level="1">Brings posture management and runtime controls into one security workflow.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">Likely more relevant to organizations with a broad agent estate than to a company with only a handful of agents.</li>
<li aria-level="1">I would validate coverage of operating-system-level operations separately.</li>
<li aria-level="1">The commercial model may be difficult to compare with simple per-host monitoring tools.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>Public, standardized pricing for the full platform was not available in the product information I reviewed. Boh! You’ll need to request a demonstration and quote.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like the fact that Zenity recognizes that agents are not confined to servers. A company can have significant AI risk in a SaaS workflow even if no one has installed an agent on a Linux host.</p>
<p>What I would want to understand is how much of the discovery and enforcement is automatic versus dependent on integrations and configuration. I’d also map its coverage against the company’s actual environment before deciding whether it can serve as the central governance layer.</p>
<p>Also note that the company is relatively young, founded in 2021.</p>
<h2 id="5-noma-security"><b>5. Noma Security</b></h2>
<p>Product: AI agent control plane – <a href="https://noma.security/solutions/agent-control-plane" target="_blank" rel="noopener noreferrer">noma.security</a></p>
<h3 id="description"><b>Description</b></h3>
<p>Noma positions its product as a governance layer spanning agent discovery, access control, runtime enforcement, and compliance. Its stated scope includes agents, models, skills, MCP servers, and tools across cloud platforms, SaaS applications, developer endpoints, and code repositories. One notable architectural idea is open enforcement: Noma describes integrations with gateways, agent SDKs, agent hooks, direct APIs, endpoint security, and device management. The goal is to apply consistent policies without requiring every organization to standardize on one agent framework or execution architecture. It also emphasizes audit evidence and mapping governance to frameworks such as NIST AI RMF, ISO 42001, and the EU AI Act. Yeah, this feels a little high level…</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">Cross-environment discovery and inventory.</li>
<li aria-level="1">Contextual visibility into agent tools, permissions, and potential blast radius.</li>
<li aria-level="1">Policies for approved agents, tools, and actions.</li>
<li aria-level="1">Runtime monitoring and enforcement through integrations.</li>
<li aria-level="1">Alerts, blocking, masking, and human approval workflows, depending on integration.</li>
<li aria-level="1">Compliance reporting and evidence generation.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Broad ambition across endpoint, cloud, and SaaS agents.</li>
<li aria-level="1">Open-enforcement architecture may reduce dependence on a single gateway.</li>
<li aria-level="1">Explicit attention to audit evidence and regulatory frameworks.</li>
<li aria-level="1">Useful for companies that want one governance model across many agent platforms.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">Broad coverage depends on the availability and quality of enforcement integrations.</li>
<li aria-level="1">I would test what happens when an agent bypasses the expected execution path.</li>
<li aria-level="1">The architecture may introduce integration work for a smaller IT team.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>I could not verify a public, standardized price for the agent control plane. See<a href="https://noma.security/solutions/agent-control-plane" target="_blank" rel="noopener noreferrer"> Noma’s product page</a> for a demonstration and commercial information.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like the idea of separating governance policy from the individual framework used to run an agent. That is a sensible direction if I expect the company to use multiple agent frameworks over time.</p>
<p>What I would be careful about is assuming that a single policy automatically means consistent enforcement everywhere. I would test each enforcement point independently, including local commands, API calls, and SaaS actions. A governance dashboard is only as useful as the controls that actually enforce its policies.</p>
<p>The company was founded only in 2023, so that’s also something to keep in mind: are they well established, well funded, or profitable, etc.</p>
<h2 id="6-snyk-evo-agentic-development-security"><b>6. Snyk Evo Agentic Development Security</b></h2>
<p>Product: Security and governance for AI coding agents – <a href="https://snyk.io/evo/agentic-development-security/" target="_blank" rel="noopener noreferrer">Evo Agentic Development Security</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71161" src="https://sematext.com/wp-content/uploads/2026/10/snyk-evo.jpg" alt="Snyk Evo" width="1367" height="806" srcset="https://sematext.com/wp-content/uploads/2026/10/snyk-evo.jpg 1367w, https://sematext.com/wp-content/uploads/2026/10/snyk-evo-300x177.jpg 300w, https://sematext.com/wp-content/uploads/2026/10/snyk-evo-1024x604.jpg 1024w, https://sematext.com/wp-content/uploads/2026/10/snyk-evo-768x453.jpg 768w" sizes="(max-width: 1367px) 100vw, 1367px" /></p>
<p>Image: MCP server and agent-skill inventory or the runtime governance interface.</p>
<h3 id="description"><b>Description</b></h3>
<p>Snyk Evo Agentic Development Security (ADS) focuses on the agents used to build software. Coding agents can pull in MCP servers and skills, invoke tools, modify repositories, run commands, and generate code faster than a traditional review process can keep up. Snyk’s approach is to govern what those agents use, what they do, and what they generate. Its capabilities include discovering and assessing MCP servers and skills, enforcing policies within development workflows, and validating generated code. In September 2026, Snyk announced general availability for its Govern Agent Behavior capability, starting with MCP governance. This makes it a particularly relevant option for engineering organizations rather than a general-purpose tool for every agent running in business operations.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">Discovery and assessment of MCP servers, tools, and agent skills.</li>
<li aria-level="1">Runtime governance for AI coding agents.</li>
<li aria-level="1">Policies that restrict or flag unsafe tool use and behavior.</li>
<li aria-level="1">Security checks on AI-generated code.</li>
<li aria-level="1">Integration with supported coding agents and development workflows.</li>
<li aria-level="1">Broader AI security capabilities through the Evo platform.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Strong focus on the development lifecycle and coding-agent risks.</li>
<li aria-level="1">Addresses agent dependencies and actions, not just generated code.</li>
<li aria-level="1">Fits teams already using Snyk for application security.</li>
<li aria-level="1">Offers an approach that can put security checks directly into developer workflows.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">Not a replacement for infrastructure-wide agent discovery and host monitoring.</li>
<li aria-level="1">The feature set is oriented toward development rather than general business agents.</li>
<li aria-level="1">I would validate support for the specific coding agents, IDEs, MCP configurations, and execution modes used by the team.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>Snyk publishes pricing for parts of its platform, but Evo capabilities require an Enterprise Platform Subscription rather than the Free or Team plan. The published Evo ADS rate card lists coding-agent security at one credit per active machine per day, with one credit equal to $1 under its enterprise credit model. Actual contract costs depend on the subscription and usage. See<a href="https://snyk.io/plans/" target="_blank" rel="noopener noreferrer"> Snyk pricing</a>.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like the focus on the development workflow. If coding agents are already writing and executing code, waiting until the code reaches a repository or CI pipeline to find every problem is too late for some classes of risk.</p>
<p>What I dislike is that a development-specific tool can leave blind spots elsewhere. It won’t necessarily tell me every agent installed on an operations server or every autonomous workflow created in a SaaS platform. I would use it as part of a development security strategy, not assume it is my entire AI governance solution.</p>
<h2 id="7-ibm-watsonx-governance"><b>7. IBM watsonx.governance</b></h2>
<p>Product: AI governance and lifecycle risk management – <a href="https://www.ibm.com/products/watsonx-governance" target="_blank" rel="noopener noreferrer">IBM watsonx.governance</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71162" src="https://sematext.com/wp-content/uploads/2026/10/ibm-watsonx-governance.jpg" alt="IBM watsonx.governance" width="1917" height="1080" srcset="https://sematext.com/wp-content/uploads/2026/10/ibm-watsonx-governance.jpg 1917w, https://sematext.com/wp-content/uploads/2026/10/ibm-watsonx-governance-300x169.jpg 300w, https://sematext.com/wp-content/uploads/2026/10/ibm-watsonx-governance-1024x577.jpg 1024w, https://sematext.com/wp-content/uploads/2026/10/ibm-watsonx-governance-768x433.jpg 768w, https://sematext.com/wp-content/uploads/2026/10/ibm-watsonx-governance-1536x865.jpg 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></p>
<p>Image: AI inventory, risk assessment, or model monitoring dashboard.</p>
<h3 id="description"><b>Description</b></h3>
<p>IBM watsonx.governance takes a broader AI lifecycle governance approach rather than concentrating exclusively on agents running on infrastructure, as you would expect from the behemoth like IBM. It provides capabilities for AI inventory and documentation, model evaluation, monitoring, risk assessment, and compliance management. Its governance capabilities also include generative AI assets and agentic catalogs, making it relevant to organizations that need to document AI use cases, assign accountability, and maintain evidence of risk management. I would consider it when formal governance processes matter as much as runtime security, especially in regulated organizations or companies with many AI initiatives. However, lifecycle governance and host-level enforcement are different jobs, so I would not assume it can replace a tool that blocks a local agent from executing a shell command.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">AI asset inventory and use-case documentation.</li>
<li aria-level="1">Risk and compliance assessments.</li>
<li aria-level="1">Model evaluation and monitoring.</li>
<li aria-level="1">Governance for generative AI applications and agentic assets.</li>
<li aria-level="1">Governance workflows and evidence for review.</li>
<li aria-level="1">Integrations with the IBM AI ecosystem and supported cloud environments.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Strong emphasis on formal risk management and documentation.</li>
<li aria-level="1">Useful for organizations that need repeatable governance processes.</li>
<li aria-level="1">Combines several AI lifecycle management capabilities.</li>
<li aria-level="1">Published pricing is available for some offerings.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">More focused on lifecycle governance than universal host-level runtime enforcement.</li>
<li aria-level="1">This is most definitely a complex platform much too complex and likely expensive than a smaller or even a medium sized company needs.</li>
<li aria-level="1">Pricing and features vary by deployment model and offering.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>IBM publishes indicative pricing for some watsonx.governance offerings. Its pricing page lists a 14-day trial, model-management options, and certain risk and compliance plans starting at thousands of dollars per month, as well as separate AWS and software pricing models. These offerings are not directly comparable with a per-host monitoring subscription. See<a href="https://www.ibm.com/products/watsonx-governance/pricing" target="_blank" rel="noopener noreferrer"> IBM’s pricing page</a>.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like the emphasis on documented decisions, risk assessments, and accountability. Those things matter when a company needs to demonstrate that it has an actual AI governance process rather than a collection of security alerts.</p>
<p>What I would not do is confuse governance documentation with enforcement. If an agent is about to read a private key, I need a control that prevents that access. A lifecycle governance platform and an endpoint enforcement product can complement each other, but they solve different problems.</p>
<p>Finally, this is IBM. Its solutions are aimed at large enterprises, and scope and pricing will reflect that.</p>
<h2 id="8-cisco-ai-defense"><b>8. Cisco AI Defense</b></h2>
<p>Product: AI security and agent interaction protection – <a href="https://www.cisco.com/site/us/en/products/security/ai-defense/index.html" target="_blank" rel="noopener noreferrer">Cisco AI Defense</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71163" src="https://sematext.com/wp-content/uploads/2026/10/cisco-ai-defense.jpg" alt="Cisco AI Defense" width="2300" height="1392" srcset="https://sematext.com/wp-content/uploads/2026/10/cisco-ai-defense.jpg 2300w, https://sematext.com/wp-content/uploads/2026/10/cisco-ai-defense-300x182.jpg 300w, https://sematext.com/wp-content/uploads/2026/10/cisco-ai-defense-1024x620.jpg 1024w, https://sematext.com/wp-content/uploads/2026/10/cisco-ai-defense-768x465.jpg 768w, https://sematext.com/wp-content/uploads/2026/10/cisco-ai-defense-1536x930.jpg 1536w, https://sematext.com/wp-content/uploads/2026/10/cisco-ai-defense-2048x1239.jpg 2048w" sizes="(max-width: 2300px) 100vw, 2300px" /></p>
<p>Image: AI Defense runtime protection or AI supply-chain security interface.</p>
<h3 id="description"><b>Description</b></h3>
<p>Cisco AI Defense addresses security risks in AI applications and agentic workflows. Cisco announced an expansion of the product in February 2026 to include AI supply-chain governance and runtime protections for agentic tool use. The emphasis is on protecting AI interactions, reducing the risk of compromise or manipulation, and controlling how agents access systems and use tools. This is especially relevant for enterprises that already rely on Cisco’s network and security infrastructure. As with other AI security platforms, I would distinguish between controls over AI traffic and controls over the agent’s local execution environment. The former can be effective at inspecting interactions that pass through a supported enforcement point; it doesn’t automatically provide visibility into every local file read or shell command.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">AI supply-chain security.</li>
<li aria-level="1">Runtime protections for agentic interactions and tool use.</li>
<li aria-level="1">Security controls intended to reduce prompt injection and manipulation risks.</li>
<li aria-level="1">AI application security and interaction monitoring.</li>
<li aria-level="1">Integration opportunities within the Cisco security ecosystem.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Relevant for organizations with existing Cisco security infrastructure.</li>
<li aria-level="1">Addresses risks specific to agentic tool use.</li>
<li aria-level="1">Combines AI-specific protection with a broader security portfolio.</li>
<li aria-level="1">Can be part of a network-centered approach to AI security.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">I would verify which agent execution paths are actually inspected.</li>
<li aria-level="1">Traffic-level controls do not necessarily provide complete host-level visibility.</li>
<li aria-level="1">Public pricing for the relevant enterprise capabilities is not readily comparable to simple per-agent or per-host tools.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>Like with most of these tools here, I could not verify a universal public price for the relevant AI Defense enterprise capabilities. See the<a href="https://www.cisco.com/site/us/en/products/security/ai-defense/index.html" target="_blank" rel="noopener noreferrer"> Cisco AI Defense product page</a> for current offerings and commercial details.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like the focus on the interaction between agents, tools, and the systems they access. That is where many of the important security decisions happen.</p>
<p>But I suggest you test whether they can enforce the policy at the point where the risky action occurs, or whether the architecture depends on traffic traversing a particular gateway. If you have a mix of cloud agents, local coding agents, and SaaS workflows, that distinction determines how much coverage you actually get.</p>
<h2 id="9-microsoft-purview"><b>9. Microsoft Purview</b></h2>
<p>Product: Data security, governance, and compliance across Microsoft environments – <a href="https://www.microsoft.com/en-us/security/business/microsoft-purview" target="_blank" rel="noopener noreferrer">Microsoft Purview</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71164" src="https://sematext.com/wp-content/uploads/2026/10/microsoft-purview.jpg" alt="Microsoft Purview" width="796" height="800" srcset="https://sematext.com/wp-content/uploads/2026/10/microsoft-purview.jpg 796w, https://sematext.com/wp-content/uploads/2026/10/microsoft-purview-150x150.jpg 150w, https://sematext.com/wp-content/uploads/2026/10/microsoft-purview-768x772.jpg 768w, https://sematext.com/wp-content/uploads/2026/10/microsoft-purview-120x120.jpg 120w" sizes="(max-width: 796px) 100vw, 796px" /></p>
<p>Image: data security, audit, or compliance portal view relevant to AI usage.</p>
<h3 id="description"><b>Description</b></h3>
<p>Microsoft Purview is not a universal agent runtime enforcement product. I included it here because data governance and compliance are essential parts of governing agents, particularly in organizations using Microsoft 365, Copilot, and other Microsoft services. Purview provides data security, information protection, auditing, and compliance capabilities that can help organizations understand and control how sensitive information is handled. The value depends on the workload and licensing: data-centric controls can help reduce exposure when agents access or process company information, while audit capabilities can support investigations and compliance evidence. I would pair it with agent discovery and action-level controls if I needed visibility into agents running outside the Microsoft ecosystem or wanted to block local commands and host-level operations.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">Data classification and information protection.</li>
<li aria-level="1">Audit and compliance capabilities.</li>
<li aria-level="1">Data loss prevention for supported workloads.</li>
<li aria-level="1">Governance of information accessed or processed through supported Microsoft services.</li>
<li aria-level="1">Integration with Microsoft security and compliance workflows.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">A logical choice for organizations already using Microsoft 365.</li>
<li aria-level="1">Strong relevance to sensitive data and compliance workflows.</li>
<li aria-level="1">May reduce the need to introduce a separate tool for every data governance requirement.</li>
<li aria-level="1">Can complement agent-specific security controls.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">Not a universal inventory of every AI agent running across infrastructure.</li>
<li aria-level="1">Its controls depend on supported Microsoft workloads and the applicable licenses.</li>
<li aria-level="1">Does not replace host-level monitoring or enforcement for arbitrary agent actions.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>Microsoft Purview pricing varies by capability, license, and subscription. I could not find one universal price for AI agent governance specifically, which is not surprising: complex product means complex pricing, apparently. See<a href="https://www.microsoft.com/en-us/security/business/microsoft-purview" target="_blank" rel="noopener noreferrer"> Microsoft Purview</a> for the applicable licensing options.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like the fact that AI governance must include data governance. An agent can be operating exactly as configured and still expose data because the underlying permissions are too broad.</p>
<p>What I dislike is the temptation to treat a Microsoft-centric view as the complete AI inventory. I would like to know about agents installed on servers, agents running in other clouds, and tools employees install locally. Purview can be valuable in its domain, but I would not assume it covers every execution environment.</p>
<h2 id="10-aws-bedrock-guardrails"><b>10. AWS Bedrock Guardrails</b></h2>
<p>Product: Guardrails for generative AI applications on AWS – <a href="https://aws.amazon.com/bedrock/guardrails/" target="_blank" rel="noopener noreferrer">Amazon Bedrock Guardrails</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-71165" src="https://sematext.com/wp-content/uploads/2026/10/aws-bedrock-guardrails.jpg" alt="AWS Bedrock Governance" width="1227" height="672" srcset="https://sematext.com/wp-content/uploads/2026/10/aws-bedrock-guardrails.jpg 1227w, https://sematext.com/wp-content/uploads/2026/10/aws-bedrock-guardrails-300x164.jpg 300w, https://sematext.com/wp-content/uploads/2026/10/aws-bedrock-guardrails-1024x561.jpg 1024w, https://sematext.com/wp-content/uploads/2026/10/aws-bedrock-guardrails-768x421.jpg 768w" sizes="(max-width: 1227px) 100vw, 1227px" /></p>
<p>Image: a Bedrock Guardrails configuration or evaluation view.</p>
<h3 id="description"><b>Description</b></h3>
<p>Amazon Bedrock Guardrails is relevant when AI agents and applications are built on AWS Bedrock. It provides configurable safeguards for supported model interactions, including controls around harmful content, sensitive information, and other defined policy categories. Guardrails can be incorporated into an application workflow so that AI inputs and outputs are evaluated against the configured rules. This is useful for teams building their own agentic applications because it lets developers implement controls at the model interaction layer without building every filter from scratch. However, it is not the same as discovering every agent running across a company’s infrastructure or enforcing every operating-system action. I would treat Bedrock Guardrails as an application-level control and combine it with appropriate IAM, logging, and infrastructure security measures.</p>
<h3 id="key-features"><b>Key features</b></h3>
<ul>
<li aria-level="1">Configurable safeguards for supported AI interactions.</li>
<li aria-level="1">Controls for harmful content and sensitive information.</li>
<li aria-level="1">Policy-based evaluation of inputs and outputs.</li>
<li aria-level="1">Integration with supported Amazon Bedrock workflows.</li>
<li aria-level="1">Application-level guardrails for developers building AI systems.</li>
</ul>
<h3 id="pros"><b>Pros</b></h3>
<ul>
<li aria-level="1">Natural fit for applications already built on Amazon Bedrock.</li>
<li aria-level="1">Developers can integrate guardrails into application workflows.</li>
<li aria-level="1">Helps establish consistent AI interaction policies.</li>
<li aria-level="1">Reduces the need to build all model-level safety checks from scratch.</li>
</ul>
<h3 id="cons"><b>Cons</b></h3>
<ul>
<li aria-level="1">Primarily relevant to supported Bedrock-based application workflows.</li>
<li aria-level="1">Does not automatically provide a complete inventory of agents running on arbitrary hosts or SaaS platforms.</li>
<li aria-level="1">Model interaction controls cannot replace operating-system permissions, IAM, or application authorization.</li>
<li aria-level="1">I would test how guardrails behave with tool calls and agent loops, rather than assuming every action is covered.</li>
</ul>
<h3 id="pricing"><b>Pricing</b></h3>
<p>Amazon Bedrock Guardrails pricing is published by AWS and varies by feature and usage. See the<a href="https://aws.amazon.com/bedrock/pricing/" target="_blank" rel="noopener noreferrer"> official pricing page</a> for current rates and the<a href="https://aws.amazon.com/bedrock/guardrails/" target="_blank" rel="noopener noreferrer"> Guardrails documentation</a> for capability details.</p>
<h3 id="my-opinion"><b>My Opinion</b></h3>
<p>I like application-level guardrails because they can be integrated into the code path the developers control. If my team builds an agent on Bedrock, I want the application to enforce sensible rules before passing content to a model or returning a response.</p>
<p>What I dislike is treating those guardrails as the whole governance strategy. An agent may have permissions and capabilities outside the model interaction itself. I would still want inventory, audit logs, IAM restrictions, and a mechanism to prevent dangerous tool execution.</p>
<h2 id="how-i-would-choose-between-these-tools"><b>How I would choose between these tools</b></h2>
<p>I believe the right choice depends less on which vendor has the longest feature list and more on where the agents run. Plus each tool’s complexity and its price (both complexity and pure cost).</p>
<p><b>For agents running on servers and infrastructure</b></p>
<p>I would start by evaluating Sematext AI Agent Watch. You want to discover what is installed, observe its behavior, and test whether host-level policies can block the actions you care about.</p>
<p><b>For agents spread across SaaS and enterprise platforms</b></p>
<p>I would evaluate Zenity, Noma, and Check Point. You would want to compare their actual integrations and runtime enforcement points in the platforms you use.</p>
<p><b>For AI coding agents</b></p>
<p>I would put Snyk Evo on the shortlist. The key question is whether it can govern your actual coding agents, MCP servers, skills, and tool execution paths.</p>
<p><b>For formal governance, risk, and audit processes</b></p>
<p>I would evaluate IBM watsonx.governance, particularly if documented risk management and evidence collection are central requirements. Probably only if you are at a large enterprise company that needs this sort of stuff.</p>
<p><b>For a broader enterprise security platform</b></p>
<p>I would compare Prisma AIRS and Cisco AI Defense, particularly if the company already has an established security stack from either vendor. Also only if you are at a large enterprise company that needs this sort of stuff.</p>
<h2 id="questions-to-ask-during-a-proof-of-concept"><b>Questions to ask during a proof of concept</b></h2>
<p>I would avoid evaluating these products using only a vendor presentation. Instead, I suggest you define a few tests that reflect real risks in your environment.</p>
<ul>
<li aria-level="1">Can the product discover an agent that was installed without notifying IT?</li>
<li aria-level="1">Can it identify where the agent is running and which tools, files, and destinations it can access?</li>
<li aria-level="1">Can I block an attempt to read a sensitive file or execute a dangerous command?</li>
<li aria-level="1">Can the agent still perform legitimate operations after the policy blocks a prohibited one?</li>
<li aria-level="1">Are policy violations recorded with enough context to investigate them?</li>
<li aria-level="1">Can I scope a policy to a specific agent, host, team, or workload?</li>
<li aria-level="1">Can I identify hosts where enforcement is unavailable or disabled?</li>
<li aria-level="1">Can I export audit evidence and document policy exceptions?</li>
<li aria-level="1">Can I measure the cost of running agents and identify runaway usage?</li>
<li aria-level="1">What happens when the agent uses an unapproved tool or bypasses the expected gateway?</li>
</ul>
<p>I would test both false positives and false negatives. A policy that blocks every shell command may look secure but make a coding agent useless. A policy that allows all commands except a handful of known-dangerous strings may be easy to bypass.</p>
<p>For critical operations, I would also consider whether the control is implemented at a reliable enforcement point, whether it can be bypassed, and whether there is a fail-open or fail-closed behavior when the security component is unavailable.</p>
<h2 id="final-thoughts"><b>Final thoughts</b></h2>
<p>I don’t think AI agent governance can be solved by one dashboard or one set of prompt filters. It requires knowing which agents exist, limiting their permissions, monitoring what they do, enforcing policies at the point of action, and retaining evidence of what happened.</p>
<p>For a smaller company, I would begin with a practical inventory and a few high-value preventive controls: credential access, destructive commands, and unapproved network destinations. I would then expand into application-level controls, cost governance, formal risk assessments, and compliance reporting as the agent footprint grows.</p>
<p>Most importantly, I would measure what the tool can actually prevent, not just what it can detect. Detection is not governance. The difference between an alert and a blocked action is the difference between learning about an incident and preventing one.</p>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/best-ai-agent-governance-tools/">Best AI Agent Governance Tools in 2026: Reviews &#038; Comparisons</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI Observability: What Should You Monitor in AI Applications?</title>
		<link>https://sematext.com/blog/ai-observability-what-should-you-monitor-in-ai-applications/</link>
		
		<dc:creator><![CDATA[Otis]]></dc:creator>
		<pubDate>Mon, 07 Sep 2026 14:57:36 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[AI agents]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=71077</guid>

					<description><![CDATA[<p>What is AI Observability AI observability is often described as “monitoring LLMs”, but that definition is way too narrow. There is so much more that AI applications do that needs monitoring. A production AI application can involve an LLM, multiple model providers, prompts, embeddings, vector databases, RAG pipelines, agents, tools, external APIs, memory, guardrails, GPUs, [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/ai-observability-what-should-you-monitor-in-ai-applications/">AI Observability: What Should You Monitor in AI Applications?</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2 id="what-is-ai-observability">What is AI Observability</h2>
<p>AI observability is often described as “monitoring LLMs”, but that definition is way too narrow. There is so much more that AI applications do that needs monitoring.</p>
<p>A production AI application can involve an LLM, multiple model providers, prompts, embeddings, vector databases, RAG pipelines, agents, tools, external APIs, memory, guardrails, GPUs, and traditional application infrastructure. An AI application can also be perfectly healthy from an infrastructure perspective while producing inaccurate, unsafe, expensive, or completely useless results.</p>
<p>All these are aspects of AI that could and should be observed.</p>
<p>In traditional IT observability we asked questions such as: Is the application available? Is it fast? Are there errors? Are resources healthy? For AI observability we have to go further: What did the AI do? Why did it do it? Was the result good? Was it safe? How much did it cost? And did it actually accomplish what the user wanted?</p>
<p>In this article, I explore the different dimensions of AI observability and the tools available for monitoring them.</p>
<div style="background: rgba(220,38,38,0.06); border-left: 3px solid #DC2626; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #7f1d1d;"><strong style="color: #991b1b;"><strong style="color: #991b1b;"><br>
Note:</strong></strong>All tools mentioned in this article I have actually covered in the recently published <a href="https://sematext.com/blog/best-ai-agent-monitoring-tools/">Best AI Agent Monitoring Tools: Reviews &amp; Comparisons</a>, so if you want to learn more about any one of them, that’s where you’ll find each of them reviewed and compared to others.
</div>
<h2 id="1-ai-infrastructure"><b>1. AI Infrastructure</b></h2>
<p>At the foundation is the infrastructure running your AI workloads.</p>
<p>For self-hosted models, this includes the usual infrastructure metrics (CPU, memory, disk, network, availability…), but also GPU utilization, GPU memory, accelerator utilization, model-loading time, batch sizes, queue depth, and concurrency. GPU utilization is particularly important because an expensive GPU that spends most of its time idle is an expensive resource that’s not doing much work.</p>
<p>Model-serving performance also introduces metrics that aren’t particularly common in traditional application monitoring. <b>Time to first token (TTFT), time between tokens, tokens per second, queueing time, and total generation time</b> can have a direct impact on user experience.</p>
<p>Tools such as <b>Datadog</b>, <b>New Relic</b>, and <b>Dynatrace</b> can monitor the infrastructure and application components surrounding AI workloads. For organizations running their own GPU infrastructure, specialized GPU monitoring can be added to provide deeper visibility into accelerator utilization and performance.</p>
<h2 id="2-llm-requests-and-responses"><b>2. LLM Requests and Responses</b></h2>
<p>Every call to an LLM is an important observable event.</p>
<p>You want to know which model was called, which provider served the request, how long it took, whether it succeeded, how many input and output tokens were consumed, what parameters were used, and why generation stopped. This is the AI equivalent of monitoring or tracing HTTP requests or database queries, but with considerably more semantic information.</p>
<p>This data is particularly useful when something changes. A new model version may increase latency. A prompt change may double token consumption. A provider may start returning more errors. A model that looked inexpensive during development may become surprisingly expensive in production.</p>
<p><b>Langfuse</b> provides open-source LLM tracing with visibility into requests, responses, latency, tokens, and costs. <b>W&amp;B Weave</b> provides similar tracing capabilities and connects LLM calls to evaluations and experiments, making it easier to understand not just how an individual request performed but whether changes to the application improved it.</p>
<h2 id="3-end-to-end-ai-traces"><b>3. End-to-End AI Traces</b></h2>
<p>A user request rarely results in a single model call.</p>
<p>Consider a customer asking an AI assistant a question. The application might retrieve some documents, send them to an LLM, have the LLM decide to call a tool, invoke an external API, send the result back to the model, make another model call, and finally generate the answer.</p>
<p>A single LLM trace isn’t enough to understand this. You need an <b>end-to-end trace</b> showing the entire execution path and the relationships between its individual operations. That allows you to answer questions such as <i>Why did this request take 15 seconds?</i>, <i>Which model call was responsible?</i>, or <i>Why did the agent call this API?</i></p>
<p>While there are commercial tools built around tracing and evaluation of AI applications, OpenTelemetry is also becoming increasingly relevant here. Its emerging <a href="https://github.com/open-telemetry/semantic-conventions-genai" target="_blank" rel="noopener noreferrer">GenAI conventions </a>provide a standardized way to represent AI operations alongside traditional distributed traces.</p>
<h2 id="4-prompts-and-context"><b>4. Prompts and Context</b></h2>
<p>With conventional software, developers generally think of code as the program.</p>
<p>With LLM applications, <b>the prompt is part of the program</b>.</p>
<p>Changing a system prompt, adding an instruction, modifying a few-shot example, changing the conversation history, or altering the model parameters can dramatically change application behavior. Consequently, observing which prompt was used and even which version of that prompt was used, is essential for debugging.</p>
<p>Context is equally important. To be meaningful, a production trace may need to show the system instructions, conversation history, retrieved documents, user context, tool descriptions, and other information supplied to the model.</p>
<p>This information can contain sensitive data, so prompt and context observability needs appropriate access controls, redaction, and retention policies.</p>
<p><b>Langfuse</b> combines observability with prompt management and versioning, making it possible to associate production traces with the prompt version that generated them. <b>Arize Phoenix</b> also provides prompt management and experimentation capabilities. <b>Sematext AI Agent Watch</b> looks for Personally Identifiable Information (PII) in prompts.</p>
<h2 id="5-ai-output-quality"><b>5. AI Output Quality</b></h2>
<p>This is where AI observability starts to diverge significantly from traditional observability.</p>
<p>A conventional application can return HTTP 200 and still be wrong, but in most applications a successful response provides a reasonably strong indication that the operation worked. With AI, a perfectly successful API request can produce a completely useless answer.</p>
<p>AI observability therefore needs to measure things such as <b>correctness, relevance, completeness, helpfulness, instruction-following, and format compliance</b>.</p>
<p>Some of these properties can be evaluated deterministically. Others require reference answers, human evaluation, specialized models, or LLM-as-a-judge techniques. The important point is that an AI system needs to be observed at the level of <b>behavior and outcomes</b>, not just infrastructure.</p>
<p>We need to evaluate the quality of AI outputs for the same reason that traditional information retrieval systems. For comparison, there we had very <a href="https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)" target="_blank" rel="noopener noreferrer">established metrics like precision, recall, mean reciprocal rank, and normalized discounted cumulative gain</a>, etc.</p>
<p><b>Arize Phoenix</b> provides evaluators that can be applied to production traces, including LLM-as-a-judge evaluations. <b>W&amp;B Weave</b> similarly supports custom scorers and LLM judges, allowing teams to continuously evaluate production behavior.</p>
<h2 id="6-hallucinations-and-groundedness"><b>6. Hallucinations and Groundedness</b></h2>
<p>Few things are more important to monitor in generative AI than hallucinations.</p>
<p>As we’ve all seen, an LLM can produce an answer that sounds authoritative and convincing while being completely fabricated. Monitoring hallucinations means determining whether the answer is supported by the information available to the model and whether the claims it makes are consistent with that information.</p>
<p>This is particularly important for RAG applications. When an answer is wrong, you want to know whether the problem was retrieval, generation, or both. Did the system retrieve the wrong documents? Did it retrieve the right documents but fail to use them? Or did the model simply invent information despite having the correct context?</p>
<p><b>Ragas</b> is an open-source framework focused heavily on evaluating RAG applications, including metrics around faithfulness and answer relevance. <b>Arize Phoenix</b> provides RAG and grounding-related evaluations that can be connected directly to application traces.</p>
<h2 id="7-rag-and-retrieval"><b>7. RAG and Retrieval</b></h2>
<p>Similar to the above, for every retrieval operation, you may want to know the query that was generated, which documents or chunks were returned, their relevance scores, how many were retrieved, which ones actually made it into the prompt, and how long retrieval took.</p>
<p>This lets you distinguish between <i>“the LLM couldn’t answer the question”</i> and <i>“the information required to answer the question was never retrieved.”</i></p>
<p>You can also monitor the components underneath retrieval: embedding generation, embedding-model versions, chunking strategies, vector search latency, filtering, reranking, and retrieval relevance. Changes to any of these can affect the final answer even when the LLM itself hasn’t changed.</p>
<p><b>Arize Phoenix</b> provides tracing and evaluation for RAG pipelines, while <b>W&amp;B Weave</b> can trace retrieval operations and evaluate the quality of retrieved information alongside the generated answer.</p>
<h2 id="8-ai-agents"><b>8. AI Agents</b></h2>
<p>AI agents make observability considerably more complicated.</p>
<p>A conventional LLM application might send a prompt and receive an answer. An agent can decide what to do next, and that can include a whole bunch of things. It can call a tool, inspect the result, make another decision, call another tool, retry an operation, delegate to another agent, and eventually take an action.</p>
<p>For agents, observability therefore needs to capture the <b>trajectory</b> of an execution: what decisions were made, what tools were selected, what arguments were supplied, what results came back, how many iterations occurred, and how the agent ultimately reached its outcome.</p>
<p>This is one of the areas where AI observability is evolving particularly quickly and <b>Sematext AI Agent Watch</b> excels at capturing this.</p>
<h2 id="9-tool-calls-and-actions"><b>9. Tool Calls and Actions</b></h2>
<p>Tools deserve special attention because they turn AI from something that generates text into something that can <b>do things</b>, and that opens a whole new can of security worms.</p>
<p>An agent might have access to a database, browser, CRM, ticketing system, email, internal API, payment system, or cloud infrastructure. AI observability solutions have to be able to show which tools were invoked, when they were invoked, what arguments were passed, what they returned, and whether the action succeeded.</p>
<p>Tool monitoring is also where AI observability starts overlapping heavily with security.</p>
<p>An agent might make a technically valid API call but use the wrong API, access data it shouldn’t access, repeatedly retry an expensive operation, or perform an action that violates organizational policy. Monitoring tool usage creates both an operational record and a behavioral baseline.</p>
<p><b>Sematext AI Agent Watch, Langfuse</b>, <b>LangSmith</b>, and <b>Arize Phoenix</b> all expose tool calls as part of AI execution traces. OpenTelemetry is also working toward standardized semantic conventions for tool execution, making tool calls increasingly interoperable with traditional distributed tracing.</p>
<h2 id="10-ai-memory-and-state"><b>10. AI Memory and State</b></h2>
<p>Many agentic applications maintain state between interactions.</p>
<p>That state might contain conversation history, user information, summaries, retrieved facts, intermediate results, or persistent agent memory. Observability should show what was written to memory, what was subsequently retrieved, and how that information affected the agent’s behavior.</p>
<p>Memory creates some unusual failure modes. An agent can remember something that is wrong, retrieve stale information, accumulate excessive context, expose information from one user to another, or become increasingly expensive as its context grows.</p>
<p><b>Langfuse</b> and <b>LangSmith</b> can incorporate application state and intermediate operations into their traces. OpenTelemetry’s emerging GenAI conventions also recognize memory operations as an observable part of AI application execution.</p>
<h2 id="11-token-usage-and-cost"><b>11. Token Usage and Cost</b></h2>
<p>Every model call potentially has a price attached to it. This aspect of AI monitoring is probably the most familiar to everyone because we all experienced the need for this information the moment we started using AI tools and paying for them.</p>
<p>Observability should therefore track input tokens, output tokens, model-specific costs, cost per request, cost per user, cost per application, and cost over time. For agentic applications, it can be particularly useful to identify which steps in an agent trajectory are consuming the most tokens and money.</p>
<p>I should note that cost monitoring isn’t merely an accounting exercise. It is not of interest only to the CFO and the company management. Unexpected token consumption can reveal poorly designed prompts, unnecessarily large context windows, inefficient RAG pipelines, or agents caught in loops. As such, having insight into token usage and cost also matters for engineering teams. Especially if they want to preempt having their managers or CFOs on their backs.</p>
<p><b>Langfuse</b> has token and cost tracking built directly into its LLM observability capabilities. <b>W&amp;B Weave</b> exposes token usage and cost alongside traces and evaluations, making it possible to correlate cost with latency and quality. LLM token usage and cost monitoring is also built into <b>Sematext AI Agent Watch</b>, plus it allows pricing comparison across all known models, not just those used in your organization or by your AI applications.</p>
<h2 id="12-model-and-prompt-drift"><b>12. Model and Prompt Drift</b></h2>
<p>How many new models and model versions have we seen in the last 12 months? It would take me a while to list them all. Well, no, I could just ask AI, couldn’t I? But my point is that AI applications don’t stay static, far from it.</p>
<p>Models are upgraded. Providers change model versions. Prompts evolve. Retrieval data changes. Fine-tuned models are retrained. User populations change. All of these can and do alter application behavior.</p>
<p>Observability therefore needs to identify behavioral changes over time and help correlate those changes with what changed in the system. A sudden decline in answer quality may have nothing to do with application code, it could be the result of a model update or a change to the retrieval dataset.</p>
<p><b>W&amp;B Weave</b> provides versioning and experiment tracking for models, prompts, datasets, and other components of AI applications. <b>MLflow</b> provides open-source tracking of models, experiments, versions, and deployments, making it particularly useful for organizations operating both traditional ML and generative AI systems.</p>
<h2 id="13-ai-security"><b>13. AI Security</b></h2>
<p>AI introduces an entirely new class of security problems. We have already seen some, like zero-day vulnerabilities being discovered (which is all fine until the wrong people do that first).</p>
<p>These include <b>prompt injection, jailbreaks, sensitive-data exposure, malicious inputs, unsafe outputs, data exfiltration, excessive permissions, tool abuse, and attacks against AI supply chains</b>.</p>
<p>Security observability needs to monitor not only what users send to the AI system but also what the AI system attempts to do. For an agent, that can mean detecting unusual tool sequences, attempts to access sensitive resources, policy violations, or behavior that deviates from established patterns.</p>
<p>This AI security monitoring is one of the key foci of <b>Sematext AI Agent Watch</b>. <b>Lakera</b> focuses on runtime protection for generative AI applications, including threats such as prompt injection and sensitive-data exposure. <b>NVIDIA NeMo Guardrails</b> is an open-source framework for implementing programmable controls around AI applications. <b>Protect AI</b> focuses more broadly on security across the machine-learning and AI software supply chain.</p>
<h2 id="14-ai-inventory-and-governance"><b>14. AI Inventory and Governance</b></h2>
<p>There is one final problem that becomes increasingly important as organizations deploy, knowingly or not, AI at scale:</p>
<p><b>Do you actually know what AI you have running?</b></p>
<p>An organization may have dozens or hundreds of models, LLM applications, AI agents, MCP servers, vector databases, and autonomous workflows. Some may have been formally approved. Others may have been deployed by individual engineering teams or employees without centralized visibility.</p>
<p>AI observability therefore increasingly overlaps with AI governance. Organizations need to know which models and agents exist, who owns them, which models they use, what data they can access, what tools they can invoke, and what policies govern their behavior.</p>
<p>This is especially important for autonomous agents. Traditional monitoring asks whether a service is healthy. AI governance asks a different question:</p>
<p><b>Is this AI allowed to be doing what it is doing?</b></p>
<h2 id="15-responsible-ai"><b>15. Responsible AI</b></h2>
<p>This may feel a little abstract to some readers, and it’s rather different from the more “techy” aspects of AI monitoring, but it is really important at the level of our global society. AI systems can fail in ways that aren’t captured by conventional notions of correctness.</p>
<p>Depending on the application, teams may need to monitor toxicity, harmful content, bias, inappropriate refusals, unfair treatment of different user groups, or systematic differences in model performance.</p>
<p>These properties are usually best monitored through continuous evaluation of production traffic, combined with segmentation and human review. The goal isn’t simply to find one problematic response. It is to discover patterns.</p>
<p><b>Arize Phoenix</b> supports automated evaluations, human annotations, and user feedback, allowing safety and quality signals to be attached to individual traces. <b>W&amp;B Weave</b> supports production monitors that can use evaluators and LLM judges to score live application behavior for characteristics such as correctness, helpfulness, and other application-specific criteria.</p>
<h2 id="16-user-feedback-and-business-outcomes"><b>16. User Feedback and Business Outcomes</b></h2>
<p>Ultimately, AI systems are deployed to accomplish something useful. Without that, what’s the point?</p>
<p>That might mean answering a customer’s question, resolving a support case, helping a developer write code, recommending a product, detecting fraud, or completing an agentic workflow. AI observability should therefore connect AI telemetry to <b>real-world outcomes</b>.</p>
<p>This is easier said that done, but at the end of the day we want to be able to answer questions such as: Did the user accept the answer? Did they ask the same question again? Did they correct the AI? Did they escalate to a human? Did the recommendation result in a purchase? Did the coding agent actually produce working code?</p>
<p><b>W&amp;B Weave</b> supports collecting human feedback and associating it with application traces. <b>Arize Phoenix</b> likewise supports human annotations and user feedback, allowing teams to connect subjective assessments with the exact AI execution that produced them.</p>
<h2 id="bringing-ai-observability-together"><b>Bringing AI Observability Together</b></h2>
<p>These 16 dimensions can seem like a lot… and, in my opinion, they are indeed a lot. That’s because modern AI applications are a lot more complicated than simply calling an LLM API. The good news is that all of these are more or less optional. Sort of. ;)</p>
<p>I grouped all the angles of AI monitoring into four layers that I think are a useful way to think about the landscape:</p>
<p><b>First is infrastructure observability:</b> GPUs, CPU, memory, network, availability, latency, throughput, and model-serving performance.</p>
<p><b>Second is AI execution and security observability:</b> model calls, prompts, tokens, context, retrieval, embeddings, tool calls, agents, memory, and end-to-end traces.</p>
<p><b>Third is AI quality and safety observability:</b> hallucinations, groundedness, correctness, relevance, bias, toxicity, security violations, and other behavioral characteristics.</p>
<p><b>Finally, there is outcome observability:</b> cost, user satisfaction, task completion, conversion, business impact, and governance.</p>
<p>The first layer looks a lot like traditional observability. The higher you go, the more AI-specific the problems become. And that’s the fundamental difference between monitoring an AI application and monitoring a conventional application.</p>
<p>Traditional observability can tell you that <b>the system is running, how fast (think performance metrics) and what it did (think log messages)</b>.</p>
<p>AI observability needs to tell you <b>what the AI did, why it did it, whether it was correct and safe, how much it cost, and whether it accomplished what you wanted</b>.</p>
<p>That is a much bigger problem and a much more interesting one. This is why we are seeing the mushrooming of AI monitoring solutions covering various angles of AI that I described here.</p>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/ai-observability-what-should-you-monitor-in-ai-applications/">AI Observability: What Should You Monitor in AI Applications?</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Best AI Agent Monitoring Tools in 2026: Reviews &#038; Comparisons</title>
		<link>https://sematext.com/blog/best-ai-agent-monitoring-tools/</link>
		
		<dc:creator><![CDATA[Otis]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 14:05:48 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[AI agents]]></category>
		<category><![CDATA[infrastructure monitoring]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Tools & comparisons]]></category>
		<category><![CDATA[ai agents]]></category>
		<category><![CDATA[Infrastructure Monitoring]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=71062</guid>

					<description><![CDATA[<p>While doing research for this post I realized there are really a few different categories of AI (agent) monitoring. Even what exactly we mean by “AI agent” needs to be specified because currently, due to these concepts still being relatively new, the terminology is still hazy and in flux. I plan on writing about all [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/best-ai-agent-monitoring-tools/">Best AI Agent Monitoring Tools in 2026: Reviews &#038; Comparisons</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>While doing research for this post I realized there are really a few different categories of AI (agent) monitoring. Even what exactly we mean by “AI agent” needs to be specified because currently, due to these concepts still being relatively new, the terminology is still hazy and in flux. I plan on writing about all that in more detail in a separate post.</p>
<h2 id="what-are-ai-agents">What are AI Agents?</h2>
<p>Let’s define this first. For the purposes of this post we can think of them as applications that are “clients” of LLM models through providers of AI services, such as OpenAI, Anthropic, and so on. These AI agents are popping up like mushrooms after the rain and are becoming real production software. They are no longer just chatbots that answer questions, but systems that can call APIs, execute shell commands, read and modify files, query databases, browse the web, send messages, and delegate work to other agents.</p>
<p>That radically changes the monitoring problem and actually adds a whole new bucket of things one ought to monitor now.</p>
<p>When you run a normal application in production, you mostly want to know whether it is available, fast, and error-free. With AI agents running everywhere now, those questions still matter, but they’re no longer enough. An agent can be technically healthy while doing something completely wrong.</p>
<p>It can successfully call every API and still misunderstand the task. It can spend hundreds of dollars on model calls because it got stuck in a loop. It can select the wrong tool, expose information it shouldn’t, or take an action that nobody explicitly intended it to take.</p>
<p>And there is another problem that I think will become increasingly important: <b>sometimes the organization may not even know that an AI agent is running on its infrastructure.</b></p>
<p>That is why I think “AI agent monitoring” is really becoming two related but distinct categories:</p>
<ol>
<li aria-level="1"><b>Monitoring the AI application you intentionally built</b>, including traces, model calls, latency, cost, and quality.</li>
<li aria-level="1"><b>Discovering and monitoring autonomous agents running on your infrastructure</b>, including what they are doing and whether they create security or governance risks.</li>
</ol>
<div style="background: rgba(220,38,38,0.06); border-left: 3px solid #DC2626; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #7f1d1d;"><strong style="color: #991b1b;">Most of the tools in this article are primarily focused on the first problem. A smaller number are beginning to address the second. Serious organizations will eventually need both. See also: <a href="https://sematext.com/blog/best-ai-agent-governance-tools/">Best AI Agent Governance Tools</a></strong></div>
<h2 id="what-is-ai-agent-monitoring">What is AI agent monitoring?</h2>
<p>AI agent monitoring sits somewhere between several things we already know from software engineering, but it isn’t exactly the same as any one of them:</p>
<ul>
<li aria-level="1"><b>Application performance monitoring (APM).</b> Agents are still software, so you need to know whether they’re slow, failing, retrying excessively, or consuming unreasonable amounts of CPU, memory, or other resources. Traditional application monitoring covers part of this problem, but it usually can’t explain <i>why</i> an agent decided to take a particular action.</li>
<li aria-level="1"><b>Distributed tracing.</b> A useful agent trace is more than a request flowing through microservices. An agent might call an LLM, decide to invoke a tool, inspect the result, call another model, delegate work to another agent, and repeat the process several times. You want to be able to reconstruct that chain and understand how one decision led to the next.</li>
<li aria-level="1"><b>LLM observability.</b> This adds visibility into things traditional tracing doesn’t normally care about: prompts, model responses, token consumption, model selection, context size, and inference costs. This is essential when the model itself is part of the application’s decision-making process.</li>
<li aria-level="1"><b>Evaluation and testing.</b> With traditional software, I can often write a deterministic test: given input X, expect output Y. Agents are different. They may take different paths and still produce acceptable results, or they may successfully complete every API call while producing a completely wrong answer. Monitoring should therefore include some way of measuring quality, not just whether the software crashed.</li>
<li aria-level="1"><b>Security monitoring.</b> This is the area I think will become much more important as agents get more autonomy. Once an agent can execute commands, read files, access APIs, use credentials, browse the web, or communicate with other systems, you absolutely need visibility into what it is actually doing—not just what it was <i>supposed</i> to do, but what it did, which commands it called, while files it read, created, deleted or modified, which information is sent out and where, and so on.</li>
<li aria-level="1"><b>Infrastructure monitoring.</b> Finally, there is a very practical problem that most AI observability tools don’t solve: how do I know which agents are running in the first place? An organization may have agents running on developer machines, servers, containers, CI/CD infrastructure, or Kubernetes clusters without a central inventory of them.</li>
</ul>
<p>That combination is what makes AI agent monitoring different from simply adding another dashboard to an existing observability stack.</p>
<p>So for those two distinct categories I described earlier, there are also two fundamentally different questions we want monitoring to answer.</p>
<p>The first is:</p>
<p><b>Is my agent working correctly?</b></p>
<p>For that, we care about the agent’s execution path. What did it decide? Which model did it call? Which tools did it use? Where did it fail? How long did it take? How much did it cost? The first four bullets from the above list are all about this.</p>
<p>The second question is more uncomfortable:</p>
<p><b>What AI agents are actually running in my environment, and what are they doing?</b></p>
<p>That means being able to determine whether an agent is accessing files, executing shell commands, connecting to external systems, using credentials, or behaving in ways that violate security policies. That’s what the last two bullet points are about.</p>
<div style="background: rgba(220,38,38,0.06); border-left: 3px solid #DC2626; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #7f1d1d;"><strong style="color: #991b1b;">Most products in this category are very good at the first problem. Much fewer address the second. And the second problem is clearly going to become increasingly important.</strong></div>
<h2 id="why-ai-agent-monitoring-is-important">Why AI agent monitoring is important</h2>
<p>The obvious reason for monitoring agents (in that first category mentioned above) is debugging. Agents are complicated systems. When something goes wrong, you need to understand what happened.</p>
<p>But I think the bigger reason will increasingly be security. That’s that second category.</p>
<p>We are giving software systems capabilities that we would traditionally give only to trusted applications or humans. Agents can access production systems, use credentials, execute commands, modify files, communicate with external services, and sometimes make decisions with relatively little human intervention.</p>
<p>That creates a muuuuuuuch larger attack surface.</p>
<p>Recent security incidents involving major AI organizations and AI infrastructure, including <a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/" target="_blank" rel="noopener noreferrer">incidents affecting organizations such as OpenAI and the broader open-source AI ecosystem around Hugging Face</a>, are reminders that AI infrastructure is not somehow separate from normal security problems. It contains credentials, proprietary models, sensitive data, source code, APIs, and increasingly powerful workloads. Keep in mind that whatever you read about incidents like the one from OpenAI/Hugging Face is likely not the full scope of the incident. Not everything is shared. Especially when it may hurt those organizations. Too much interest, too much money is at stake.</p>
<p>At the same time, research into autonomous agents is showing behavior that should make engineers pay attention. In controlled environments, agents have found unexpected ways around constraints, coordinated with other agents, left persistent information for other agents, exploited loopholes in their environments, and, in some evaluations, attempted to hide or preserve behavior when their goals conflicted with being shut down or modified.</p>
<p>Again, I think the problem is much bigger than what is publicly being shared. This is not science fiction any more, this is reality today. We must not ignore what these early incidents  are showing us.</p>
<p>We are building systems with:</p>
<ul>
<li aria-level="1">more autonomy,</li>
<li aria-level="1">access to more tools,</li>
<li aria-level="1">more persistent memory,</li>
<li aria-level="1">more access to infrastructure,</li>
<li aria-level="1">more ability to communicate,</li>
<li aria-level="1">and fewer humans directly involved in every decision.</li>
</ul>
<p>It is entirely reasonable to expect that these systems will eventually do things their designers did not anticipate. And let’s actually be real: they are really already doing that today.</p>
<p>Eventually, some of those things will be malicious, not necessarily because the underlying model suddenly develops malicious intent, but because an agent can be manipulated, compromised, given a harmful objective, or simply find an unexpected path toward accomplishing the objective it was given. It doesn’t have quite the full reasoning we have. It doesn’t really have empathy. It doesn’t really discern the way (good) humans do.</p>
<p>Security engineers have spent decades learning that you don’t wait until something becomes a widespread incident before you start monitoring it. In other words, even if you are not running any AI agents in your infrastructure today, I’m of the opinion that you should be prepared and put in place measures and tools to catch agents when they do show up. This is very much like e.g., virus or malware monitoring on your own computer. You don’t install an antivirus after it’s already on your computer, after it has already stolen your credentials, read and sent out sensitive data, spread to the rest of the network, encrypted your files and started blackmailing you, etc. No, smart people have antivirus running well ahead of such incidents and catch issues before they happen.</p>
<p>That’s how I think companies should approach AI agents.</p>
<h2 id="what-should-an-ai-agent-monitoring-tool-actually-do">What should an AI agent monitoring tool actually do?</h2>
<p>If I were evaluating these products, I wouldn’t start with a long feature checklist. I’d start with a few practical questions. So back to my 2-category starting point:</p>
<p>For an agent application that my team built, I want to know whether I can follow an execution from beginning to end. I want to see the model calls, tools, sub-agents, latency, failures, and cost. I also want some way of determining whether the agent’s output was actually good.</p>
<p>For infrastructure-level monitoring, my questions are different.</p>
<p>Can the system tell me which agents exist without requiring every developer to manually register them?</p>
<p>Can it show me what those agents are doing?</p>
<p>Can I see shell commands, file activity, network connections, tool execution, and access to sensitive information?</p>
<p>Can I identify unusual or risky behavior?</p>
<p>Can I create policies and alerts?</p>
<p>The first category is mostly about <b>observability and engineering quality</b>.</p>
<p>The second is increasingly about <b>security and <a href="https://sematext.com/blog/best-ai-agent-governance-tools/">AI governance</a></b>.</p>
<p>I don’t think those two categories will necessarily converge into one product. In fact, I suspect most companies will use different tools for each.</p>
<h2 id="1-sematext-ai-agent-watch">1. <a href="https://sematext.com/capabilities/ai-agent-watch/">Sematext AI Agent Watch</a></h2>
<p><b>Description</b></p>
<p>Sematext AI Agent Watch addresses a different problem from most of the products in this article.</p>
<p>LangSmith, Langfuse, Phoenix, and similar tools, which I review below, generally start from the assumption that you know about the agent. <i>You</i> built it, <i>you</i> instrumented it, and want to understand its execution.</p>
<p>But not all AI agents running on your infrastructure will be your agents – the agents that you have built and instrumented. There will be third party agents that somebody has installed on your servers for who knows what reason. Thus, AI Agent Watch starts with a more fundamental question:</p>
<p><b>What AI agents are actually running on my infrastructure?</b></p>
<p>It is designed to first discover agents running on monitored hosts and then observe what they are doing. That can include agent sessions, shell commands, tool execution, file activity, network connections, and potential exposure of sensitive information.</p>
<p>I think this is a super important distinction. This is that second category from the beginning of the article.</p>
<p>Additionally, an AI agent, including your own, can be perfectly instrumented at the application level and still be a security problem. Conversely, an agent might be running somewhere in the environment without anyone having instrumented it at all. But you should still want to know about it and its activity, right?</p>
<p>This type of monitoring is about discovering autonomous software and understanding its real-world behavior.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Automatic AI agent discovery</li>
<li aria-level="1">Host-level monitoring</li>
<li aria-level="1">Agent session tracking</li>
<li aria-level="1">Shell command visibility</li>
<li aria-level="1">Tool execution monitoring</li>
<li aria-level="1">File read and write monitoring</li>
<li aria-level="1">Network connection monitoring</li>
<li aria-level="1">Sensitive-data detection</li>
<li aria-level="1">Trusted and untrusted agent tracking</li>
<li aria-level="1">Risk scoring</li>
<li aria-level="1">Alert rules and reporting</li>
<li aria-level="1"><a href="https://sematext.com/capabilities/ai-agent-governance/">AI agent governance</a></li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Solves a problem most LLM observability tools don’t address</li>
<li aria-level="1">Can discover agents without application-level instrumentation</li>
<li aria-level="1">Strong infrastructure and security perspective</li>
<li aria-level="1">Useful for detecting risky behavior</li>
<li aria-level="1">Focuses on real actions rather than only prompts and responses</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Not a replacement for detailed LLM tracing</li>
<li aria-level="1">Not primarily an evaluation platform</li>
<li aria-level="1">Most useful where you control or monitor the underlying infrastructure</li>
</ul>
<p><b>Pricing</b></p>
<p>Sematext AI Agent Watch pricing is tied to the monitored infrastructure and Sematext plan. It starts at $1.68/host/month.</p>
<p><b>My Opinion</b></p>
<p><b>What I like:</b> I think this addresses a problem that will become increasingly important: you can’t govern or secure agents if you don’t know they exist.</p>
<p>Traditional AI observability starts after someone deliberately instruments an agent. Infrastructure-level discovery starts earlier.</p>
<p>It asks:</p>
<p><b>What autonomous software is running, where, and what is it actually doing?</b></p>
<p>I think that will eventually become a standard security question.</p>
<p><b>What I dislike:</b> I wouldn’t use it alone for agent quality, prompt debugging, or detailed model-level evaluation. For those problems, I would pair it with Langfuse, LangSmith, or Phoenix.</p>
<h2 id="2-langsmith">2. <a href="https://smith.langchain.com/" target="_blank" rel="noopener noreferrer">LangSmith</a></h2>
<p><b>Description</b></p>
<p>LangSmith is one of the most complete AI application observability platforms. It covers tracing, evaluation, prompt management, datasets, experiments, production monitoring, and feedback collection.</p>
<p>Its biggest strength is that it makes complicated agent executions relatively easy to inspect. If an agent calls multiple models, invokes tools, uses retrievers, and delegates work to sub-agents, LangSmith gives you a structured view of that execution instead of forcing you to reconstruct it from logs.</p>
<p>It is particularly compelling for teams using LangChain or LangGraph, although it is no longer limited to those frameworks.</p>
<p>I see LangSmith as a platform rather than just a tracing tool. That’s useful if you want one place for much of your AI engineering workflow. The trade-off is that you’re adopting a fairly large proprietary platform, and I would think about that before making it the center of everything.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Agent and LLM tracing</li>
<li aria-level="1">Tool and sub-agent visibility</li>
<li aria-level="1">Production monitoring</li>
<li aria-level="1">Offline and online evaluation</li>
<li aria-level="1">Datasets and experiments</li>
<li aria-level="1">Prompt management</li>
<li aria-level="1">Token and cost tracking</li>
<li aria-level="1">User feedback</li>
<li aria-level="1">Dashboards and alerting</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">One of the best tracing experiences in the category</li>
<li aria-level="1">Excellent LangChain and LangGraph integration</li>
<li aria-level="1">Strong combination of observability and evaluation</li>
<li aria-level="1">Mature production workflow</li>
<li aria-level="1">Good cost visibility</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Proprietary platform</li>
<li aria-level="1">Strongest integration is naturally within the LangChain ecosystem</li>
<li aria-level="1">Self-hosting is not the default experience</li>
<li aria-level="1">Pricing is complicated: costs can grow with both usage and team size</li>
</ul>
<p><b>Pricing</b></p>
<p>LangSmith offers a free developer tier and paid plans that combine seats and usage. Pricing changes fairly regularly, so I would check the current pricing page before making a decision, particularly for production-scale workloads.</p>
<p><b>My Opinion</b></p>
<p><b>What I like:</b> The tracing UI is genuinely useful. When debugging a complicated agent, being able to visually follow the execution tree saves a lot of time.</p>
<p><b>What I dislike:</b> I don’t love the idea of tightly coupling my entire AI development workflow to one proprietary platform. If interoperability and deployment flexibility are important to me, I’d look closely at Langfuse or Phoenix as well.</p>
<h2 id="3-langfuse">3. <a href="https://langfuse.com/" target="_blank" rel="noopener noreferrer">Langfuse</a></h2>
<p><b>Description</b></p>
<p>Langfuse is probably my default recommendation for a general-purpose engineering team that wants AI observability without committing too heavily to a single proprietary ecosystem. Keep in mind that when I refer to “AI observability” here I mean that first category described further above.</p>
<p>It provides the things I expect from an AI observability platform: traces, nested agent activity, sessions, token and cost tracking, prompts, datasets, experiments, and evaluations. The important difference is that Langfuse is open source and can be self-hosted.</p>
<p>That makes it particularly interesting for companies that have data residency requirements or simply don’t want every prompt and model response to live in someone else’s SaaS platform.</p>
<p>I also like its OpenTelemetry direction. I think standardization matters in this space, especially because AI frameworks are changing so quickly.</p>
<p>The downside is that flexibility comes with more choices. Langfuse doesn’t force one particular way of building your AI engineering workflow, which I see as an advantage, but some teams may prefer something more opinionated.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">LLM and agent tracing</li>
<li aria-level="1">Agent graphs</li>
<li aria-level="1">Sessions</li>
<li aria-level="1">Token and cost tracking</li>
<li aria-level="1">Prompt management</li>
<li aria-level="1">Datasets and experiments</li>
<li aria-level="1">Online and offline evaluations</li>
<li aria-level="1">OpenTelemetry support</li>
<li aria-level="1">Python and JavaScript SDKs</li>
<li aria-level="1">Self-hosting</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Open-source core</li>
<li aria-level="1">Strong self-hosting story</li>
<li aria-level="1">Framework-agnostic</li>
<li aria-level="1">OpenTelemetry support</li>
<li aria-level="1">Good combination of tracing and evaluation</li>
<li aria-level="1">Reasonable entry pricing</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Self-hosting means operational responsibility</li>
<li aria-level="1">Requires more architectural decisions than highly opinionated platforms</li>
<li aria-level="1">Evaluation still requires engineering work and good datasets</li>
<li aria-level="1">Pricing units require some understanding at scale</li>
</ul>
<p><b>Pricing</b></p>
<p>Langfuse has a free cloud tier, paid cloud plans, and a self-hosted open-source option. This is one of the things that’s good about it: small teams can get started cheaply, while larger organizations have the option to keep more control over their deployment.</p>
<p><b>My Opinion</b></p>
<p><b>What I like:</b> This is probably where I would start for many teams. I like the combination of open source, OpenTelemetry, self-hosting, tracing, and evaluation.</p>
<p><b>What I dislike:</b> It’s less of a “just follow this workflow and everything works” product. If my team wanted maximum convenience and was already committed to LangGraph, LangSmith might be easier.</p>
<h2 id="4-arize-phoenix-and-arize-ax">4. <a href="https://phoenix.arize.com/" target="_blank" rel="noopener noreferrer">Arize Phoenix and Arize AX</a></h2>
<p><b>Description</b></p>
<p>Keep in mind that Dynatrace acquired Arize in August 2026. This means things may change in the future, but for now, this is how I see things:</p>
<p>Phoenix takes a more engineering-oriented approach to AI observability.</p>
<p>The open-source Phoenix project provides tracing and evaluation capabilities, while Arize’s commercial platform adds managed production monitoring and additional enterprise features.</p>
<p>What I find interesting about Phoenix is its emphasis on OpenTelemetry and open infrastructure. That makes it attractive if I don’t want my instrumentation strategy tied to a specific AI framework.</p>
<p>Phoenix is particularly useful for inspecting complex LLM and retrieval workflows and for building evaluation pipelines around them. The managed Arize platform makes more sense when you want those capabilities without operating everything yourself.</p>
<p>The main trade-off is that Phoenix feels more like an engineering platform than a polished, highly opinionated SaaS workflow.</p>
<p>That’s a good thing if your team wants flexibility. It’s less attractive if you just want to install an SDK and immediately have everything configured for you.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">OpenTelemetry-based tracing</li>
<li aria-level="1">LLM and agent observability</li>
<li aria-level="1">Retrieval and RAG inspection</li>
<li aria-level="1">Evaluations</li>
<li aria-level="1">Custom metrics</li>
<li aria-level="1">Production monitoring through Arize</li>
<li aria-level="1">Open-source deployment</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Strong OpenTelemetry support</li>
<li aria-level="1">Open-source option</li>
<li aria-level="1">Good fit for engineering-heavy teams</li>
<li aria-level="1">Strong evaluation capabilities</li>
<li aria-level="1">No immediate vendor lock-in</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">More engineering effort than some SaaS alternatives</li>
<li aria-level="1">Phoenix and Arize AX can be confusing as separate products</li>
<li aria-level="1">Less turnkey for teams without observability experience</li>
<li aria-level="1">Some uncertainty around the future of both Phoenix and Arize XA after acquisition by Dynatrace, known for being expensive and targeting large enterprises with deep pockets.</li>
</ul>
<p><b>Pricing</b></p>
<p>Phoenix is available as open source. Arize also offers managed plans with usage-based pricing and enterprise options.</p>
<p><b>My Opinion</b></p>
<p><b>What I like:</b> I like the architectural direction. OpenTelemetry and open-source instrumentation give me more confidence that I won’t have to completely redo my observability stack when the next AI framework becomes popular.</p>
<p><b>What I dislike:</b> It’s not the product I would choose for a team that wants the simplest possible onboarding experience.</p>
<h2 id="5-braintrust">5. <a href="https://www.braintrust.dev/" target="_blank" rel="noopener noreferrer">Braintrust</a></h2>
<p><b>Description</b></p>
<p>Braintrust is the tool in this list I would look at first if my biggest concern was not debugging, but preventing AI quality regressions.</p>
<p>Tracing is available, but the center of gravity is evaluation. Braintrust is built around datasets, experiments, scorers, production evaluations, and measuring whether AI systems are actually improving.</p>
<p>That philosophy makes sense to me. My background is in text search where similar frameworks exist for pretty much the same reasons – evaluating the quality of results, tuning, feedback, etc.</p>
<p>A beautiful trace can tell me exactly what happened. It still doesn’t tell me whether the agent did a good job.</p>
<p>Braintrust makes evaluation part of the normal engineering workflow. I can define test cases, compare versions, create scoring functions, and evaluate production behavior.</p>
<p>The trade-off is that this approach requires investment. You need meaningful datasets and useful evaluators. The tool can’t invent a good definition of quality for your application.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Agent tracing</li>
<li aria-level="1">Datasets and experiments</li>
<li aria-level="1">Custom scorers</li>
<li aria-level="1">Automated evaluation</li>
<li aria-level="1">LLM-as-a-judge</li>
<li aria-level="1">Production quality monitoring</li>
<li aria-level="1">Token and cost tracking</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Excellent evaluation workflow</li>
<li aria-level="1">Strong support for regression testing</li>
<li aria-level="1">Good production quality monitoring</li>
<li aria-level="1">Useful experiment comparison</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">More expensive than lightweight tracing tools</li>
<li aria-level="1">Requires serious investment in evaluation design</li>
<li aria-level="1">Proprietary platform</li>
<li aria-level="1">Can be more than a small team needs</li>
</ul>
<p><b>Pricing</b></p>
<p>Braintrust offers a free entry tier and paid plans for larger-scale evaluation and production use. Pricing is worth checking carefully because the platform makes the most sense when you are running a meaningful evaluation workflow rather than just collecting traces.</p>
<p><b>My Opinion</b></p>
<p><b>What I like:</b> I agree with the underlying philosophy. AI quality needs to be tested continuously, not treated as something developers inspect manually when a customer complains.</p>
<p><b>What I dislike:</b> If I only need tracing and debugging, I wouldn’t start here.</p>
<h2 id="6-agentops">6. <a href="https://www.agentops.ai/" target="_blank" rel="noopener noreferrer">AgentOps</a></h2>
<p><b>Description</b></p>
<p>AgentOps is more explicitly focused on the practical problem of understanding what an agent did. This is indeed useful. It sounds simple, but it’s not.</p>
<p>When an agent behaves unexpectedly, reproducing the problem can be difficult because LLM-based systems aren’t fully deterministic. AgentOps focuses heavily on tracing agent activity, tool calls, model usage, and the ability to inspect or replay sessions.</p>
<p>I particularly like the idea of replaying an agent’s execution. Traditional debugging tools have taught developers to expect breakpoints, stack traces, and reproducible failures. Agent systems don’t always provide that.</p>
<p>AgentOps tries to close that gap.</p>
<p>Compared with evaluation-first tools like Braintrust, I see AgentOps as more focused on debugging and operational visibility.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Agent tracing</li>
<li aria-level="1">Tool-call visibility</li>
<li aria-level="1">Multi-agent monitoring</li>
<li aria-level="1">Session tracking</li>
<li aria-level="1">Replay and debugging</li>
<li aria-level="1">Token and cost monitoring</li>
<li aria-level="1">Logs and errors</li>
<li aria-level="1">Framework integrations</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Strong focus on practical agent debugging</li>
<li aria-level="1">Useful replay capabilities</li>
<li aria-level="1">Good multi-agent visibility</li>
<li aria-level="1">Broad ecosystem support</li>
<li aria-level="1">Straightforward cost tracking</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Evaluation capabilities are not its strongest differentiator</li>
<li aria-level="1">Proprietary platform</li>
<li aria-level="1">Usage pricing needs to be monitored</li>
<li aria-level="1">Doesn’t solve infrastructure-level agent discovery</li>
</ul>
<p><b>Pricing</b></p>
<p>AgentOps provides a free tier and paid plans based on usage and organizational requirements.</p>
<p><b>My Opinion</b></p>
<p><b>What I like:</b> I like the focus on debugging. When an agent does something weird, my first instinct is to ask what sequence of events led to that behavior.</p>
<p><b>What I dislike:</b> For serious quality engineering, I would probably combine this type of tooling with a stronger evaluation platform.</p>
<h2 id="7-wb-weave">7. <a href="https://wandb.ai/site/weave" target="_blank" rel="noopener noreferrer">W&amp;B Weave</a></h2>
<p><b>Description</b></p>
<p>Weave makes the most sense in organizations that are already using Weights &amp; Biases for ML experimentation. It extends the W&amp;B ecosystem into LLM applications and agents by providing tracing, evaluations, monitoring, experiments, feedback, and production analysis.</p>
<p>The advantage of this approach is continuity. A team that already uses W&amp;B for models and experiments doesn’t have to introduce a completely separate platform for AI application monitoring.</p>
<p>The idea of monitoring production traffic using automated scoring and evaluators also makes sense. That is closer to how I think mature AI applications should operate: continuously checking whether behavior is degrading rather than waiting for users to notice.</p>
<p>The disadvantage is that if you are not already using W&amp;B, the ecosystem advantage is much smaller.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">End-to-end tracing</li>
<li aria-level="1">Token and cost monitoring</li>
<li aria-level="1">Evaluations</li>
<li aria-level="1">Experiment tracking</li>
<li aria-level="1">Production monitoring</li>
<li aria-level="1">Human feedback</li>
<li aria-level="1">Automated scoring</li>
<li aria-level="1">Safety and quality monitoring</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Strong evaluation and experimentation capabilities</li>
<li aria-level="1">Good fit for existing W&amp;B users</li>
<li aria-level="1">Connects development and production workflows</li>
<li aria-level="1">Supports multimodal AI workloads</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Most compelling inside the W&amp;B ecosystem</li>
<li aria-level="1">Broader platform than some teams need</li>
<li aria-level="1">Not focused on infrastructure-level agent discovery</li>
</ul>
<p><b>Pricing</b></p>
<p>Weave pricing depends on the broader W&amp;B platform and organizational usage. I would check the current pricing directly before evaluating it.</p>
<p><b>My Opinion</b></p>
<p><b>What I like:</b> If my organization already used W&amp;B, I would absolutely evaluate Weave before adding another specialized observability vendor.</p>
<p><b>What I dislike:</b> For a conventional software engineering team with no existing ML platform investment, it may feel like more ecosystem than necessary.</p>
<p> </p>
<h2 id="comparison-table">Comparison table</h2>
<table>
<tbody>
<tr>
<td><b>Tool</b></td>
<td><b>Best for</b></td>
<td><b>Tracing</b></td>
<td><b>Evals</b></td>
<td><b>Cost monitoring</b></td>
<td><b>Self-hosting</b></td>
<td><b>Agent discovery</b></td>
<td><b>Security/activity monitoring</b></td>
</tr>
<tr>
<td><a href="https://sematext.com/capabilities/ai-agent-watch/">Sematext AI Agent Watch</a></td>
<td>Discovering and monitoring agents on infrastructure</td>
<td>Activity-level</td>
<td>Limited today</td>
<td>Planned/currently evolving</td>
<td>SaaS agent-based</td>
<td><b>Yes</b></td>
<td><b>Excellent</b></td>
</tr>
<tr>
<td><a href="https://www.smith.langchain.com/" target="_blank" rel="noopener noreferrer">LangSmith</a></td>
<td>LangChain/LangGraph teams</td>
<td>Excellent</td>
<td>Excellent</td>
<td>Yes</td>
<td>Enterprise</td>
<td>No</td>
<td>Limited</td>
</tr>
<tr>
<td><a href="https://langfuse.com/" target="_blank" rel="noopener noreferrer">Langfuse</a></td>
<td>Open-source, framework-agnostic teams</td>
<td>Excellent</td>
<td>Excellent</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>Limited</td>
</tr>
<tr>
<td><a href="https://phoenix.arize.com/" target="_blank" rel="noopener noreferrer">Arize Phoenix / AX</a></td>
<td>OpenTelemetry and evaluation-heavy teams</td>
<td>Excellent</td>
<td>Excellent</td>
<td>Yes</td>
<td>Phoenix: Yes</td>
<td>No</td>
<td>Limited</td>
</tr>
<tr>
<td><a href="https://www.braintrust.dev/docs/" target="_blank" rel="noopener noreferrer">Braintrust</a></td>
<td>Evaluation-first workflows</td>
<td>Good</td>
<td>Excellent</td>
<td>Yes</td>
<td>Enterprise options</td>
<td>No</td>
<td>Limited</td>
</tr>
<tr>
<td><a href="https://www.agentops.ai/" target="_blank" rel="noopener noreferrer">AgentOps</a></td>
<td>Debugging agent execution</td>
<td>Excellent</td>
<td>Moderate</td>
<td>Excellent</td>
<td>Enterprise</td>
<td>No</td>
<td>Some audit capabilities</td>
</tr>
<tr>
<td><a href="https://docs.wandb.ai/weave/concepts/what-is-weave" target="_blank" rel="noopener noreferrer">W&amp;B Weave</a></td>
<td>Teams already using W&amp;B/ML tooling</td>
<td>Excellent</td>
<td>Excellent</td>
<td>Yes</td>
<td>Limited/enterprise-dependent</td>
<td>No</td>
<td>Quality/safety scoring</td>
</tr>
</tbody>
</table>
<h2 id=""></h2>
<h2 id="how-i-would-choose-between-these-tools">How I would choose between these tools</h2>
<p>If I were building an agent application today, I would start by deciding which problem I actually need to solve, which of those two categories of AI monitoring I am primarily after.</p>
<p>If the problem is <b>debugging agent behavior</b>, I would look first at LangSmith, Langfuse, Phoenix, or AgentOps. (Category 1 below)</p>
<p>If the problem is <b>measuring quality and preventing regressions</b>, Braintrust, LangSmith, Langfuse, Phoenix, and Weave are stronger candidates. (Category 1 below)</p>
<p>If <b>OpenTelemetry, open source, and deployment control</b> matter most, I would look closely at Langfuse and Phoenix. (Category 1 below)</p>
<p>If my organization already runs heavily on <b>LangChain/LangGraph</b>, LangSmith would be the obvious first evaluation.</p>
<p>And if the question is:</p>
<p><b>What AI agents are running on my servers, containers, and infrastructure—and what are they actually doing?</b></p>
<p>Then I need something different from application-level tracing. That’s where infrastructure-level monitoring and agent discovery tools become relevant. (Category 2 below)</p>
<h3 id="category-1-ai-application-observability">Category 1: AI application observability</h3>
<p>For tracing, debugging, costs, and evaluations:</p>
<ul>
<li aria-level="1"><b>Langfuse</b> is my default general-purpose recommendation.</li>
<li aria-level="1"><b>LangSmith</b> is the obvious choice for many LangChain/LangGraph teams.</li>
<li aria-level="1"><b>Phoenix</b> is attractive if OpenTelemetry and open source matter.</li>
<li aria-level="1"><b>Braintrust</b> is strongest when evaluations are central to your engineering process.</li>
<li aria-level="1"><b>AgentOps</b> is particularly good for agent execution debugging.</li>
<li aria-level="1"><b>W&amp;B Weave</b> makes the most sense for organizations already invested in the W&amp;B ecosystem.</li>
</ul>
<h3 id="category-2-ai-agent-infrastructure-and-security-monitoring">Category 2: AI agent infrastructure and security monitoring</h3>
<p>This is a different problem. Here I want to know:</p>
<p>Which agents are running on my servers, what are they doing, and are they creating risk?</p>
<p>For that problem, traditional LLM observability products generally aren’t enough because they typically depend on application instrumentation and focus on prompts, model calls, and traces.</p>
<p>That is where a tool such as <b>Sematext AI Agent Watch</b> fits.</p>
<p><b>My preferred architecture for a serious production environment would probably be two layers:</b></p>
<pre>       AI Agent Application
               │
┌──────────────┴──────────────┐
│                             │
▼                             ▼
AI Observability              Infrastructure
Langfuse / LangSmith          AI Agent Watch
Phoenix / Braintrust          │
│                             │
▼                             ▼
Traces, Evals, Cost           Discovery, Files,
Quality, Latency              Commands, Network,
                              PII, Risk, Alerts</pre>
<div style="background: rgba(220,38,38,0.06); border-left: 3px solid #DC2626; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #7f1d1d;"><strong style="color: #991b1b;">That combination is where the market is heading.<br>
Tracing tells me whether the agent is working correctly.<br>
Infrastructure monitoring tells me whether the agent is doing something I should be worried about.<br>
</strong></div>
<p> </p>
<h2 id="feature-comparison">Feature comparison</h2>
<p>Here is another way to compare tools reviewed in this article. You can clearly see the two categories of solutions addressing different angles of AI monitoring.</p>
<table>
<tbody>
<tr>
<td><b>Feature</b></td>
<td><b>Sematext</b></td>
<td><b>LangSmith</b></td>
<td><b>Langfuse</b></td>
<td><b>Arize</b></td>
<td><b>Braintrust</b></td>
<td><b>AgentOps</b></td>
<td><b>W&amp;B Weave</b></td>
<td></td>
</tr>
<tr>
<td>Agent tracing</td>
<td>★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td></td>
</tr>
<tr>
<td>Tool-call tracing</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★</td>
<td>★★★★★</td>
<td>★★★★</td>
<td></td>
</tr>
<tr>
<td>LLM cost tracking</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td></td>
</tr>
<tr>
<td>Offline evaluation</td>
<td>★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★</td>
<td>★★★★★</td>
<td></td>
</tr>
<tr>
<td>Online evaluation</td>
<td>★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★</td>
<td>★★★★★</td>
<td></td>
</tr>
<tr>
<td>Self-hosting</td>
<td>SaaS agent</td>
<td>★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★</td>
<td>Varies</td>
<td></td>
</tr>
<tr>
<td>OpenTelemetry</td>
<td>N/A</td>
<td>★★★</td>
<td>★★★★★</td>
<td>★★★★★</td>
<td>★★★</td>
<td>★★★</td>
<td>★★★</td>
<td></td>
</tr>
<tr>
<td>Agent discovery</td>
<td>★★★★★</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td></td>
</tr>
<tr>
<td>File activity monitoring</td>
<td>★★★★★</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td></td>
</tr>
<tr>
<td>Network activity monitoring</td>
<td>★★★★★</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td>✖</td>
<td></td>
</tr>
<tr>
<td>Security risk detection</td>
<td>★★★★★</td>
<td>★★</td>
<td>★★</td>
<td>★★</td>
<td>★★</td>
<td>★★★</td>
<td>★★★</td>
<td></td>
</tr>
</tbody>
</table>
<p> </p>
<h2 id="my-final-opinion">My final opinion</h2>
<p>I don’t think there is a single best AI agent monitoring tool because the category is splitting into two layers.</p>
<p>The first layer is <b>AI application observability</b>.</p>
<p>This is where tools such as Langfuse, LangSmith, Phoenix, Braintrust, AgentOps, and Weave operate. They help me understand execution, latency, costs, prompts, tools, and quality.</p>
<p>The second layer is <b>AI agent discovery, <a href="https://sematext.com/blog/best-ai-agent-governance-tools/">governance</a>, and infrastructure monitoring</b>.</p>
<p>This layer answers a different question.</p>
<p>Not:</p>
<p>“Why did my application agent make this decision?”</p>
<p>But:</p>
<p>“What autonomous agents are running in my environment, what capabilities do they have, and what are they actually doing?”</p>
<p>I think the first layer is already becoming a standard part of AI application engineering.</p>
<p>The second layer is earlier in its evolution. It’s only emerging. But I suspect it won’t stay that way for long. As agents become more autonomous and get access to more systems, companies are going to need an inventory of those agents. They will need to know which agents can execute commands, access files, use credentials, and communicate externally.</p>
<p>And eventually, monitoring alone won’t be enough. Organizations will want AI policies, AI agent governance, and enforcement around what agents are allowed to do.</p>
<p>So if I were designing a production AI observability today, I would probably use two layers:</p>
<p><b>An AI observability platform</b> to understand whether the agent works correctly.</p>
<p><b>An infrastructure-level agent monitoring platform</b> to understand whether the agent is doing something it shouldn’t.</p>
<p>Those are different problems and both (are going to) matter.</p>
<p> </p>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/best-ai-agent-monitoring-tools/">Best AI Agent Monitoring Tools in 2026: Reviews &#038; Comparisons</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What 13 Years of Building Observability Has Taught Us: The Problems Stay, the Technology Changes</title>
		<link>https://sematext.com/blog/what-13-years-of-building-observability-has-taught-us-the-problems-stay-the-technology-changes/</link>
		
		<dc:creator><![CDATA[Otis]]></dc:creator>
		<pubDate>Wed, 26 Aug 2026 14:40:02 +0000</pubDate>
				<category><![CDATA[AI agents]]></category>
		<category><![CDATA[Frontend & user experience monitoring]]></category>
		<category><![CDATA[infrastructure monitoring]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[OpenTelemetry]]></category>
		<category><![CDATA[Sematext Cloud]]></category>
		<category><![CDATA[Synthetic Monitoring]]></category>
		<category><![CDATA[Tracing]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[eBPF]]></category>
		<category><![CDATA[observability]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=71046</guid>

					<description><![CDATA[<p>Technology moves quickly. As a matter of fact, it’s evolving exponentially. New frameworks appear. New architectures replace old ones. Entire categories of tools emerge, mature, consolidate, and occasionally disappear. A technology that sounds futuristic one year can feel almost boring a few years later. Does anyone still think about NoSQL, for example? After more than [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/what-13-years-of-building-observability-has-taught-us-the-problems-stay-the-technology-changes/">What 13 Years of Building Observability Has Taught Us: The Problems Stay, the Technology Changes</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Technology moves quickly. As a matter of fact, it’s evolving exponentially. New frameworks appear. New architectures replace old ones. Entire categories of tools emerge, mature, consolidate, and occasionally disappear. A technology that sounds futuristic one year can feel almost boring a few years later. Does anyone still think about <a href="https://en.wikipedia.org/wiki/NoSQL" target="_blank" rel="noopener noreferrer">NoSQL</a>, for example?</p>
<p>After more than a decade of building Sematext, one thing stands out to me:</p>
<p><b>Many of the problems we are solving today are remarkably similar to the problems we were trying to solve 10 or 15 years ago.</b></p>
<p>We still want to know:</p>
<ul>
<li aria-level="1">What is happening in our systems?</li>
<li aria-level="1">Why is this application slow?</li>
<li aria-level="1">Where did this request spend its time?</li>
<li aria-level="1">Which services depend on which other services?</li>
<li aria-level="1">What changed?</li>
<li aria-level="1">Where is the bottleneck?</li>
<li aria-level="1">What is consuming the CPU?</li>
<li aria-level="1">What is actually happening on the network?</li>
<li aria-level="1">And, increasingly: what are our AI agents doing?</li>
</ul>
<p>The questions have stayed with us. Ask any developers or sysadmins (that was the term back then) from the end of the last millenium and you’ll see they were asking the same questions 30+ years ago.</p>
<p>What has changed, sometimes dramatically, is the technology available to answer them. And new use cases have emerged (see towards the end of this post).</p>
<p>Looking back at Sematext’s own history is an interesting way to see this technology cycle play out.</p>
<h2 id="platform-gravity"><b>Platform gravity</b></h2>
<p>One of the things that has changed significantly over the last decade is the expectation that monitoring and observability capabilities should work together.</p>
<p>Today, every major monitoring vendor is a platform.</p>
<p>Metrics are not enough. Logs are not enough. Traces are not enough. Customers expect to be able to move between signals, correlate them, share context, and investigate problems without constantly switching tools and losing information along the way. That is now the default expectation.</p>
<p>But it wasn’t always like this. This was not the case as recently as 10-15 years ago.</p>
<p>Sematext was built around this idea early. Back in 2013 and 2014, we were already combining monitoring and log management in what would eventually evolve into Sematext Cloud. At the time, these were treated as separate product categories: New Relic was the leader in monitoring and Splunk in the log monitoring category.  For us, however, they were already parts of the same operational problem. For several years I was scratching my head and wondering why these big vendors attached only these individual observability dimensions and didn’t see what looked obvious to me, that these signals belong together:</p>
<ul>
<li aria-level="1">If a metric suddenly spikes, you want to see the logs.</li>
<li aria-level="1">If an error appears in the logs, you want to understand what was happening with the infrastructure and application.</li>
</ul>
<p>The value was not simply in collecting multiple kinds of data. The value was in connecting them. That basic idea has only become stronger over time.</p>
<p>As far as I am aware, Sematext was the first solution that combined metrics, logs, and later traces into a single observability platform, and later synthetic monitoring, user experience monitoring, infrastructure visibility, maps, profiling-related capabilities, and increasingly AI-related observability in one environment.</p>
<p>Things that have changed are architectures, data volumes, and terminology, but the underlying idea has remained remarkably stable:</p>
<p><b>Operational data becomes much more valuable when it can be understood in context.</b></p>
<h2 id="observability-verticals"><b>Observability verticals</b></h2>
<p>The rise of platforms does not mean the end of focused, single-purpose products. In fact, depending on the goal, there may be more opportunities than ever for specialists.</p>
<p>Platforms are powerful, but they have a natural disadvantage: they are large. Adding a completely new capability to an existing platform involves product strategy, engineering, storage architecture, data models, pricing, user experience, support, documentation, integrations, and the inevitable question of how the new capability fits with everything that already exists.</p>
<p>A specialist can simply focus on solving one problem exceptionally well. That creates an interesting dynamic. A startup can identify an emerging problem, move quickly, build deep expertise, and create technology that would take a larger platform years to reproduce.</p>
<p>Eventually, all platforms face build-versus-buy decisions and oftentimes buying is the obvious answer.</p>
<p>A very recent example is Dash0’s acquisition of Polar Signals. Polar Signals focused deeply on continuous profiling, including CPU, memory, and GPU/CUDA profiling. Dash0, meanwhile, is building a broader observability platform. The acquisition brings Polar Signals’ profiling technology and engineering expertise into that larger platform.</p>
<p>That is a model I expect we will continue to see:</p>
<ol>
<li aria-level="1">A focused company identifies a new problem.</li>
<li aria-level="1">It goes deep.</li>
<li aria-level="1">It builds expertise and technology.</li>
<li aria-level="1">A larger platform recognizes that reproducing all of that internally would be expensive and slow.</li>
<li aria-level="1">The specialist becomes part of the platform.</li>
</ol>
<p>We are seeing similar dynamics around AI. There is a great deal of innovation happening in narrowly focused companies building capabilities around AI agents, AI infrastructure, LLM observability, governance, security, coding agents, and autonomous operations.</p>
<p>Some of the specialist companies will become platforms themselves. Others may become highly valuable pieces of much larger platforms. Some will not make it.</p>
<p>The existence of platform gravity does not eliminate the opportunity for specialists. In many cases, it creates it.</p>
<p>Some recent examples of the AI acquisitions in the observability space:</p>
<ul>
<li aria-level="1">Dynatrace bought Arize AI (August 2026)</li>
<li aria-level="1">Elastic bought Deductive AI (August 2026)</li>
<li aria-level="1">Datadog bought Adaptive ML (June 2026)</li>
</ul>
<h2 id="distributed-tracing-before-the-three-pillars-of-observability"><b>Distributed tracing before “the three pillars of observability”</b></h2>
<p>Distributed tracing is a good example of how terminology can arrive (and also evaporate!) after the technology.</p>
<p>Sematext added distributed transaction tracing in 2015. It was very different from what most people think of when they hear “distributed tracing” today. Our initial implementation focused on JVM applications and used Java bytecode instrumentation. The goal, however, was already familiar: follow transactions through an application and understand where time was being spent.</p>
<p>Today, we have OpenTelemetry and with that we have  standardized APIs and SDKs.</p>
<p>We have auto-instrumentation across many languages, sometimes even multiple choices, like in case of Go (see <a href="https://sematext.com/blog/zero-code-opentelemetry-for-go-obi-vs-otelc/">Zero-Code OpenTelemetry for Go: Runtime Instrumentation with OBI vs. Compile-Time Instrumentation with Otelc</a>).</p>
<p>We have collectors, semantic conventions, OTLP, and increasingly broad ecosystem support.</p>
<p>But the fundamental problem has not changed.</p>
<p>We still want the answer to the same question:</p>
<p><b>Where did the request go, and where did it spend its time?</b></p>
<p>In 2015, the now-familiar “three pillars of observability” framing, referring to metrics, logs, and traces, had not yet become a part of the industry vocabulary. Today, the trifecta of these observability signals is so widely accepted that it is easy to forget how much of the ecosystem around these signals was still forming only a decade ago. And the name, “three pillars of observability” came and went. Nobody uses it any more. The “pillars” keep getting added as observability platforms widen their scope in an endless race to increase customer lifetime value, among other things.</p>
<p>OpenTelemetry itself provides an interesting perspective on how long technology maturation can take.</p>
<p>OpenTelemetry now feels as though it is reaching a much more mature stage in 2026. Its core signals are widely adopted, the tooling is substantially better, and the ecosystem around it is far more developed than it was just a couple of years ago.</p>
<p>But this did not happen overnight. The industry has spent well over a decade converging toward more standardized approaches to collecting and exchanging telemetry.</p>
<h2 id="from-appmap-to-service-map"><strong>From AppMap to Service Map</strong></h2>
<p>In August 2015, Sematext built what we called <b>AppMap</b>. I dug out <a href="http://archive.org" target="_blank" rel="noopener noreferrer">the original AppMap announcements from archive.org</a>. The UI looks super retro 🙂</p>
<p>But behind that old interface was a problem that is still very much with us today:</p>
<p><b>How do you understand the relationships and dependencies inside a distributed system?</b></p>
<p>The technology we had available at the time was different from what we have at our disposal today, of course. There was no OpenTelemetry. There was no broadly adopted, vendor-neutral tracing standard. So we used the signals we could obtain: network packet analysis.</p>
<p>Fast-forward 11 years.</p>
<p>Today, Sematext has a slick <a href="https://sematext.com/docs/service-map/">Service Dependency Map, built on top of OpenTelemetry</a> and modern distributed tracing. A bunch of things are different:</p>
<ul>
<li aria-level="1">The implementation is fundamentally different</li>
<li aria-level="1">The instrumentation model is different</li>
<li aria-level="1">The data model is different</li>
<li aria-level="1">The backend is different</li>
<li aria-level="1">Most obviously, the UI 😂</li>
</ul>
<p>But at the core, both products are trying to answer the same set of questions. We still want and need to know the same:</p>
<pre>2015                                     2026
AppMap                                   Service Map
-----------------------------------------------------------------
What talks to what?                      What talks to what?
What depends on what?                    What depends on what?
Where are dependencies?                  Where are dependencies?
Where might the bottleneck be?           Where is the bottleneck?</pre>
<p>How we go about getting answers to these questions has changed, but the core problem remains.</p>
<h2 id="network-map-major-technology-change"><b>Network Map: major technology change</b></h2>
<p>Here is another example. We also built an early Network Map. We called it <b>NetMap</b>.</p>
<p>It was built so long ago that the original announcement is no longer available on our blog. Somewhere along the way, probably during one of those SEO and content-cleanup projects that every company eventually goes through, the original post disappeared.</p>
<p>The Wayback Machine still has an <a href="https://web.archive.org/web/20190723141111/https://sematext.com/network-monitoring/" target="_blank" rel="noopener noreferrer">archived version of the old Network Monitoring product page</a> from 2019, although the original NetMap itself was built several years before that.</p>
<p>Now, roughly a decade later, <a href="https://sematext.com/docs/network-map/">Sematext has a new Network Map</a>.</p>
<p>The technology behind it is <i>entirely</i> different. The old and new versions are not incremental versions of the same implementation. The agent, the data collection technology, the backend, the frontend, they are all very different and, because of that, the capabilities and usability are substantially better.</p>
<p>The new Network Map is built using eBPF.</p>
<p>And this is where the technology cycle becomes particularly interesting (more towards the end).</p>
<p>eBPF gives us a fundamentally different way to observe what is happening inside modern systems. It allows us to create visibility that would have been much more difficult, or in some cases simply impractical, to build with the technologies available to us a decade ago.</p>
<p>And what are we doing with this, what problems are we solving, what questions are we answering? Well, we are once again answering questions such as:</p>
<ul>
<li aria-level="1">Which processes are communicating?</li>
<li aria-level="1">Which services depend on each other?</li>
<li aria-level="1">What is the network topology?</li>
<li aria-level="1">Where are unexpected connections?</li>
<li aria-level="1">What are the communication paths through the infrastructure?</li>
</ul>
<p>In other words:</p>
<p><b>The implementation is radically different. The core operational question is not.</b></p>
<h2 id="profiling-in-2016-vs-profiling-in-2026-opentelemetry"><b>Profiling in 2016 vs profiling in 2026: OpenTelemetry</b></h2>
<p>Another example is application profiling.</p>
<p>In March 2016, Sematext announced <a href="https://web.archive.org/web/20190819140026/https://sematext.com/blog/on-demand-java-profiling/" target="_blank" rel="noopener noreferrer">on-demand Java profiling</a>. It was very different from what we think of as modern continuous profiling. It was limited to JVM applications. It was on-demand. You would run it for a few minutes to capture and investigate what was happening inside an application.</p>
<p>The goal? Understand where the application was spending its time and resources.</p>
<p>Fast-forward more than 10 years to 2026. In March 2026, <a href="https://opentelemetry.io/docs/specs/otel/profiles/" target="_blank" rel="noopener noreferrer">OpenTelemetry Profiles</a> officially entered public Alpha.</p>
<p>The goal is not just to define another data format. It is to make continuous, low-overhead production profiling a first-class, standardized observability signal that can be correlated with traces, metrics, and logs, and that can be used to profile all kinds for runtimes.</p>
<pre>2016
│
├── On-demand profiling
├── JVM-focused
└── Run it when you need to investigate
 │
 ▼
2026
│
├── Continuous profiling
├── Multiple runtimes and environments
├── Low-overhead production collection
├── eBPF-based approaches
└── Standardization through OpenTelemetry</pre>
<p>The need for finding bottlenecks inside applications running in production, but without having to attach computationally expensive and impractical profiles, has been around for decades. We finally have the means to do that. The open-source standards and technology simply needed time to catch up.</p>
<h2 id="incremental-additions-to-observability"><b>Incremental additions to observability</b></h2>
<p>Looking back over all of this, I think there is a broader lesson.</p>
<p>Observability is often presented as a sequence of new categories.</p>
<ul>
<li aria-level="1">First metrics</li>
<li aria-level="1">Then logs</li>
<li aria-level="1">Then traces</li>
<li aria-level="1">Then profiling</li>
<li aria-level="1">Then eBPF (that provides a substantially better tech for these 4 telemetry signals)</li>
<li aria-level="1">Then OpenTelemetry</li>
<li aria-level="1">Then AI observability</li>
</ul>
<p>And, yes, new technologies genuinely do create new capabilities. But they also repeatedly improve our ability to solve old problems.</p>
<p>Network visibility did not begin with eBPF. Distributed tracing did not begin with OpenTelemetry. Profiling did not begin with continuous profiling platforms. Service dependency visualization did not begin with today’s Service Maps.</p>
<p>The problems often existed first! The technology caught up later. And when new technology arrives, it often does two things at once:</p>
<ol>
<li aria-level="1">It makes existing use cases dramatically better.</li>
<li aria-level="1">It makes entirely new use cases possible.</li>
</ol>
<p>eBPF is a good example. It can be used to solve a whole set of diverse problems:</p>
<ul>
<li aria-level="1">It can help build a new generation of Network Maps</li>
<li aria-level="1">It can also be used for profiling</li>
<li aria-level="1">It can contribute to tracing and application visibility</li>
<li aria-level="1">It can be used for security, network routing, filtering, etc.</li>
</ul>
<p>And the same fundamental ability to observe what software is actually doing can be extended into completely new areas……. including AI.</p>
<h2 id="the-next-frontier-observing-ai-agents"><b>The next frontier: observing AI agents</b></h2>
<p>The AI era is upon us and AI agents introduce a new category of operational questions. It is no longer enough to ask the health of applications, or how much CPU they use, or what are the main bottlenecks, and so on. We now increasingly need to ask questions such as:</p>
<ul>
<li aria-level="1">Which AI agents are running in our environment?</li>
<li aria-level="1">What are they doing?</li>
<li aria-level="1">Which systems are they accessing?</li>
<li aria-level="1">What tools are they using?</li>
<li aria-level="1">What actions are they taking?</li>
<li aria-level="1">Are they behaving according to policy?</li>
<li aria-level="1">Are they creating security or operational risks?</li>
<li aria-level="1">What sensitive data are they sending out to third party services?</li>
<li aria-level="1">….</li>
</ul>
<p>I think we can all relate to this. That is why we recently introduced <a href="https://sematext.com/docs/ai-agent-watch/">Sematext’s AI Agent Watch</a> capabilities. This sort of functionality is desperately needed right around now, whether or not every one of us recognizes this yet or not.</p>
<p>And so the underlying technologies and techniques behind modern observability continue to find new uses. The same industry that spent years learning how to observe servers, processes, services, requests, and code is now applying similar thinking to AI agents.</p>
<p>And this is only the beginning.</p>
<p> </p>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/what-13-years-of-building-observability-has-taught-us-the-problems-stay-the-technology-changes/">What 13 Years of Building Observability Has Taught Us: The Problems Stay, the Technology Changes</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zero-Code OpenTelemetry for Go: Runtime Instrumentation with OBI vs. Compile-Time Instrumentation with Otelc</title>
		<link>https://sematext.com/blog/zero-code-opentelemetry-for-go-obi-vs-otelc/</link>
		
		<dc:creator><![CDATA[Otis]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 15:16:08 +0000</pubDate>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[OpenTelemetry]]></category>
		<category><![CDATA[Tracing]]></category>
		<category><![CDATA[application monitoring]]></category>
		<category><![CDATA[golang]]></category>
		<category><![CDATA[opentelemetry]]></category>
		<category><![CDATA[OpenTelemetry instrumentation best practices]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=71029</guid>

					<description><![CDATA[<p>At Sematext we’ve been using Go for probably about a decade. But we didn’t start instrumenting it with OpenTelemetry until earlier this year. Go has historically had a relatively straightforward but hands-on OpenTelemetry instrumentation model: add the OpenTelemetry SDK, initialize it, instrument the libraries you use, and create custom spans where application-specific context matters. That [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/zero-code-opentelemetry-for-go-obi-vs-otelc/">Zero-Code OpenTelemetry for Go: Runtime Instrumentation with OBI vs. Compile-Time Instrumentation with Otelc</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>At Sematext we’ve been using Go for probably about a decade. But we didn’t start instrumenting it with OpenTelemetry until earlier this year.</p>
<p>Go has historically had a relatively straightforward but hands-on OpenTelemetry instrumentation model: add the OpenTelemetry SDK, initialize it, instrument the libraries you use, and create custom spans where application-specific context matters.</p>
<p>That approach still gives you the most control. But it is no longer the only practical option.</p>
<p>The manual instrumentation approach requires so much work from engineers that we decided to create a general <a href="https://github.com/sematext/sematext-otel-onboarding/tree/main/skills" target="_blank" rel="noopener noreferrer">AI Skill for instrumenting applications with OpenTelemetry SDK</a>, regardless of the runtime/SDK.</p>
<p>Two newer approaches can instrument Go applications with little or no manual source-code instrumentation:</p>
<ul>
<li><b>OpenTelemetry eBPF Instrumentation (OBI)</b> instruments applications at runtime.</li>
<li aria-level="1"><b>OpenTelemetry Go Compile-Time Instrumentation (</b><b>otelc</b><b>) </b>injects instrumentation during the build.</li>
</ul>
<p>Both are part of the OpenTelemetry ecosystem. Both can produce OpenTelemetry telemetry without requiring developers to manually wrap every HTTP handler, database call, gRPC client, or messaging operation.</p>
<p>Both can be described as “zero-code instrumentation”, but they solve the problem at completely different points in the software lifecycle.</p>
<p>OBI asks:</p>
<p><b>How can we observe this application without changing or rebuilding it?</b></p>
<p>Otelc asks:</p>
<p><b>How can we build this application with instrumentation already inside it without manually modifying its source code?</b></p>
<p>This article looks at both approaches from the perspective of a developer, SRE, DevOps engineer, or engineering manager who needs to make a practical decision about instrumenting a Go application.</p>
<h3 id="the-traditional-way-to-instrument-go-with-opentelemetry">The traditional way to instrument Go with OpenTelemetry</h3>
<p>The conventional way to instrument a Go application is to explicitly add OpenTelemetry support to the application using the SDK for Go.</p>
<p>At a high level, that usually means:</p>
<ol>
<li aria-level="1">Adding the <a href="https://opentelemetry.io/docs/languages/go" target="_blank" rel="noopener noreferrer">OpenTelemetry Go API and SDK</a>.</li>
<li aria-level="1">Configuring a TracerProvider.</li>
<li aria-level="1">Configuring exporters.</li>
<li aria-level="1">Instrumenting libraries such as HTTP servers and clients, gRPC, databases, and messaging clients.</li>
<li aria-level="1">Adding custom spans around important application operations.</li>
</ol>
<p>A simplified example might look like this:</p>
<pre>tracer := otel.Tracer("checkout")
ctx, span := tracer.Start(ctx, "reserve_inventory")
defer span.End()
if err := inventory.Reserve(ctx, order); err != nil {
  span.RecordError(err)
  return err
}</pre>
<p>For a more complete example, see our Gin service instrumentation example: <a href="https://github.com/sematext/sematext-otel-onboarding/tree/main/go" target="_blank" rel="noopener noreferrer">https://github.com/sematext/sematext-otel-onboarding/tree/main/go</a></p>
<p>This model has important advantages:</p>
<ul>
<li aria-level="1">You explicitly control where spans start and end.</li>
<li aria-level="1">You can attach application-specific attributes.</li>
<li aria-level="1">You can model important business operations.</li>
<li aria-level="1">You can decide what should and should not become telemetry.</li>
</ul>
<p>The downside is obvious: instrumentation becomes part of the application.</p>
<p>For a sufficiently large system, that can mean touching many services, maintaining instrumentation dependencies, reviewing instrumentation changes, and deciding how deeply each library and operation should be instrumented. This is the type of stuff we faced at Sematext when we said “OK, let’s go and instrument all our Go services now”.</p>
<p>A useful way to think about the landscape is:</p>
<p><img decoding="async" class="alignnone size-full wp-image-71033" src="https://sematext.com/wp-content/uploads/2026/08/01-instrumentation-spectrum.webp" alt="OBI vs OTelc vs Manual OTel instrumentation" width="1600" height="900" srcset="https://sematext.com/wp-content/uploads/2026/08/01-instrumentation-spectrum.webp 1600w, https://sematext.com/wp-content/uploads/2026/08/01-instrumentation-spectrum-300x169.webp 300w, https://sematext.com/wp-content/uploads/2026/08/01-instrumentation-spectrum-1024x576.webp 1024w, https://sematext.com/wp-content/uploads/2026/08/01-instrumentation-spectrum-768x432.webp 768w, https://sematext.com/wp-content/uploads/2026/08/01-instrumentation-spectrum-1536x864.webp 1536w" sizes="(max-width: 1600px) 100vw, 1600px" /></p>
<p>OBI and Otelc occupy different places on that spectrum.</p>
<p>Note that <b>manual instrumentation is far from obsolete</b>, you and your team can still choose this approach. It’s just that the zero-code approaches provide another layer of options. As a matter of fact, as you read this article you will learn that manual instrumentation is still critical in certain situations and complements the auto-instrumentation approaches.</p>
<h3 id="why-zero-code-instrumentation-is-harder-in-go">Why zero-code instrumentation is harder in Go</h3>
<p>Automatic instrumentation is relatively familiar in languages with highly dynamic runtimes.</p>
<p>Java agents can modify or intercept bytecode. Python can wrap functions dynamically. Other runtimes provide mechanisms that make it possible to insert instrumentation after an application has been built.</p>
<p>But Go is different. A Go application is typically compiled into a native binary. Once the binary exists, there is no general-purpose equivalent of loading a Java agent and rewriting the application’s bytecode.</p>
<p>That creates a fundamental choice for automatic instrumentation:</p>
<p><b>Do you instrument the process from outside, or do you modify the application during compilation?</b></p>
<p>OBI takes the first approach and Otelc takes the second.</p>
<p>The architectures look like this.</p>
<h4>OBI: runtime instrumentation</h4>
<p><img decoding="async" class="alignnone size-full wp-image-71034" src="https://sematext.com/wp-content/uploads/2026/08/02-obi-runtime-architecture.webp" alt="OBI Runtime Instrumentation Architecture" width="1600" height="900" srcset="https://sematext.com/wp-content/uploads/2026/08/02-obi-runtime-architecture.webp 1600w, https://sematext.com/wp-content/uploads/2026/08/02-obi-runtime-architecture-300x169.webp 300w, https://sematext.com/wp-content/uploads/2026/08/02-obi-runtime-architecture-1024x576.webp 1024w, https://sematext.com/wp-content/uploads/2026/08/02-obi-runtime-architecture-768x432.webp 768w, https://sematext.com/wp-content/uploads/2026/08/02-obi-runtime-architecture-1536x864.webp 1536w" sizes="(max-width: 1600px) 100vw, 1600px" /></p>
<h4>Otelc: compile-time instrumentation</h4>
<p><img decoding="async" class="alignnone size-full wp-image-71035" src="https://sematext.com/wp-content/uploads/2026/08/03-otelc-build-architecture.webp" alt="OTelc Compile-time Instrumentation Architecture" width="1600" height="900" srcset="https://sematext.com/wp-content/uploads/2026/08/03-otelc-build-architecture.webp 1600w, https://sematext.com/wp-content/uploads/2026/08/03-otelc-build-architecture-300x169.webp 300w, https://sematext.com/wp-content/uploads/2026/08/03-otelc-build-architecture-1024x576.webp 1024w, https://sematext.com/wp-content/uploads/2026/08/03-otelc-build-architecture-768x432.webp 768w, https://sematext.com/wp-content/uploads/2026/08/03-otelc-build-architecture-1536x864.webp 1536w" sizes="(max-width: 1600px) 100vw, 1600px" /></p>
<p>This difference affects deployment, security, portability, ownership, and operational complexity.</p>
<p>Let’s look at each approach in detail.</p>
<h3 id="obi-instrumenting-a-running-go-process">OBI: Instrumenting a running Go process</h3>
<p><b>OpenTelemetry eBPF Instrumentation (OBI)</b> is the OpenTelemetry project’s eBPF-based automatic instrumentation technology.</p>
<p>It was originally based on technology from Grafana Beyla and is now developed as an OpenTelemetry project. OBI’s first OpenTelemetry release was announced in late 2025, and the project has continued to evolve since then.</p>
<p>We are big fans of eBPF at Sematext and have been using it for 10+ years now. When we first started instrumenting our Go applications we chose the OBI approach and included it in <a href="https://github.com/sematext/sematext-otel-onboarding/tree/main/go" target="_blank" rel="noopener noreferrer">our OTel examples for instrumenting Go applications</a>.</p>
<p>The central idea is simple:</p>
<p><b>Run instrumentation outside the application process and observe the application while it runs.</b></p>
<p>Unlike a traditional OpenTelemetry SDK integration, OBI does not require adding OpenTelemetry code to the application binary.</p>
<p>See also: <a href="https://opentelemetry.io/docs/zero-code/obi/setup/" target="_blank" rel="noopener noreferrer">OpenTelemetry eBPF Instrumentation documentation</a></p>
<h4>How OBI works</h4>
<p>OBI uses eBPF to observe application and system behavior. Depending on what is being instrumented, it can capture activity at protocol boundaries and use language-specific techniques, including user-space probes, or <a href="https://sematext.com/ebpf-userland-apps/">uprobes</a>, for supported Go instrumentation.</p>
<p>A simplified flow looks like this:</p>
<pre>         Client
           │
           │ HTTP request
           ▼
┌──────────────────────┐
│      Go service      │
│                      │
│   net/http handler   │◄───── OBI observes
│          │           │       supported operations
│          ▼           │
│     application      │
│       logic          │
│          │           │
│          ▼           │
│    database/sql      │◄───── OBI observes
│                      │
└──────────────────────┘
           │
           │ SQL
           ▼
       PostgreSQL
           │
           ▼
   ┌───────────────┐
   │      OBI      │
   └───────┬───────┘
           │
           ▼
    Trace + metrics</pre>
<p> </p>
<p>OBI can be deployed as:</p>
<ul>
<li aria-level="1">a standalone process,</li>
<li aria-level="1">a Docker container,</li>
<li aria-level="1">a Kubernetes sidecar,</li>
<li aria-level="1">or a Kubernetes DaemonSet.</li>
</ul>
<p>The exact deployment model depends on how broadly you want to instrument the environment.</p>
<h4>What can OBI instrument in Go?</h4>
<p>OBI supports a combination of protocol-level and Go library-level instrumentation.</p>
<p>The current OpenTelemetry documentation lists Go support for technologies including:</p>
<ul>
<li aria-level="1">net/http</li>
<li aria-level="1">HTTP/2</li>
<li aria-level="1">gorilla/mux</li>
<li aria-level="1">Gin</li>
<li aria-level="1">gRPC</li>
<li aria-level="1">database/sql</li>
<li aria-level="1">MySQL drivers</li>
<li aria-level="1">PostgreSQL drivers</li>
<li aria-level="1">Redis</li>
<li aria-level="1">Kafka</li>
<li aria-level="1">Sarama</li>
<li aria-level="1">pgx</li>
</ul>
<p>Compatibility depends on the specific library and version. For example, Go library-level instrumentation is documented for Go 1.17+, while some context propagation capabilities require Go 1.18+.</p>
<p>This is an important practical point. OBI is not simply “watching packets.”</p>
<p>For supported Go libraries, it can use Go-specific instrumentation to capture richer application behavior.</p>
<p>At the same time, it remains fundamentally an <b>out-of-process instrumentation system</b>.</p>
<h4>What using OBI looks like</h4>
<p>Imagine you have an existing Go service, say payment-api, and that it is already running in production.</p>
<p>As such, you may not want to:</p>
<ul>
<li aria-level="1">modify its source code,</li>
<li aria-level="1">change its dependencies,</li>
<li aria-level="1">rebuild it,</li>
<li aria-level="1">or restart it purely to add instrumentation.</li>
</ul>
<p>OBI can be deployed separately and configured to discover or target the application. This is particularly useful for existing workloads.</p>
<p>OBI’s runtime model is one of its strongest characteristics: it can observe applications without making OpenTelemetry instrumentation part of the application’s build artifact. The OpenTelemetry project describes OBI as out-of-process instrumentation that can provide telemetry without application code changes or application restarts in supported scenarios.</p>
<h4>Advantages of OBI</h4>
<h5>1. No source-code changes</h5>
<p>The obvious benefit is that developers do not need to edit the application.</p>
<p>There is no need to:</p>
<pre>git clone --&gt; add instrumentation --&gt; test instrumentation --&gt; commit --&gt; build --&gt; deploy</pre>
<p>Instead, instrumentation can be introduced independently of the application code.</p>
<p>This is particularly attractive when:</p>
<ul>
<li aria-level="1">the application is maintained by another team,</li>
<li aria-level="1">source code is unavailable,</li>
<li aria-level="1">the application is legacy,</li>
<li aria-level="1">you want to instrument an existing fleet,</li>
<li aria-level="1">or the platform team owns observability deployment.</li>
</ul>
<h5>2. No application rebuild</h5>
<p>OBI can instrument supported workloads without requiring you to produce a new binary. This is one of the clearest differences between OBI and Otelc.</p>
<p>Otelc, on the other hand, requires the ability to run the application through an instrumented build process.</p>
<h5>3. Instrumentation can be centrally operated</h5>
<p>OBI is well suited to an infrastructure-oriented operating model. For example, the platform team could choose to deploy OBI as a Kubernetes DaemonSet and have it handle the instrumentation of Go, Java, and Python applications. In other words, the application teams do not necessarily have to independently add and maintain instrumentation.</p>
<p>That can be valuable in organizations with many teams and inconsistent OpenTelemetry adoption.</p>
<h5>4. It is not Go-specific</h5>
<p>OBI can observe applications written in multiple languages. That means an SRE or platform engineering team can use a common instrumentation mechanism across a heterogeneous environment. For organizations operating Go, Java, Python, Node.js, NGINX, and other workloads, that can simplify initial telemetry coverage. This is one of the OBI aspects that we have benefited from at Sematext, as some of our legacy code still uses Java/Kotlin and Node.js.</p>
<h4>The limitations and trade-offs of OBI</h4>
<h5>1. OBI depends on the runtime environment</h5>
<p>OBI is fundamentally a Linux and eBPF-based technology.</p>
<p>That means your deployment environment must support the capabilities OBI needs.</p>
<p>The OpenTelemetry documentation describes OBI as a Linux process that can inspect other running processes and requires elevated privileges or the appropriate Linux capabilities, depending on deployment and configuration.</p>
<p>In containers and Kubernetes, this can become an architectural decision rather than a simple configuration change.</p>
<p>For example, some OBI deployments require or may use:</p>
<ul>
<li aria-level="1">privileged containers,</li>
<li aria-level="1">CAP_SYS_ADMIN,</li>
<li aria-level="1">CAP_PERFMON,</li>
<li aria-level="1">host or shared process namespaces,</li>
<li aria-level="1">access to /proc.</li>
</ul>
<p>The exact requirements depend on the instrumentation and deployment model. Recent kernel security changes can also affect Go instrumentation because OBI uses uprobes for Go-specific instrumentation.</p>
<p>This does not mean OBI is inherently unsuitable for production.It means that the <b>security model must be evaluated by the platform team</b>.</p>
<p>Of course, if your applications don’t run on Linux then OBI is not an option for you at all until other platforms, like Windows, get the needed eBPF support. See <a href="https://github.com/microsoft/ebpf-for-windows" target="_blank" rel="noopener noreferrer">https://github.com/microsoft/ebpf-for-windows</a> for what Microsoft is doing about that for Windows.</p>
<h5>2. Coverage depends on what OBI understands</h5>
<p>OBI can automatically observe supported protocols and libraries, but it does not automatically understand arbitrary application code.</p>
<p>Consider:</p>
<pre>func CalculateEnterpriseDiscount(
    customer Customer,
    contract Contract,
) (Discount, error) {
    // 500 lines of business logic
}</pre>
<p>There is no general way for an external runtime observer to know that this function represents an important business operation. OBI can show what happens around it:</p>
<pre>HTTP request
    │
    ├── database query
    ├── Redis lookup
    ├── gRPC call
    └── Kafka publish</pre>
<p>But it cannot automatically know that CalculateEnterpriseDiscount is an important domain-level operation.</p>
<h5>3. Automatic service names and routes may need tuning</h5>
<p>Because OBI observes applications externally, automatically derived service names, routes, and URLs may not always match how your organization wants to identify services.</p>
<p>The OpenTelemetry documentation specifically calls out route configuration and decoration as something that should be reviewed when generating traces with OBI.</p>
<p>That means you should validate the resulting telemetry rather than assuming that automatic discovery will always produce exactly the naming and cardinality you want.</p>
<h3 id="otelc-instrumenting-go-during-compilation">Otelc: Instrumenting Go during compilation</h3>
<p>The second approach moves instrumentation from runtime to build time.</p>
<p><b>Otelc</b>, the OpenTelemetry Go Compile-Time Instrumentation tool, modifies the Go build process so that supported instrumentation is injected while the application is being compiled.</p>
<p>The resulting application binary contains the instrumentation.</p>
<p>The normal Go build looks like this:</p>
<p>Source code ──► go build ──► Go binary</p>
<p> </p>
<p>While with Otelc it looks like this:</p>
<p>Source code ──► otelc + go build ──► Instrumented Go binary</p>
<p>So if you choose Otelc you will not need to change the application source code, but you will need to alter the build process.</p>
<h4>How Otelc works</h4>
<p>According to the <a href="https://opentelemetry.io/docs/zero-code/go/compile-time/" target="_blank" rel="noopener noreferrer">OpenTelemetry Go compile-time instrumentation documentation</a>, Otelc:</p>
<ol>
<li aria-level="1">Intercepts compilation using the Go toolchain’s -toolexec mechanism.</li>
<li aria-level="1">Matches packages and functions against instrumentation rules.</li>
<li aria-level="1">Injects lightweight hook points.</li>
<li aria-level="1">Links those hooks to OpenTelemetry instrumentation code.</li>
</ol>
<p>The resulting binary contains the instrumentation, so there is no separate runtime instrumentation agent that needs to attach to the process. Operationally, this is simpler because there is no additional moving piece running in production.</p>
<p>Visually things look like this:</p>
<p>Go application (source) ──► Otelc (match rules, inject hooks, link OTel code) ──► Instrumented Go binary ──► OTLP</p>
<p> </p>
<p>The Otelc project uses techniques including <a href="https://en.wikipedia.org/wiki/Trampoline_(computing)" target="_blank" rel="noopener noreferrer">trampoline code injection</a> and function hook mechanisms to connect instrumented functions with OpenTelemetry logic.</p>
<h4>What does using Otelc look like?</h4>
<p>A simple workflow can look like:</p>
<pre>otelc go build -o myapp .</pre>
<p>Alternatively, Otelc can be integrated with the standard Go toolchain using -toolexec.</p>
<p>A documented pattern is:</p>
<pre>otelc setup
export GOFLAGS="${GOFLAGS} '-toolexec=otelc toolexec'"
go build -o myapp .</pre>
<p>This can be useful when a build command is controlled by an existing Makefile, CI system, or another build tool.</p>
<p>Otelc can also be installed as a Go tool dependency in supported Go versions, allowing builds such as:</p>
<pre>go tool otelc go build -o myapp .</pre>
<p>Otelc also supports generating or maintaining instrumentation configuration based on the application’s dependency graph.</p>
<h4>What can Otelc instrument?</h4>
<p>The currently documented set of supported instrumentation includes:</p>
<ul>
<li aria-level="1">net/http</li>
<li aria-level="1">gRPC</li>
<li aria-level="1">database/sql</li>
<li aria-level="1">Gin</li>
<li aria-level="1">Redis</li>
<li aria-level="1">MongoDB</li>
<li aria-level="1">Kubernetes client-go</li>
<li aria-level="1">OpenAI Go SDK</li>
<li aria-level="1">Anthropic Go SDK</li>
<li aria-level="1">Kafka</li>
<li aria-level="1">AWS SDK for Go v2</li>
<li aria-level="1">selected logging libraries for trace/span correlation</li>
</ul>
<p>The supported set will continue to evolve, so it is worth checking the project’s <a href="https://opentelemetry.io/docs/zero-code/go/compile-time/supported-libraries/" target="_blank" rel="noopener noreferrer">current supported-library documentation</a> before choosing it for a specific application.</p>
<h4>Advantages of Otelc</h4>
<h5>1. No manual instrumentation changes</h5>
<p>Developers do not have to manually add instrumentation to every supported library boundary.</p>
<p>The source can remain:</p>
<pre>http.HandleFunc("/checkout", checkoutHandler)</pre>
<p>rather than becoming:</p>
<pre>handler := otelhttp.NewHandler(
    http.HandlerFunc(checkoutHandler),
    "checkout",
)
http.Handle("/checkout", handler)</pre>
<p>The instrumentation is introduced during compilation instead.</p>
<h5>2. No privileged runtime instrumentation process</h5>
<p>Once the application has been built, there is no eBPF process that needs to attach to it.</p>
<p>This can make Otelc attractive in environments where:</p>
<ul>
<li aria-level="1">privileged containers are prohibited,</li>
<li aria-level="1">eBPF is unavailable,</li>
<li aria-level="1">security policy restricts process instrumentation,</li>
<li aria-level="1">or platform teams do not want observability software attaching to production workloads.</li>
</ul>
<p>The OpenTelemetry documentation explicitly identifies this as a use case for compile-time instrumentation.</p>
<h5>3. Instrumentation can reach supported dependencies</h5>
<p>Because Otelc participates in the compilation process, it can instrument supported third-party dependencies that are part of the application’s build. That is useful when you use a library that you do not own but still want to instrument.</p>
<p>For example:</p>
<pre>Your application
       │
       ├── Gin
       ├── gRPC
       ├── database/sql
       ├── Redis
       └── AWS SDK</pre>
<p>Otelc can apply instrumentation rules to supported parts of that dependency graph without requiring you to fork or edit those dependencies.</p>
<h5>4. The build artifact contains the instrumentation</h5>
<p>This changes who owns the operational problem.</p>
<p>With OBI: application deployment + runtime instrumentation deployment</p>
<p>With Otelc: only the instrumented application artifact</p>
<p>The instrumentation becomes part of the software artifact produced by the build. That can fit naturally into organizations where application teams already own their build and deployment pipelines.</p>
<h4>The limitations and trade-offs of Otelc</h4>
<p>Nothing in this world seems to come without downsides… let’s look at Otelc’s cons.</p>
<h5>1. You must control the build</h5>
<p>Otelc requires access to the build process because that is where instrumentation is introduced. This is the most important limitation. If you have a precompiled production binary but cannot rebuild it, Otelc is simply not an option.</p>
<h5>2. The build pipeline becomes part of the instrumentation architecture</h5>
<p>Adding Otelc is not the same as adding another environment variable.</p>
<p>You now need to think about:</p>
<ul>
<li aria-level="1">local developer builds,</li>
<li aria-level="1">CI builds,</li>
<li aria-level="1">release builds,</li>
<li aria-level="1">test builds,</li>
<li aria-level="1">reproducibility,</li>
<li aria-level="1">dependency management,</li>
<li aria-level="1">cross-compilation,</li>
<li aria-level="1">monorepos,</li>
<li aria-level="1">and build caching.</li>
</ul>
<p>The good news is that Otelc is designed to work with the normal Go build workflow and documents approaches for integrating through go tool, direct build wrapping, and -toolexec.</p>
<p>But this should still be treated as a build-system change and tested accordingly.</p>
<h5>3. Coverage is limited to available instrumentation</h5>
<p>Like OBI, Otelc does not automatically understand every Go package. It needs instrumentation rules for the libraries and functions you want to observe.</p>
<p>If you use some framework that is not yet supported by the instrumentation, Otelc will not magically infer its semantics.</p>
<p>You may need to:</p>
<ul>
<li aria-level="1">add manual instrumentation,</li>
<li aria-level="1">create instrumentation for that library,</li>
<li aria-level="1">or accept that the library is not automatically traced.</li>
</ul>
<p>Luckily, the Otelc project includes an <a href="https://opentelemetry.io/docs/zero-code/go/compile-time/configuration/" target="_blank" rel="noopener noreferrer">instrumentation model and documentation for adding support for additional libraries</a>, so this scenario can be handled.</p>
<h5>4. Automatic instrumentation is still not the same as manual application instrumentation</h5>
<p>Otelc can add spans around supported framework and library operations. It does not automatically know which parts of your business logic are important.</p>
<p>For example:</p>
<pre>POST /checkout
       │
       ▼
ValidateOrder
       │
       ├── ReserveInventory
       │
       ├── CalculateDiscount
       │
       ├── ProcessPayment
       │
       └── CreateShipment</pre>
<p>Automatic instrumentation may produce excellent visibility into:</p>
<pre>HTTP server span
       │
       ├── SQL query
       ├── Redis operation
       ├── HTTP call to payment provider
       └── Kafka publish</pre>
<p>But it may not tell you how much time was spent specifically in CalculateDiscount unless you explicitly instrument that operation.</p>
<h3 id="obi-vs-otelc-side-by-side-comparison">OBI vs. Otelc: side-by-side comparison</h3>
<p>The following table summarizes the practical differences.</p>
<table>
<tbody>
<tr>
<td><b>Characteristic</b></td>
<td><b>OBI</b></td>
<td><b>Otelc</b></td>
</tr>
<tr>
<td><b>Instrumentation point</b></td>
<td>Runtime</td>
<td>Build time</td>
</tr>
<tr>
<td><b>Primary mechanism</b></td>
<td>eBPF, protocol observation, and language-specific probes such as uprobes</td>
<td>Go compiler/toolchain integration and injected instrumentation hooks</td>
</tr>
<tr>
<td><b>Source-code changes</b></td>
<td>None required</td>
<td>None required</td>
</tr>
<tr>
<td><b>Application rebuild required</b></td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td><b>Can instrument an existing binary</b></td>
<td>Yes, in supported environments</td>
<td>No</td>
</tr>
<tr>
<td><b>Can observe an already-running process</b></td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td><b>Requires build pipeline changes</b></td>
<td>No, not necessarily</td>
<td>Yes</td>
</tr>
<tr>
<td><b>Requires runtime instrumentation software</b></td>
<td>Yes</td>
<td>No separate attach-time agent</td>
</tr>
<tr>
<td><b>Requires Linux/eBPF support</b></td>
<td>Yes</td>
<td>No eBPF dependency</td>
</tr>
<tr>
<td><b>Requires elevated runtime privileges</b></td>
<td>Often requires privileged operation or specific Linux capabilities, depending on deployment</td>
<td>No eBPF-related runtime privileges</td>
</tr>
<tr>
<td><b>Can instrument supported Go libraries</b></td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td><b>Can instrument supported third-party dependencies</b></td>
<td>Yes, depending on supported protocol/library instrumentation</td>
<td>Yes, when supported instrumentation rules exist</td>
</tr>
<tr>
<td><b>Works when source code is unavailable</b></td>
<td>Potentially, yes</td>
<td>Only if you can rebuild from source</td>
</tr>
<tr>
<td><b>Works with precompiled binaries</b></td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td><b>Cross-language use</b></td>
<td>Yes</td>
<td>Primarily Go</td>
</tr>
<tr>
<td><b>Typical operational owner</b></td>
<td>Platform engineering, SRE, DevOps</td>
<td>Application engineering and/or CI/CD/platform engineering</td>
</tr>
<tr>
<td><b>Best fit</b></td>
<td>Existing workloads and centralized runtime instrumentation</td>
<td>Applications where you control the Go build</td>
</tr>
<tr>
<td><b>Business-level custom spans</b></td>
<td>Requires additional/manual instrumentation</td>
<td>Requires additional/manual instrumentation</td>
</tr>
<tr>
<td><b>Instrumentation deployment</b></td>
<td>Separate from the application artifact</td>
<td>Baked into the build artifact</td>
</tr>
</tbody>
</table>
<p> </p>
<h3 id="obi-vs-otelc-how-to-choose-which-one-to-use">OBI vs. Otelc: how to choose which one to use</h3>
<h4>A simple decision matrix</h4>
<p>A quick way to determine if you should be considering OBI or Otelc is by considering the following scenarios and asking a few questions.</p>
<p>If your starting point is:</p>
<h5>“I have a binary already running and I don’t want to rebuild it.”</h5>
<p>Start with <b>OBI</b>.</p>
<pre>Existing binary?
      │
      ├── Yes ──► OBI is the practical zero-code option
      │
      └── No</pre>
<h5>“I control the build but don’t want to modify the application source.”</h5>
<p>Look at <b>Otelc</b>.</p>
<pre>Control the Go build?
      │
      ├── Yes ──► Otelc is a strong candidate
      │
      └── No ──► Consider OBI</pre>
<h5>“I cannot run privileged instrumentation in production.”</h5>
<p>Look at <b>Otelc</b>.</p>
<pre>eBPF / runtime privileges allowed?
      │
      ├── No ──► Otelc
      │
      └── Yes ──► OBI or Otelc</pre>
<h5>“I need to instrument services in several languages.”</h5>
<p>OBI may provide a better common platform-level approach.</p>
<pre>Go + Java + Python + Node.js
             │
             ▼
            OBI</pre>
<h5>“I need to instrument important internal business operations.”</h5>
<p>Neither automatic approach completely solves the problem. You will probably still want <b>manual instrumentation</b>. Ooops! ;)</p>
<h4>A practical decision tree</h4>
<p>Here is another approach, a decision tree, that will help you quickly see which approach is more suitable.</p>
<p>If you are deciding how to instrument a Go application, start with this:</p>
<pre>                      ┌──────────────────────┐
                      │ Need OpenTelemetry?  │
                      └──────────┬───────────┘
                                 │
                                 ▼
                  ┌────────────────────────────────┐
                  │ Can you modify the application │
                  │ source code?                   │
                  └──────────┬─────────────────────┘
                             │
                ┌────────────┴────────────┐
                │                         │
               Yes                        No
                │                         │
                ▼                         ▼
        Manual instrumentation     Can you rebuild
        is available                the application?
                                      │
                           ┌──────────┴──────────┐
                           │                     │
                          Yes                    No
                           │                     │
                           ▼                     ▼
                     Consider Otelc        Consider OBI
                           │                     │
                           ▼                     ▼
                    Do you need             Does your runtime
                    domain-level spans?     support OBI/eBPF?
                           │                     │
                           ▼                     ▼
                  Add manual spans        Deploy and validate
                  where they matter       supported coverage</pre>
<p>In practice, the decision often reduces to four questions.</p>
<h5>Question 1: Do I control the build?</h5>
<p>If yes, Otelc becomes an option.</p>
<p>If no, it does not.</p>
<h5>Question 2: Can I run eBPF instrumentation in production?</h5>
<p>If yes, OBI becomes an option.</p>
<p>If no, Otelc may be easier operationally.</p>
<h5>Question 3: Do I need to instrument existing binaries?</h5>
<p>If yes, OBI is the more natural fit.</p>
<h5>Question 4: How much application-specific context do I need?</h5>
<p>If the answer is “a lot,” neither zero-code approach is likely to be sufficient by itself. Plan for some manual instrumentation.</p>
<h3 id="why-automatic-instrumentation-does-not-eliminate-the-need-for-manual-instrumentation">Why automatic instrumentation does not eliminate the need for manual instrumentation</h3>
<p>This is perhaps the most important point in this entire article. It is tempting to think of automatic instrumentation as a replacement for manual instrumentation. In our experience, it usually is not.</p>
<p>Automatic instrumentation and manual instrumentation solve different problems.</p>
<p>Automatic instrumentation is excellent at finding and instrumenting common technical boundaries:</p>
<ul>
<li aria-level="1">HTTP requests,</li>
<li aria-level="1">gRPC calls,</li>
<li aria-level="1">database queries,</li>
<li aria-level="1">Redis operations,</li>
<li aria-level="1">messaging operations,</li>
<li aria-level="1">cloud SDK calls,</li>
<li aria-level="1">and other supported libraries.</li>
</ul>
<p>Manual instrumentation is where you describe what your application actually does.</p>
<p>Consider a checkout service.</p>
<p>Automatic instrumentation may give you:</p>
<pre>POST /checkout                           820 ms
│
├── SELECT customer                      12 ms
├── SELECT inventory                     18 ms
├── Redis GET                             3 ms
├── POST payment-provider               410 ms
└── Kafka publish                         8 ms</pre>
<p>This is indeed already extremely useful and you should aim for this as your first step.</p>
<p>But your engineering team may care about something different:</p>
<pre>Checkout
│
├── ValidateOrder
├── ReserveInventory
├── CalculateDiscount
├── ProcessPayment
└── CreateShipment</pre>
<p>Those are domain operations. Neither OBI or Otelc can reliably infer that these operations are important simply by observing technical behavior.</p>
<p><strong>The most effective approach is often a hybrid.</strong></p>
<pre>                HTTP request
                       │
                       ▼
        ┌──────────────────────────┐
        │ Automatic instrumentation│
        └────────────┬─────────────┘
                     │
              Application code
                     │
                     ▼
        ┌─────────────────────────┐
        │   Manual business spans │
        │                         │
        │ ReserveInventory        │
        │ CalculateDiscount       │
        │ ProcessPayment          │
        └────────────┬────────────┘
                     │
                     ▼
        ┌──────────────────────────┐
        │ Automatic instrumentation│
        │ SQL / Redis / gRPC / etc │
        └──────────────────────────┘</pre>
<p>For OBI specifically, OpenTelemetry also provides the <a href="https://opentelemetry.io/docs/zero-code/go/autosdk/" target="_blank" rel="noopener noreferrer">Go Instrumentation Auto SDK</a>, which is intended to help integrate manually created spans with eBPF-generated spans and shared trace context.</p>
<p>That makes the hybrid model especially relevant:</p>
<div style="background: rgba(220,38,38,0.06); border-left: 3px solid #DC2626; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #7f1d1d;"><strong style="color: #991b1b;">Use automatic instrumentation for broad baseline coverage. Add manual spans only where application-specific context materially improves observability.</strong></div>
<p>This avoids two extremes:</p>
<h4>Extreme 1: Instrument nothing automatically</h4>
<p>Every team has to manually instrument every HTTP framework, database driver, messaging library, and client.</p>
<h4>Extreme 2: Instrument everything automatically and assume the result is sufficient</h4>
<p>You get infrastructure-level telemetry but may lack the domain context required to answer questions such as:</p>
<ul>
<li aria-level="1">Why is checkout slow?</li>
<li aria-level="1">Which business operation failed?</li>
<li aria-level="1">How much time is spent calculating pricing?</li>
<li aria-level="1">Which customer workflow is affected?</li>
<li aria-level="1">Did the payment provider fail, or did our own validation logic reject the request?</li>
</ul>
<p>The best observability, as I hope I’ve illustrated so far in this article, usually combines the two approaches.</p>
<p> </p>
<h3 id="conclusion">Conclusion</h3>
<p> </p>
<p>OBI and Otelc represent two fundamentally different approaches to zero-code OpenTelemetry instrumentation for Go.</p>
<p><b>OBI instruments from the outside.</b></p>
<p>It is attractive when you want to observe applications that already exist, especially when rebuilding or modifying them is difficult. It can be deployed independently of the application and can support a centralized, platform-owned instrumentation model.</p>
<p><b>Otelc instruments from the inside—during the build.</b></p>
<p>It is attractive when you control the Go build process and want supported OpenTelemetry instrumentation to become part of the resulting binary without manually modifying application source code. It also avoids the need for a privileged runtime eBPF instrumentation process.</p>
<p>Neither approach eliminates the value of manual instrumentation.</p>
<p>A practical architecture for many teams will look like this:</p>
<pre>┌─────────────────────────────────────────────┐
│           Automatic instrumentation         │
│                                             │
│   OBI or Otelc                              │
│                                             │
│   HTTP • gRPC • SQL • Redis • Kafka • etc.  │
└───────────────────────┬─────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────┐
│           Manual instrumentation            │
│                                             │
│   Business operations                       │
│   Domain-specific spans                     │
│   Important attributes                      │
│   High-value application context            │
└───────────────────────┬─────────────────────┘
                        │
                        ▼
              OpenTelemetry backend</pre>
<p>The practical goal should not necessarily be to choose one instrumentation method and use it everywhere. Instead, choose the method that best fits the part of the system you are trying to observe.</p>
<ul>
<li aria-level="1"><b>Need visibility into existing workloads without rebuilding them?</b> Start with OBI.</li>
<li aria-level="1"><b>Control the Go build and want instrumentation baked into the binary?</b> Look at Otelc.</li>
<li aria-level="1"><b>Need detailed visibility into business operations?</b> Add manual instrumentation.</li>
<li aria-level="1"><b>Need all three?</b> A hybrid approach may be the most useful architecture.</li>
</ul>
<p>For implementation details and current compatibility information, start with the authoritative project documentation:</p>
<ul>
<li aria-level="1"><a href="https://opentelemetry.io/docs/zero-code/obi/setup/" target="_blank" rel="noopener noreferrer">OpenTelemetry eBPF Instrumentation (OBI)</a></li>
<li aria-level="1"><a href="https://opentelemetry.io/docs/zero-code/obi/configure/export-data/" target="_blank" rel="noopener noreferrer">OBI Go instrumentation compatibility and supported libraries</a></li>
<li aria-level="1"><a href="https://opentelemetry.io/docs/zero-code/go/compile-time/" target="_blank" rel="noopener noreferrer">OpenTelemetry Go compile-time instrumentation (Otelc)</a></li>
<li aria-level="1"><a href="https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation/blob/main/docs/getting-started.md" target="_blank" rel="noopener noreferrer">Otelc getting started guide and supported libraries</a></li>
<li aria-level="1"><a href="https://opentelemetry.io/docs/zero-code/go/autosdk/" target="_blank" rel="noopener noreferrer">OpenTelemetry Go Instrumentation Auto SDK</a></li>
</ul>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/zero-code-opentelemetry-for-go-obi-vs-otelc/">Zero-Code OpenTelemetry for Go: Runtime Instrumentation with OBI vs. Compile-Time Instrumentation with Otelc</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Best 9 SLO Monitoring Tools in 2026: Review and Comparison Tables</title>
		<link>https://sematext.com/blog/best-slo-monitoring-tools/</link>
		
		<dc:creator><![CDATA[Otis]]></dc:creator>
		<pubDate>Sun, 23 Aug 2026 15:00:43 +0000</pubDate>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Synthetic Monitoring]]></category>
		<category><![CDATA[Tools & comparisons]]></category>
		<category><![CDATA[api monitoring]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[SLO]]></category>
		<category><![CDATA[uptime]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=71024</guid>

					<description><![CDATA[<p>While working on adding SLO monitoring to Sematext we, of course, looked at other vendors and tools and their capabilities and approached. I think you will find this comparison of SLO monitoring platforms to be quite objective and factual. I provide an overview of 9 tools, their pros, cons, info about how their price their [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/best-slo-monitoring-tools/">Best 9 SLO Monitoring Tools in 2026: Review and Comparison Tables</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>While working on adding <a href="https://sematext.com/docs/synthetics/slo/">SLO monitoring to Sematext</a> we, of course, looked at other vendors and tools and their capabilities and approached. I think you will find this comparison of SLO monitoring platforms to be quite objective and factual. I provide an overview of 9 tools, their pros, cons, info about how their price their offering, as well as my take on each tool. The article contains several tool comparison tables comparing these vendors from multiple angles.</p>
<h2 id="key-functionality-to-compare"><b>Key Functionality to Compare</b></h2>
<p>At the basic level, an SLO defines the reliability target for a service—say, <b>99.9% successful requests over 30 days</b>. SLO monitoring turns that target into something actionable by tracking the underlying indicator, calculating error-budget consumption, and warning me when the budget is being burned too quickly.</p>
<p>The core functionality I look for is:</p>
<ul>
<li aria-level="1"><b>Flexible SLIs</b> based on availability, latency, errors, or custom metrics.</li>
<li aria-level="1"><b>Rolling and calendar-based time windows.</b></li>
<li aria-level="1"><b>Error budgets</b>, including remaining budget and burn rate.</li>
<li aria-level="1"><b>Burn-rate alerts</b>, ideally with multi-window alerting.</li>
<li aria-level="1"><b>Good integration with the telemetry I already collect</b>—metrics, traces, logs, or synthetic checks.</li>
<li aria-level="1"><b>Enough flexibility to model real services</b>, without forcing every SLO into a simplistic uptime template.</li>
</ul>
<p>The rest of this comparison focuses on the practical trade-offs: how each tool models SLOs, what data it can use, how usable the UI is, and how much complexity I have to accept to get reliable alerting. Note that service-level objectives are one of those things that sound straightforward until you try to operationalize them, so in addition to reviewing SLO monitoring tools it’s important to spend some time thinking about the SLOs themselves.</p>
<h2 id="quick-comparison"><b>Quick comparison</b></h2>
<p>I reviewed 9 tools. Most offer SLO as part of their wider observability platform, while one is a pure synthetic monitoring and another a purely SLO-focused tool. Here is a very quick high level comparison. There are several additional tables below that I suggest you look through.</p>
<table>
<tbody>
<tr>
<td><b>Tool</b></td>
<td><b>Best fit</b></td>
<td><b>SLI flexibility</b></td>
<td></td>
<td><b>Error-budget alerting</b></td>
<td><b>Pricing shape</b></td>
</tr>
<tr>
<td><b>Sematext</b></td>
<td>APIs, websites, and browser/user-journey reliability</td>
<td>Moderate</td>
<td></td>
<td>Yes</td>
<td>Monitor/usage-based</td>
</tr>
<tr>
<td><b>Datadog</b></td>
<td>Teams already deep in Datadog</td>
<td>High</td>
<td></td>
<td>Yes</td>
<td>Modular, usage-based</td>
</tr>
<tr>
<td><b>New Relic</b></td>
<td>Full-stack observability teams</td>
<td>High</td>
<td></td>
<td>Yes</td>
<td>Data + user/compute</td>
</tr>
<tr>
<td><b>Grafana Cloud</b></td>
<td>Prometheus/Grafana/OpenTelemetry environments</td>
<td>High</td>
<td></td>
<td>Yes</td>
<td>Platform fee + usage</td>
</tr>
<tr>
<td><b>Dynatrace</b></td>
<td>Complex enterprise and cloud environments</td>
<td>Very high</td>
<td></td>
<td>Yes</td>
<td>Platform/usage-based</td>
</tr>
<tr>
<td><b>Elastic Observability</b></td>
<td>Teams using Elastic for logs, metrics, and APM</td>
<td>Very high</td>
<td></td>
<td>Yes</td>
<td>Usage-based</td>
</tr>
<tr>
<td><b>Honeycomb</b></td>
<td>Cloud-native, tracing- and event-centric teams</td>
<td>High</td>
<td></td>
<td>Yes</td>
<td>Event/data-based</td>
</tr>
<tr>
<td><b>Nobl9</b></td>
<td>Organization-wide, vendor-neutral SLO programs</td>
<td>Very high</td>
<td></td>
<td>Yes</td>
<td>Quote-based</td>
</tr>
<tr>
<td><b>Checkly</b></td>
<td>Developer-centric synthetic/API monitoring</td>
<td>Moderate</td>
<td></td>
<td>Limited</td>
<td>Monitor/check-run based</td>
</tr>
</tbody>
</table>
<h2 id="slo-monitoring-tools-a-practical-comparison"><b>SLO Monitoring Tools: A Practical Comparison</b></h2>
<p>SLO monitoring has become one of the more useful ways to answer a deceptively simple question: <b>is my service actually reliable enough?</b></p>
<p>I don’t mean “are all the dashboards green?” or “did CPU stay below 80%?” I mean whether users are getting the level of availability and performance that the service is supposed to provide.</p>
<p>A <b>Service Level Indicator (SLI)</b> is the measurement. A <b>Service Level Objective (SLO)</b> is the target for that measurement over a period of time. If my API successfully serves 99.9% of requests over 30 days, the SLO might be 99.9% availability. The remaining 0.1% is the <b>error budget</b>—the amount of unreliability I can afford before missing the objective.</p>
<p>SLO monitoring matters because raw monitoring data does not tell me how much a problem matters. A service can generate thousands of errors and still be within its reliability objective. Conversely, a relatively short outage can consume a huge chunk of the error budget and require immediate attention.</p>
<p>The core capabilities I look for are:</p>
<ul>
<li aria-level="1">Flexible ways to define SLIs for availability, latency, errors, throughput, or custom business signals.</li>
<li aria-level="1">Rolling and calendar-based evaluation windows.</li>
<li aria-level="1">Accurate error-budget calculations.</li>
<li aria-level="1">Burn-rate monitoring and alerting.</li>
<li aria-level="1">Support for grouping, filtering, and managing large numbers of SLOs.</li>
<li aria-level="1">Good integration with the telemetry I already collect.</li>
<li aria-level="1">Automation through APIs, Terraform, or configuration-as-code.</li>
<li aria-level="1">A practical path from an SLO violation to the logs, metrics, traces, or synthetic checks that explain it.</li>
</ul>
<p>The tools below take noticeably different approaches. Some treat SLOs as one capability inside a larger observability platform. Others, especially Nobl9, treat SLO management as the product itself.</p>
<h2 id="tool-comparison"><b>Tool Comparison</b></h2>
<table>
<tbody>
<tr>
<td><b>Tool</b></td>
<td><b>Primary category</b></td>
<td><b>Best for</b></td>
<td><b>Native SLO/error-budget management</b></td>
<td><b>External synthetic monitoring</b></td>
</tr>
<tr>
<td>Sematext</td>
<td>Full-stack + synthetics</td>
<td>API, website, and user-journey reliability</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Datadog</td>
<td>Enterprise observability</td>
<td>Teams already using Datadog</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>New Relic</td>
<td>Full-stack observability</td>
<td>APM-centric teams</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Grafana Cloud</td>
<td>Cloud-native observability</td>
<td>Prometheus and OpenTelemetry teams</td>
<td>Yes</td>
<td>Through integrations</td>
</tr>
<tr>
<td>Dynatrace</td>
<td>Enterprise/full-stack observability</td>
<td>Complex enterprise and cloud environments</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Elastic Observability</td>
<td>Enterprise/full-stack observability</td>
<td>Flexible SLI definitions across multiple data types</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Honeycomb</td>
<td>Cloud-native observability</td>
<td>Tracing and event-based reliability</td>
<td>Yes</td>
<td>Indirectly</td>
</tr>
<tr>
<td>Checkly</td>
<td>Synthetic monitoring</td>
<td>Monitoring-as-code and developer workflows</td>
<td>SLO-style reliability workflows</td>
<td>Yes</td>
</tr>
<tr>
<td>Nobl9</td>
<td>Dedicated SLO platform</td>
<td>Vendor-neutral SLO programs</td>
<td>Yes</td>
<td>Via data sources</td>
</tr>
</tbody>
</table>
<p> </p>
<h2 id="1-sematext">1. <a href="https://sematext.com/">Sematext</a></h2>
<p>Sematext takes a relatively straightforward approach to SLO monitoring. Its current SLO functionality is built around synthetic monitoring, allowing me to create objectives from existing HTTP and browser monitors rather than requiring new instrumentation or a separate telemetry pipeline. That makes it particularly suitable for services where the thing I actually want to measure is externally observable behavior: can the API be reached, does the website respond quickly enough, and can a browser complete a critical user journey?</p>
<p>The implementation tracks compliance over configurable windows and provides error-budget visibility and early warnings. Sematext also connects the reliability view with the rest of its monitoring stack, including logs, infrastructure monitoring, and tracing. The main trade-off is that this is not trying to be a universal, vendor-neutral SLO layer that can model every imaginable SLI from every backend. It is simpler and more opinionated.</p>
<p><img decoding="async" class="alignnone size-full wp-image-70862" src="https://sematext.com/wp-content/uploads/2026/07/slo-screen-details.png" alt="SLO Error Budget and Compliance Charts and Alerts" width="2220" height="1494" srcset="https://sematext.com/wp-content/uploads/2026/07/slo-screen-details.png 2220w, https://sematext.com/wp-content/uploads/2026/07/slo-screen-details-300x202.png 300w, https://sematext.com/wp-content/uploads/2026/07/slo-screen-details-1024x689.png 1024w, https://sematext.com/wp-content/uploads/2026/07/slo-screen-details-768x517.png 768w, https://sematext.com/wp-content/uploads/2026/07/slo-screen-details-1536x1034.png 1536w, https://sematext.com/wp-content/uploads/2026/07/slo-screen-details-2048x1378.png 2048w" sizes="(max-width: 2220px) 100vw, 2220px" /></p>
<p> </p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">SLOs built from HTTP and browser synthetic monitors.</li>
<li aria-level="1">Availability and performance-oriented objectives.</li>
<li aria-level="1">Configurable compliance targets and time windows.</li>
<li aria-level="1">Remaining error-budget tracking.</li>
<li aria-level="1">Historical and live compliance views.</li>
<li aria-level="1">Early warning and alerting before an objective is violated.</li>
<li aria-level="1">Synthetic checks from multiple locations.</li>
<li aria-level="1">Monitoring of APIs, websites, user journeys, and third-party dependencies.</li>
<li aria-level="1">Correlation with other Sematext telemetry.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Very little setup if synthetic monitors already exist.</li>
<li aria-level="1">Good fit for externally visible services and user-facing reliability.</li>
<li aria-level="1">Easy to understand without becoming an SRE research project.</li>
<li aria-level="1">Useful for monitoring third-party APIs against expected reliability.</li>
<li aria-level="1">Integrates with logs, metrics, tracing, and other Sematext capabilities.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Less flexible than tools that can define SLOs directly from arbitrary metrics or multiple external data sources.</li>
<li aria-level="1">Not as strong for organizations that want every SLO managed through Git and a formal SLO-as-code workflow.</li>
<li aria-level="1">Synthetic-monitor-based SLOs are not a replacement for every internal service-level indicator.</li>
</ul>
<p><b>Pricing</b></p>
<p>Sematext currently offers a 14-day free trial. Synthetic Monitoring starts at <b>$2 per monitor per month</b> on monthly pricing, or <b>$1.80 per monitor per month</b> with annual pricing. SLO functionality is associated with the synthetic monitoring workflow, so the practical cost depends primarily on the monitors required to measure the service.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>What I like is the lack of ceremony. If I already have HTTP or browser monitors, turning those measurements into an SLO is a pretty natural next step. I also like the fact that an external SLO can represent what users actually experience rather than what an internal metric claims is happening.</p>
<p>What I dislike is the relative lack of flexibility compared with something like Nobl9 or a metric-centric implementation. If I want to define complex internal SLIs across arbitrary telemetry sources, this would not be my first choice.</p>
<h2 id="2-datadog">2. Datadog</h2>
<p>Datadog has one of the more mature general-purpose SLO implementations. It supports metric-based, monitor-based, and time-slice SLOs, which gives me several different ways to model reliability. Metric-based SLOs work well when I can clearly define good and bad events. Monitor-based SLOs build on existing monitors, synthetic checks, or service checks. Time-slice SLOs are useful when reliability is defined as a metric satisfying a condition during discrete periods of time.</p>
<p>Datadog also provides error-budget and burn-rate alerting, SLO tagging, search, historical views, APIs, and Terraform support. If my infrastructure, APM, logs, and synthetics are already in Datadog, this is an obvious place to keep SLOs because the data is already there. The downside is the same one that applies to Datadog generally: the platform is broad, powerful, and easy to expand inside, but the pricing model can become difficult to reason about as more products and telemetry are added.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Metric-based SLOs.</li>
<li aria-level="1">Monitor-based SLOs.</li>
<li aria-level="1">Time-slice SLOs.</li>
<li aria-level="1">Availability, latency, and custom metric use cases.</li>
<li aria-level="1">Error-budget tracking.</li>
<li aria-level="1">Burn-rate indicators and alerts.</li>
<li aria-level="1">Rolling windows.</li>
<li aria-level="1">Grouped SLOs and tags.</li>
<li aria-level="1">SLO search and management views.</li>
<li aria-level="1">API and Terraform support.</li>
<li aria-level="1">Integration with APM, logs, RUM, synthetics, and infrastructure metrics.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Very flexible SLI modeling.</li>
<li aria-level="1">Excellent fit if Datadog is already the telemetry platform.</li>
<li aria-level="1">Good support for both event-based and time-based reliability measurements.</li>
<li aria-level="1">Mature burn-rate alerting.</li>
<li aria-level="1">Strong automation support.</li>
<li aria-level="1">Easy to move from an SLO problem into the rest of the observability stack.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Pricing can be complicated because SLOs are only one part of a larger set of billable products.</li>
<li aria-level="1">The number of possible ways to model an SLO can be confusing for teams new to SRE practices.</li>
<li aria-level="1">Monitor-based SLOs can introduce dependencies on the underlying monitor configuration.</li>
<li aria-level="1">The best experience assumes the relevant telemetry already lives in Datadog.</li>
</ul>
<p><b>Pricing</b></p>
<p>Datadog’s pricing is modular and depends on the products used to collect and evaluate the underlying telemetry. Host-based products, including infrastructure monitoring and some APM offerings, use different billing models, while other capabilities are billed according to consumption. Datadog provides public list pricing, but in practice I would model the cost based on the complete telemetry architecture rather than looking for a standalone “SLO price.”</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>What I like most is flexibility. Datadog can handle the classic “good events divided by total events” model, monitor-based availability, and time-slice definitions without forcing me into a single interpretation of an SLI.</p>
<p>What I dislike is that I would hesitate to introduce Datadog purely for SLO monitoring. It makes the most sense when the organization is already committed to the platform. Otherwise, I am paying for and operating inside a much larger system than the specific SLO problem requires.</p>
<h2 id="3-new-relic">3. New Relic</h2>
<p>New Relic’s Service Level Management is tightly integrated into the rest of the New Relic platform. I can create service levels ranging from relatively simple one-click configurations to more advanced and customizable definitions, then view them alongside applications, workloads, and other observability data. The product also provides alerts and analysis views for tracking reliability over time and investigating breaches.</p>
<p>The advantage is that SLOs are not isolated objects sitting in a separate reliability tool. They are part of the APM and observability workflow. That can be useful when the next step after discovering that an error budget is being consumed is immediately opening the affected service, transaction, trace, or other telemetry.</p>
<p>New Relic’s pricing is also different from the traditional per-host approach. The current public model combines data ingest with user or compute-based access options. That can work well, but I would spend time modeling access requirements before committing.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Guided and advanced service-level creation.</li>
<li aria-level="1">SLI and SLO definitions integrated with New Relic services.</li>
<li aria-level="1">Reliability views across Navigator and Workloads.</li>
<li aria-level="1">Alerting for degradation and breaches.</li>
<li aria-level="1">Period-over-period analysis.</li>
<li aria-level="1">Investigation workflows around SLO breaches.</li>
<li aria-level="1">Integration with APM, infrastructure, logs, synthetics, and other New Relic capabilities.</li>
<li aria-level="1">Support for both simple and more customizable SLO definitions.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Strong integration with the rest of the observability platform.</li>
<li aria-level="1">Relatively approachable SLO creation.</li>
<li aria-level="1">Good fit for teams already using New Relic APM.</li>
<li aria-level="1">Useful free tier for evaluation and smaller deployments.</li>
<li aria-level="1">No need to count hosts as a primary pricing dimension.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Pricing can become more complicated once data volume and platform-user requirements grow.</li>
<li aria-level="1">The experience is best when New Relic is already the primary observability platform.</li>
<li aria-level="1">Some organizations may find the user-access model less attractive than purely telemetry-based pricing.</li>
<li aria-level="1">Less attractive as a standalone, vendor-neutral SLO layer.</li>
</ul>
<p><b>Pricing</b></p>
<p>New Relic’s free tier includes <b>100 GB of data ingest per month</b>, unlimited basic users, and one free full-platform user. Beyond that, public pricing lists original data ingest at <b>$0.40/GB</b> beyond the included allowance. User pricing varies by edition, while New Relic also offers a compute-based model for eligible customers.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>I like New Relic’s integrated approach. If I am already using New Relic for APM, I don’t want to export the same telemetry somewhere else just to calculate an error budget. Keeping the SLO next to the application data is operationally sensible.</p>
<p>What I dislike is the pricing complexity around data, user types, editions, and newer compute models. It is more transparent than some historical observability pricing models, but I would still build a realistic cost model before assuming the free tier or entry pricing reflects production costs.</p>
<h2 id="4-grafana-cloud">4. Grafana Cloud</h2>
<p>Grafana Cloud is particularly interesting to me because it fits naturally into Prometheus and OpenTelemetry-oriented environments. Grafana SLO provides a dedicated workflow for creating and managing SLOs, generating dashboards and alerts, tracking error budgets, and automating configuration through APIs and Terraform.</p>
<p>The biggest advantage is architectural familiarity. If my engineering organization already thinks in PromQL, metrics, recording rules, infrastructure-as-code, and Git-based workflows, Grafana SLO feels like an extension of the existing stack rather than a new conceptual layer. The product can generate supporting dashboards, recording rules, and alerting components instead of requiring me to hand-build everything.</p>
<p>The limitation is that Grafana SLO is a Grafana Cloud capability rather than a general feature of self-hosted open-source Grafana. That distinction matters if my primary reason for choosing Grafana is self-hosting and avoiding a managed SaaS dependency.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Guided SLO creation.</li>
<li aria-level="1">Metric-based SLIs.</li>
<li aria-level="1">Error-budget tracking.</li>
<li aria-level="1">SLO dashboards.</li>
<li aria-level="1">Error-budget alerts.</li>
<li aria-level="1">Generated recording rules.</li>
<li aria-level="1">Generated alerting rules.</li>
<li aria-level="1">API support.</li>
<li aria-level="1">Terraform support.</li>
<li aria-level="1">SLO-as-code workflows.</li>
<li aria-level="1">Integration with the broader Grafana observability stack.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Excellent fit for Prometheus-centric teams.</li>
<li aria-level="1">Strong infrastructure-as-code story.</li>
<li aria-level="1">Familiar workflow for teams already using Grafana.</li>
<li aria-level="1">Good separation between raw telemetry and reliability objectives.</li>
<li aria-level="1">Free tier and relatively accessible entry pricing.</li>
<li aria-level="1">Less architectural lock-in than some all-in-one observability platforms.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">The managed SLO capability is specifically part of Grafana Cloud.</li>
<li aria-level="1">Metric modeling still requires Prometheus/Grafana expertise.</li>
<li aria-level="1">Usage-based pricing can become harder to predict as metric cardinality grows.</li>
<li aria-level="1">The SLO implementation is less useful if my relevant data is not accessible through the supported Grafana Cloud metric workflow.</li>
</ul>
<p><b>Pricing</b></p>
<p>Grafana Cloud has a free tier and a Pro plan starting at <b>$19 per month plus usage</b>. The pricing page currently includes 10,000 active metric series in the platform fee, with additional metrics starting at <b>$6.50 per 1,000 series</b> before volume discounts. Enterprise starts with a <b>$25,000 annual spend commitment</b>.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>I like Grafana Cloud when the organization already has Prometheus expertise. The SLO-as-code and Terraform story is especially important for teams that do not want critical reliability definitions to exist only as manually configured UI objects.</p>
<p>What I dislike is that I still need to understand the underlying metric model. That is not necessarily a flaw—SLOs should be based on carefully chosen indicators—but it means Grafana is not always the easiest tool for a team that wants a highly opinionated, guided reliability workflow.</p>
<h2 id="5-dynatrace">5. Dynatrace</h2>
<p>Dynatrace has a fairly powerful SLO implementation, especially for organizations already using its broader observability platform. I can create SLOs from predefined templates or define custom SLIs using DQL, which means the underlying indicator does not have to be limited to standard availability or latency metrics. Dynatrace can use data available through Grail, including metrics and other data types that can be queried into a time series. The current SLO experience includes error-budget tracking, visualization, and management through a dedicated application, while APIs and SDKs provide automation options. Dynatrace is particularly interesting for complex environments because its topology and entity model can provide useful context around the services being measured. The downside is that the platform is large and opinionated, so using it just for SLO monitoring would usually be excessive.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Template-based SLO creation.</li>
<li aria-level="1">Custom SLI definitions using DQL.</li>
<li aria-level="1">Service availability and performance objectives.</li>
<li aria-level="1">Infrastructure and Kubernetes-oriented templates.</li>
<li aria-level="1">Error-budget tracking.</li>
<li aria-level="1">SLO visualization and dashboard integration.</li>
<li aria-level="1">Entity-aware observability context.</li>
<li aria-level="1">API and SDK support.</li>
<li aria-level="1">Access to multiple Grail data types for SLI definitions.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Very flexible SLI definitions.</li>
<li aria-level="1">Strong fit for large and complex environments.</li>
<li aria-level="1">Good topology and entity context.</li>
<li aria-level="1">Templates make common SLOs easier to create.</li>
<li aria-level="1">Custom DQL opens up nontraditional SLI use cases.</li>
<li aria-level="1">Good API and SDK support.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">A large platform if SLO monitoring is the only requirement.</li>
<li aria-level="1">DQL adds another query language to learn.</li>
<li aria-level="1">Pricing is not simple to evaluate from the SLO feature alone.</li>
<li aria-level="1">The platform can feel more opinionated than Prometheus-centric alternatives.</li>
</ul>
<p><b>Pricing</b></p>
<p>Dynatrace pricing is based on the broader platform and the products or capabilities being used rather than a simple standalone SLO price. I would treat SLO cost as part of the overall observability architecture and request a realistic quote based on data, monitoring scope, and the Dynatrace platform capabilities required.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>What I like is the flexibility. Being able to build an SLI from a custom DQL query means I am not limited to a small set of predefined reliability models. I also like the surrounding context: if an SLO is degrading, topology and entity information can help connect that reliability problem to the actual system.</p>
<p>What I dislike is the weight of the platform. If my team just wants straightforward SLOs on Prometheus metrics, Dynatrace would probably feel like bringing an entire observability platform to solve a narrower problem.</p>
<h2 id="6-elastic-observability">6. Elastic Observability</h2>
<p>Elastic has one of the more flexible SLO implementations among full-stack observability platforms. I can create SLIs from APM availability or latency, synthetic availability, custom metrics, histogram metrics, timeslice metrics, or custom KQL queries against data in Elasticsearch. That is a much broader set of options than tools that restrict SLOs to predefined monitor types.</p>
<p>Elastic supports both rolling and calendar-aligned windows, occurrences- and timeslice-based budgeting, error budgets, and burn-rate alerting. The SLO overview also makes it possible to see historical SLI performance and budget consumption without manually assembling dashboards.</p>
<p>I think Elastic is particularly interesting for teams that already use Elasticsearch for logs or observability data and want to define SLOs from that data without exporting it elsewhere.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">APM availability and latency SLIs.</li>
<li aria-level="1">Synthetic availability SLIs.</li>
<li aria-level="1">Custom KQL-based SLIs.</li>
<li aria-level="1">Custom metric and histogram metric SLIs.</li>
<li aria-level="1">Timeslice and occurrences budgeting.</li>
<li aria-level="1">Rolling and calendar-aligned windows.</li>
<li aria-level="1">Error-budget tracking.</li>
<li aria-level="1">Burn-rate alerts.</li>
<li aria-level="1">Historical SLI and error-budget views.</li>
<li aria-level="1">Dashboard integration.</li>
<li aria-level="1">OpenTelemetry and Prometheus support across the broader observability platform.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">One of the most flexible sets of SLI types in this comparison.</li>
<li aria-level="1">Can build SLOs from logs, metrics, APM, or synthetic data.</li>
<li aria-level="1">Supports both rolling and calendar windows.</li>
<li aria-level="1">Good support for error budgets and burn rates.</li>
<li aria-level="1">Strong fit for teams already using Elastic.</li>
<li aria-level="1">Useful combination of internal observability and external digital-experience monitoring.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Requires learning Elastic’s data model and query language if I want to use the most flexible SLI types.</li>
<li aria-level="1">Not a lightweight standalone SLO tool.</li>
<li aria-level="1">SLO availability depends on the appropriate Elastic deployment and licensing.</li>
<li aria-level="1">Self-managed deployments can require more operational work than SaaS-only alternatives.</li>
</ul>
<p><b>Pricing</b></p>
<p>Elastic’s current serverless Observability Complete tier includes SLO functionality. Serverless pricing is usage-based: Elastic currently lists metrics ingest from <b>$0.023/GB</b>, other observability data from <b>$0.09/GB</b>, plus separate retention and egress charges. Synthetic monitoring is available as an add-on. I would calculate the real cost based on total telemetry volume rather than thinking of SLOs as a separately priced feature.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>What I like most is flexibility. Elastic lets me define an SLO from the data I actually have instead of forcing me to translate everything into one specific metric format. I also like the combination of APM, logs, synthetics, and SLOs in the same platform.</p>
<p>What I dislike is the complexity. Elastic can do a lot, but that also means I need to understand how my data is structured before I can take full advantage of the SLO functionality.</p>
<h2 id="7-honeycomb">7. Honeycomb</h2>
<p>Honeycomb takes a more engineering-centric approach to observability than traditional metrics-first platforms, and its SLO implementation fits that model. SLOs are built from events, which makes them a natural fit for tracing and high-cardinality telemetry. I can define what successful behavior looks like and then track the remaining error budget over the selected time period.</p>
<p>The alerting model is particularly interesting. Honeycomb supports both <b>Exhaustion Time</b> alerts, which estimate when the error budget will run out, and <b>Budget Rate</b> alerts, which trigger when the budget is being consumed faster than expected. The UI also provides a budget-burndown graph that helps tune alerts before blindly picking a burn-rate threshold.</p>
<p>For teams already using OpenTelemetry and distributed tracing heavily, Honeycomb is one of the more natural SLO implementations I would evaluate.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Event-based SLOs.</li>
<li aria-level="1">Error-budget tracking.</li>
<li aria-level="1">Budget burndown visualization.</li>
<li aria-level="1">Historical burn-rate analysis.</li>
<li aria-level="1">Exhaustion Time burn alerts.</li>
<li aria-level="1">Budget Rate burn alerts.</li>
<li aria-level="1">Slack and PagerDuty notification support.</li>
<li aria-level="1">Distributed tracing and OpenTelemetry integration.</li>
<li aria-level="1">High-cardinality telemetry support.</li>
<li aria-level="1">Service-level SLO workflows.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Very natural fit for tracing and event-based telemetry.</li>
<li aria-level="1">Excellent burn-alert model.</li>
<li aria-level="1">Budget-burndown visualization helps tune alerts.</li>
<li aria-level="1">Strong OpenTelemetry support.</li>
<li aria-level="1">Particularly well suited to modern distributed systems.</li>
<li aria-level="1">More engineering-focused than dashboard-heavy.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Less attractive if the organization primarily thinks in Prometheus metrics.</li>
<li aria-level="1">SLOs are not available on the free plan.</li>
<li aria-level="1">The Pro plan includes only two SLOs.</li>
<li aria-level="1">Teams unfamiliar with event-based observability may need to adjust their mental model.</li>
</ul>
<p><b>Pricing</b></p>
<p>Honeycomb has a free plan with up to <b>20 million events per month</b> and <b>100 million metric data points per month</b>. The Pro plan starts at <b>$150 per month</b> and includes <b>2 SLOs</b>. Enterprise pricing is custom and starts with significantly larger trigger and SLO allowances.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>I like Honeycomb because the SLO implementation feels connected to how engineers actually investigate modern distributed systems. If the SLO burns, I can work from the relevant events and traces rather than switching into an entirely separate monitoring model.</p>
<p>What I dislike is the relatively limited number of SLOs in the Pro plan. Two SLOs is enough for evaluation or a small service footprint, but it is restrictive if I want to make SLOs a standard part of every production service.</p>
<h2 id="8-checkly">8. <a href="https://checklyhq.com" target="_blank" rel="noopener noreferrer">Checkly</a></h2>
<p>Checkly represents a different approach from the large observability platforms. It is primarily a synthetic monitoring platform designed around developers and monitoring-as-code. I can define API checks, browser checks, Playwright test suites, uptime monitors, and multistep checks, then manage them through the Checkly CLI, Terraform, or Pulumi.</p>
<p>For SLO-style monitoring, this is useful when the thing I care about is externally observable behavior. Instead of defining availability from an internal metric, I can measure whether an API responds correctly or whether a user can actually complete a critical workflow.</p>
<p>I would not put Checkly in the same category as Nobl9 or Elastic when it comes to arbitrary SLI definitions. Its strength is narrower but useful: taking synthetic tests and treating them as production reliability signals that can be managed like code.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">HTTP, TCP, DNS, ICMP, and heartbeat monitoring.</li>
<li aria-level="1">API and multistep checks.</li>
<li aria-level="1">Browser checks using Playwright.</li>
<li aria-level="1">Playwright Check Suites.</li>
<li aria-level="1">Global and private monitoring locations.</li>
<li aria-level="1">Automatic retries.</li>
<li aria-level="1">Monitoring-as-code workflows.</li>
<li aria-level="1">Checkly CLI.</li>
<li aria-level="1">Terraform provider.</li>
<li aria-level="1">Pulumi provider.</li>
<li aria-level="1">Prometheus metrics export.</li>
<li aria-level="1">Status pages and alerting integrations.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Excellent developer experience.</li>
<li aria-level="1">Strong monitoring-as-code support.</li>
<li aria-level="1">Native Playwright integration.</li>
<li aria-level="1">Useful for testing critical user journeys.</li>
<li aria-level="1">Terraform, Pulumi, and CLI support.</li>
<li aria-level="1">Good fit for CI/CD and production monitoring workflows.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Less flexible for arbitrary internal metric-based SLIs.</li>
<li aria-level="1">Synthetic checks can become expensive at high frequency and across many locations.</li>
<li aria-level="1">Not a full observability platform.</li>
<li aria-level="1">Best suited to externally observable services and workflows.</li>
</ul>
<p><b>Pricing</b></p>
<p>Checkly has a free Hobby plan with <b>10 uptime monitors</b>, <b>10,000 API check runs</b>, and <b>1,000 browser check runs per month</b>. The Starter plan starts at <b>$24 per month</b>, while Team starts at <b>$64 per month</b>. Enterprise pricing is custom. Pricing scales through monitor counts and synthetic check runs.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>What I like is the developer workflow. I would rather keep monitoring definitions in Git and deploy them with the rest of the application infrastructure than manually create hundreds of checks in a UI.</p>
<p>What I dislike is that it is easy to confuse “synthetic monitoring” with complete SLO management. Checkly is excellent when my SLI is based on externally observable behavior, but I would use another tool if I needed to define reliability objectives from arbitrary application metrics.</p>
<h2 id="9-nobl9">9. <a href="https://nobl9.com" target="_blank" rel="noopener noreferrer">Nobl9</a></h2>
<p>Nobl9 is the most specialized SLO product in this comparison. Rather than assuming that SLOs should live inside one observability backend, it acts as a dedicated reliability layer that can connect to multiple existing telemetry systems. Its platform includes error-budget alerting, composite SLOs, backtesting, service-health views, reporting, and a strong SLO-as-code workflow.</p>
<p>That vendor-neutral approach is its biggest differentiator. A large organization may have Datadog in one team, Prometheus in another, New Relic somewhere else, and cloud-native telemetry in yet another environment. Nobl9 is designed to put SLO definitions above those individual systems rather than requiring telemetry consolidation first.</p>
<p>It also has one of the strongest configuration-as-code stories through OpenSLO, YAML-based definitions, Git workflows, validation tooling, and automation. The trade-off is additional platform complexity and a separate product to operate.</p>
<p><b>Key features</b></p>
<ul>
<li aria-level="1">Vendor-neutral SLO management.</li>
<li aria-level="1">Multiple telemetry integrations.</li>
<li aria-level="1">Error-budget tracking and alerting.</li>
<li aria-level="1">Composite SLOs.</li>
<li aria-level="1">SLO backtesting.</li>
<li aria-level="1">Service Health Dashboard.</li>
<li aria-level="1">SLO annotations.</li>
<li aria-level="1">Reporting.</li>
<li aria-level="1">OpenSLO support.</li>
<li aria-level="1">YAML and Git-based workflows.</li>
<li aria-level="1">OpenSLO validation through the Oslo CLI.</li>
<li aria-level="1">SLO-as-code automation.</li>
</ul>
<p><b>Pros</b></p>
<ul>
<li aria-level="1">Purpose-built for SLO management.</li>
<li aria-level="1">Works across heterogeneous observability environments.</li>
<li aria-level="1">Excellent SLO-as-code support.</li>
<li aria-level="1">Strong OpenSLO ecosystem involvement.</li>
<li aria-level="1">Useful for large organizations standardizing reliability practices.</li>
<li aria-level="1">Advanced capabilities such as composite SLOs and backtesting.</li>
</ul>
<p><b>Cons</b></p>
<ul>
<li aria-level="1">Another platform to buy, integrate, and maintain.</li>
<li aria-level="1">Probably excessive for a small team with a handful of services.</li>
<li aria-level="1">Less compelling if all telemetry already lives comfortably in one observability platform.</li>
<li aria-level="1">Public pricing is not as simple as self-service competitors.</li>
</ul>
<p><b>Pricing</b></p>
<p>Nobl9 provides pricing through its sales process rather than publishing a simple per-monitor or per-host price. The pricing offering is aimed at selecting an option based on organizational requirements, so I would expect to request a quote for a real deployment.</p>
<h3 id="my-opinion"><b>My opinion</b></h3>
<p>Nobl9 is the one I would look at if SLOs themselves are becoming a platform concern. If multiple teams use different monitoring systems and I need a consistent reliability model across all of them, a dedicated abstraction layer makes sense.</p>
<p>What I dislike is the obvious trade-off: if I only have 10 services and everything already lives in Grafana, Datadog, or New Relic, adding another product may solve a problem I don’t actually have.</p>
<p> </p>
<h2 id="feature-comparison"><b>Feature comparison</b></h2>
<p>Here is a product-feature matrix for all SLO monitoring tools we are comparing here.</p>
<table>
<tbody>
<tr>
<td><b>Feature</b></td>
<td><b>Sematext</b></td>
<td><b>Datadog</b></td>
<td><b>New Relic</b></td>
<td><b>Grafana Cloud</b></td>
<td><b>Dynatrace</b></td>
<td><b>Elastic Observability</b></td>
<td><b>Honeycomb</b></td>
<td><b>Nobl9</b></td>
<td><b>Checkly</b></td>
</tr>
<tr>
<td>Availability SLOs</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes*</td>
</tr>
<tr>
<td>Latency SLOs</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes*</td>
</tr>
<tr>
<td>Custom metric SLIs</td>
<td>Limited</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Event-based</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Synthetic-monitor-based SLIs</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Indirectly</td>
<td>Yes</td>
<td>Yes</td>
<td>Indirectly</td>
<td>Via data sources</td>
<td>Yes</td>
</tr>
<tr>
<td>Arbitrary query-based SLIs</td>
<td>Limited</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Event/query-based</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Error budgets</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Limited*</td>
</tr>
<tr>
<td>Burn-rate alerting</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Limited*</td>
</tr>
<tr>
<td>Rolling time windows</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Depends on check configuration*</td>
</tr>
<tr>
<td>Calendar-based windows</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No native SLO model</td>
</tr>
<tr>
<td>Multi-window burn-rate alerts</td>
<td>Limited</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No native SLO model</td>
</tr>
<tr>
<td>SLO dashboard / overview</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Check dashboards rather than dedicated SLO views</td>
</tr>
<tr>
<td>Historical error-budget analysis</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Limited*</td>
</tr>
<tr>
<td>API support</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Terraform support</td>
<td>Limited</td>
<td>Yes</td>
<td>Limited</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Limited</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>SLO as code</td>
<td>Limited</td>
<td>Yes</td>
<td>API/Terraform workflows</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>API/configuration-driven</td>
<td>Excellent</td>
<td>Monitoring as code</td>
</tr>
<tr>
<td>OpenSLO support</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Multi-source / vendor-neutral telemetry</td>
<td>No</td>
<td>Primarily Datadog</td>
<td>Primarily New Relic</td>
<td>Yes, within Grafana ecosystem</td>
<td>Primarily Dynatrace</td>
<td>Primarily Elastic</td>
<td>Primarily Honeycomb</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Best data perspective</td>
<td>Synthetic + observability</td>
<td>Full-stack</td>
<td>Full-stack</td>
<td>Metrics / Prometheus / OTel</td>
<td>Full-stack + topology</td>
<td>Logs + metrics + APM + synthetics</td>
<td>Events + traces</td>
<td>Vendor-neutral</td>
<td>External synthetic checks</td>
</tr>
</tbody>
</table>
<p> </p>
<p>* <b>Checkly is the outlier in this table.</b> I would describe it as a synthetic monitoring and monitoring-as-code tool rather than a full native SLO management platform. It can measure availability and latency and can be used to implement reliability targets from checks, but it does not provide the same general-purpose SLI, error-budget, and multi-window burn-rate model as Datadog, Grafana Cloud, Dynatrace, Elastic, Honeycomb, or Nobl9.</p>
<p>This distinction is useful because it prevents the comparison from making Checkly look weaker at something it is not primarily designed to do. Its real strength is <b>defining production checks as code and using them to monitor APIs and critical user journeys</b>.</p>
<p> </p>
<h2 id="which-slo-monitoring-tool-would-i-choose"><b>Which SLO monitoring tool would I choose?</b></h2>
<p>My choice would depend less on the number of features in the product and more on where my telemetry already lives and what I am actually trying to measure.</p>
<p>If I had to narrow the list down based on the problem rather than the vendor:</p>
<table>
<tbody>
<tr>
<td><b>What I need</b></td>
<td><b>Tools I would evaluate first</b></td>
</tr>
<tr>
<td>Simple external/API/user-journey SLOs</td>
<td><b>Sematext, Checkly</b></td>
</tr>
<tr>
<td>SLOs inside an existing observability platform</td>
<td><b>Datadog, New Relic, Dynatrace, Elastic</b></td>
</tr>
<tr>
<td>Prometheus/OpenTelemetry + infrastructure as code</td>
<td><b>Grafana Cloud</b></td>
</tr>
<tr>
<td>Tracing and event-centric observability</td>
<td><b>Honeycomb</b></td>
</tr>
<tr>
<td>Vendor-neutral, organization-wide SLO management</td>
<td><b>Nobl9</b></td>
</tr>
<tr>
<td>Maximum flexibility in a large enterprise environment</td>
<td><b>Dynatrace, Datadog, Elastic</b></td>
</tr>
</tbody>
</table>
<p>The important distinction for me is that <b>Checkly and Sematext are strongest when the SLI represents externally observable behavior</b>, while <b>Datadog, New Relic, Grafana Cloud, Dynatrace, Elastic, and Honeycomb can build SLOs from deeper application telemetry</b>. <b>Nobl9 is different again: its main value is separating the SLO/reliability layer from the underlying observability system.</b></p>
<p>So I would not pick a winner based on a feature checklist. I would first decide where the SLI should come from, and then choose the tool that makes that workflow the least painful.</p>
<p> </p>
<h2 id="final-thoughts"><b>Final thoughts</b></h2>
<p>The most important thing I have learned about SLO monitoring is that the tool is rarely the hard part. The difficult part is choosing an SLI that actually represents user experience and setting an objective that is neither meaningless nor impossible.</p>
<p>A monitoring tool can calculate an error budget perfectly and still give me the wrong answer if I am measuring the wrong thing.</p>
<p>So before comparing vendors too deeply, I would start with a few concrete questions:</p>
<ol>
<li aria-level="1"><b>What user behavior am I trying to protect?</b></li>
<li aria-level="1"><b>What counts as a good event and a bad event?</b></li>
<li aria-level="1"><b>Should every request count equally, or is time-based availability more appropriate?</b></li>
<li aria-level="1"><b>How much unreliability can the business actually tolerate?</b></li>
<li aria-level="1"><b>What should happen when the error budget is being consumed too quickly?</b></li>
<li aria-level="1"><b>Where will engineers go next to investigate the problem?</b></li>
</ol>
<p>Once those answers are clear, the choice usually becomes much easier. For most teams, I would strongly prefer using the SLO capability already available in the observability platform they trust—unless they have a real need for vendor-neutral, organization-wide SLO management.</p>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/best-slo-monitoring-tools/">Best 9 SLO Monitoring Tools in 2026: Review and Comparison Tables</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Top 12 Network Monitoring Tools in 2026: Complete Comparison &#038; Reviews</title>
		<link>https://sematext.com/blog/top-network-monitoring-tools/</link>
		
		<dc:creator><![CDATA[fulya.uluturk]]></dc:creator>
		<pubDate>Thu, 16 Jul 2026 10:17:47 +0000</pubDate>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[network monitoring]]></category>
		<category><![CDATA[service monitoring]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=70791</guid>

					<description><![CDATA[<p>Modern infrastructure is no longer a stack of routers, switches, and racks sitting in a single data center. Most teams now run a mix of Kubernetes clusters, virtual machines, managed cloud services, and SaaS dependencies spread across regions and providers. Knowing which device is up is not the same as knowing whether your application is [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/top-network-monitoring-tools/">Top 12 Network Monitoring Tools in 2026: Complete Comparison &#038; Reviews</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Modern infrastructure is no longer a stack of routers, switches, and racks sitting in a single data center. Most teams now run a mix of Kubernetes clusters, virtual machines, managed cloud services, and SaaS dependencies spread across regions and providers. Knowing which device is up is not the same as knowing whether your application is healthy.</p>
<p>That shift is why network monitoring in 2026 looks very different from a decade ago. Traditional SNMP-based tools still have a place, but cloud-native teams need service-aware visibility, automatic topology discovery, and tight correlation with logs, metrics, and traces. The right tool can cut hours off incident response, surface cost leaks, and replace the architecture diagrams that are always getting outdated that nobody wants to maintain.</p>
<p>This guide compares the 12 best network monitoring tools available in 2026. For each one, you will find the features that matter, honest pros and cons, real pricing, and the kind of team it fits best.</p>
<h2 id="what-is-network-monitoring">What is Network Monitoring?</h2>
<p>Network monitoring is the continuous practice of collecting data about network devices, traffic, and connections to detect performance issues, outages, and security events before they affect users. The data can come from many sources: SNMP polling for device health, NetFlow or sFlow for traffic analysis, packet captures for deep inspection, eBPF for kernel-level connection visibility, and synthetic probes for path validation.</p>
<p>The category has expanded beyond LAN and WAN. In 2026, network monitoring also covers:</p>
<ul>
<li aria-level="1">Pod-to-pod and node-to-node traffic inside Kubernetes clusters</li>
<li aria-level="1">East-west traffic between microservices</li>
<li aria-level="1">Cross-region and cross-cloud connectivity costs</li>
<li aria-level="1">Connections to managed databases, message queues, and SaaS APIs</li>
<li aria-level="1">Suspicious outbound traffic that might signal a compromise</li>
</ul>
<p>Good network monitoring helps teams answer questions like: which services are talking to which databases right now, where is traffic getting slow, which connections are eating our cloud egress budget, and what process on which host opened that unexpected outbound connection.</p>
<h2 id="what-to-look-for-in-a-network-monitoring-tool">What to Look for in a Network Monitoring Tool</h2>
<p>Before comparing tools, here are the criteria that matter most in 2026.</p>
<h3 id="topology-discovery-and-visualization">Topology Discovery and Visualization</h3>
<p>A good tool draws the map for you. Static Visio diagrams go stale the moment someone deploys a new service. Look for automatic discovery and a real-time topology view that updates as your infrastructure changes.</p>
<h3 id="kubernetes-and-cloud-native-support">Kubernetes and Cloud-Native Support</h3>
<p>Containerized workloads are short-lived and dynamic. Tools designed for static IP-based device lists struggle here. Native Kubernetes support, pod-aware identity, and service detection are now table stakes for any team running clusters.</p>
<h3 id="protocol-visibility">Protocol Visibility</h3>
<p>Knowing that two hosts exchanged 500 MB tells you less than knowing that an application server made 12,000 PostgreSQL queries to a specific database. Tools that detect protocols (HTTP, PostgreSQL, MongoDB, Kafka, Redis, and others) give you context, not just byte counts.</p>
<h3 id="auto-detection-of-services">Auto-Detection of Services</h3>
<p>Manually labeling every host and process does not scale. The best tools recognize databases, caches, message queues, web servers, and runtimes automatically based on process names, container images, network signatures, and orchestrator metadata.</p>
<h3 id="correlation-with-logs-metrics-and-traces">Correlation with Logs, Metrics, and Traces</h3>
<p>A network alert in isolation is not very useful. Tools that let you pivot from a network connection to the related logs, application metrics, or distributed traces dramatically reduce time to root cause.</p>
<h3 id="alerting-and-thresholds">Alerting and Thresholds</h3>
<p>Alerts that fire on every minor blip get ignored. Look for tools that support tunable thresholds, baseline-aware anomaly detection, and clear escalation paths.</p>
<h3 id="pricing-transparency">Pricing Transparency</h3>
<p>Network monitoring is one of the categories where cost surprises are most common, especially with consumption-based pricing on flow data or device counts. Predictable, published pricing matters more than free tiers that turn into bill shock at scale.</p>
<h2 id="the-12-best-network-monitoring-tools-in-2026">The 12 Best Network Monitoring Tools in 2026</h2>
<h3 id="1-sematext-network-map">1. Sematext Network Map</h3>
<p><b>Best for: Cloud-native teams that want eBPF-powered service and infrastructure visibility inside a full observability platform</b></p>
<p><a href="https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-scaled.png"><img decoding="async" class="wp-image-70817 size-full" src="https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-scaled.png" alt="Sematext Network Map" width="2560" height="1498" srcset="https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-scaled.png 2560w, https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-300x176.png 300w, https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-1024x599.png 1024w, https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-768x450.png 768w, https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-1536x899.png 1536w, https://sematext.com/wp-content/uploads/2026/05/network-map-2026-07-1-2048x1199.png 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></a></p>
<p> </p>
<p><a href="https://sematext.com/network-monitoring/">Sematext Network Map</a> gives you a real-time, visual representation of your entire infrastructure topology. Using eBPF-powered network insights collected by the Sematext Agent, you can see how services, pods, containers, and processes communicate across Kubernetes clusters and standalone hosts without configuring anything beyond installing the agent.</p>
<p>Instead of polling devices and inferring relationships, Network Map shows the actual connections happening right now. When something breaks, you can immediately see which services are affected and trace the problem to its source. Two complementary views, Services View and Infrastructure View (see <a href="https://sematext.com/docs/network-map/#two-ways-to-view-your-infrastructure">details in the docs</a>), let you flip between application-level dependency analysis and Kubernetes infrastructure drill-down.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1"><b>eBPF-based connection capture</b>: Kernel-level visibility into every connection, no port mirroring or packet capture required. Next to zero overhead.</li>
<li aria-level="1"><b>Two views, one map</b>: Services View for application dependencies, Infrastructure View for cluster, node, pod, container, and process drill-down</li>
<li aria-level="1"><b>Automatic service detection</b>: Over 100 service types recognized out of the box, including PostgreSQL, MySQL, MongoDB, Redis, Kafka, RabbitMQ, Elasticsearch, Nginx, HAProxy, Envoy, and more</li>
<li aria-level="1"><b>Protocol-aware connections</b>: Detects HTTP, PostgreSQL, MongoDB, Kafka, Redis, and dozens of other protocols with traffic volume per connection</li>
<li aria-level="1"><strong>Key metrics</strong>: network latency, round trip time (RTT), packet loss, retransmissions, CPU, memory, disk I/O, HTTP latency, HTTP response codes, etc.</li>
<li aria-level="1"><b>Custom thresholds</b>: Configurable warning and critical levels for CPU, memory, network I/O, and disk I/O so the map highlights what matters in your environment</li>
<li aria-level="1"><b>Color-coded health</b>: Green, yellow, and red service cards and connection lines make problems visible at a glance</li>
<li aria-level="1"><b>Kubernetes-native</b>: Cluster to node to pod to container to process navigation with namespace, deployment, and workload context</li>
<li aria-level="1"><b>Standalone host support</b>: Works equally well for VMs and bare-metal servers, not just containers</li>
<li aria-level="1"><b>Filtering and search</b>: Quickly focus on a namespace, service type, host, or specific service when the topology gets dense</li>
<li aria-level="1"><b>Unified observability</b>: Pivot from network connections to logs, metrics, traces, and synthetic checks in the same UI</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Truly cloud-native and Kubernetes-first, designed for dynamic infrastructure rather than retrofitted onto SNMP foundations</li>
<li aria-level="1">eBPF means no application code changes, no sidecars, and no instrumentation work, and next to zero overhead</li>
<li aria-level="1">Service detection works automatically for the technologies most teams actually run</li>
<li aria-level="1">Integrated with the rest of the Sematext platform, so traces, logs, and metrics live next to your topology</li>
<li aria-level="1">Significantly cheaper than the major enterprise observability platforms</li>
<li aria-level="1">Useful for discovering unknown dependencies, suspicious connections, data exfiltration patterns, and cross-region cost leakage</li>
<li aria-level="1">Replaces stale architecture diagrams with a live picture of what is actually running</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Newer product compared to legacy NMS incumbents, less brand recognition among traditional network teams</li>
<li aria-level="1">Focuses on host, container, and service visibility rather than deep packet inspection or SNMP-style switch and router polling</li>
</ul>
<p><b>Pricing:</b> Starts at $1.68 per host per month. Network Map scales with your Sematext Infrastructure Monitoring plan and retention. 14-day free trial, no credit card required.</p>
<p><b>Best For:</b> DevOps and SRE teams running Kubernetes or hybrid cloud infrastructure who want service-aware network visibility tightly integrated with logs, metrics, and traces. Teams that find traditional NMS tools too device-centric and modern APM platforms too expensive.</p>
<p><a href="https://apps.sematext.com/ui/registration" target="_blank" rel="noopener noreferrer">Get started with Sematext Network Map</a> or check out <a href="https://sematext.com/docs/network-map/">Network Map docs</a>.</p>
<h3 id="2-datadog-network-monitoring">2. Datadog Network Monitoring</h3>
<p><b>Best for: Enterprises already on Datadog who want network visibility inside the same platform</b></p>
<p>Datadog offers two related products: Network Performance Monitoring (NPM) for host-to-host and pod-to-pod traffic analysis, and Cloud Network Monitoring for cloud provider flow logs and load balancer telemetry. Both plug into the Datadog platform alongside APM, logs, and infrastructure monitoring.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">Host and Kubernetes pod-level traffic analysis via the Datadog Agent</li>
<li aria-level="1">VPC flow log analysis for AWS, Azure, and GCP</li>
<li aria-level="1">DNS monitoring with query-level visibility</li>
<li aria-level="1">Cloud load balancer and gateway telemetry</li>
<li aria-level="1">Integration with Datadog APM, logs, and infrastructure metrics</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Strong if you already use Datadog for everything else</li>
<li aria-level="1">Detailed flow analysis with rich filtering</li>
<li aria-level="1">AI-assisted anomaly detection through Watchdog</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Each Datadog product is billed separately, and bills add up quickly at scale</li>
<li aria-level="1">“Bill shock” is a recurring complaint from customers</li>
<li aria-level="1">Network products require agent and integrations setup separately from core APM</li>
</ul>
<p><b>Pricing:</b> Network Performance Monitoring starts at $5 per host per month. Cloud Network Monitoring is priced per analyzed flow. Costs scale with hosts, flows, and retention.</p>
<p><b>Best For:</b> Mid-size to large enterprises already standardized on Datadog who can absorb the platform-wide cost.</p>
<h3 id="3-dynatrace">3. Dynatrace</h3>
<p><b>Best for: Large enterprises wanting AI-driven full-stack observability with network context</b></p>
<p>Dynatrace covers network visibility as part of its broader Davis AI observability platform. The OneAgent captures process-level network connections alongside code-level traces and infrastructure metrics.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">OneAgent captures host, process, and connection-level data automatically</li>
<li aria-level="1">Smartscape topology view combining services, processes, and infrastructure</li>
<li aria-level="1">Davis AI for root cause analysis across signals</li>
<li aria-level="1">Multi-cloud and Kubernetes coverage</li>
<li aria-level="1">Strong support for traditional enterprise workloads like SAP and mainframe</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Truly automatic instrumentation with minimal manual configuration</li>
<li aria-level="1">AI correlation across network, traces, logs, and metrics</li>
<li aria-level="1">Strong enterprise governance and compliance features</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Premium pricing, often the highest in the market</li>
<li aria-level="1">OneAgent has a significant resource footprint compared to lightweight collectors</li>
<li aria-level="1">Steep learning curve across the many Dynatrace apps and modules</li>
</ul>
<p><b>Pricing:</b> Custom pricing through sales. Typically positioned at the high end of the enterprise observability market.</p>
<p><b>Best For:</b> Large enterprises with complex hybrid environments and the budget for a premium AI-powered observability platform.</p>
<h3 id="4-kentik">4. Kentik</h3>
<p><b>Best for: Network teams running large hybrid, multi-cloud, and internet-facing infrastructure</b></p>
<p>Kentik focuses on what it calls network intelligence: deep traffic analysis, BGP and internet path visibility, and AI-assisted investigation for hybrid and multi-cloud networks. It is particularly strong for service providers, SaaS companies, and large enterprises with significant cloud and internet exposure.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">NetFlow, sFlow, IPFIX, VPC flow logs, and synthetic test ingestion</li>
<li aria-level="1">BGP and internet performance visibility</li>
<li aria-level="1">Kentik AI Advisor and Cause Analysis for guided troubleshooting</li>
<li aria-level="1">DDoS detection and mitigation analytics</li>
<li aria-level="1">Hybrid and multi-cloud topology</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Industry-leading depth for traffic analytics and internet path visibility</li>
<li aria-level="1">Strong for cloud egress cost analysis</li>
<li aria-level="1">AI-assisted investigation reduces time on complex incidents</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Pricing aimed at mid-market and enterprise, not small teams</li>
<li aria-level="1">Steeper learning curve than general-purpose monitoring tools</li>
<li aria-level="1">Focused on NetOps workflows more than application-level observability</li>
</ul>
<p><b>Pricing:</b> Custom pricing through sales. Aimed at enterprise budgets.</p>
<p><b>Best For:</b> Mid-market and enterprise NetOps and SRE teams managing complex hybrid and internet-connected networks.</p>
<h3 id="5-cisco-thousandeyes">5. Cisco ThousandEyes</h3>
<p><b>Best for: Teams that need path visibility across the public internet and SaaS providers</b></p>
<p>ThousandEyes monitors network paths from your users and applications to wherever they need to go: SaaS apps, cloud regions, third-party APIs, and your own services. It is the go-to tool for understanding ISP, CDN, and public internet performance.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">Synthetic agents on user devices, in cloud regions, and on enterprise networks</li>
<li aria-level="1">Hop-by-hop path visualization across the internet</li>
<li aria-level="1">BGP route monitoring and outage detection</li>
<li aria-level="1">SaaS application performance tests (Microsoft 365, Salesforce, Zoom, and similar)</li>
<li aria-level="1">Internet outage detection and notifications</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Best-in-class for public internet and SaaS path visibility</li>
<li aria-level="1">Wide global agent network</li>
<li aria-level="1">Strong correlation between user experience and underlying network paths</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Does not cover host or pod-level traffic inside your infrastructure</li>
<li aria-level="1">Pricing scales quickly with agent counts and test frequency</li>
<li aria-level="1">Less useful as a standalone tool, usually has to be paired with another monitoring platform</li>
</ul>
<p><b>Pricing:</b> Subscription-based, priced per agent and per test. Custom quotes through sales.</p>
<p><b>Best For:</b> Enterprises with significant SaaS, hybrid work, and internet-facing service dependencies that need to prove whether the problem is them, their ISP, or a SaaS provider.</p>
<h3 id="6-solarwinds-network-performance-monitor">6. SolarWinds Network Performance Monitor</h3>
<p><b>Best for: Traditional enterprise IT teams managing on-premises networks</b></p>
<p>SolarWinds Network Performance Monitor is one of the longest-running enterprise NPM products. It excels at SNMP-based monitoring of routers, switches, firewalls, wireless access points, and other traditional network gear.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">SNMP v1, v2c, and v3 polling with deep multi-vendor support</li>
<li aria-level="1">Automated Layer 2 and Layer 3 topology mapping</li>
<li aria-level="1">NetPath for hop-by-hop path analysis</li>
<li aria-level="1">Wireless network monitoring and heat maps</li>
<li aria-level="1">Integration with the broader SolarWinds Observability portfolio</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Deep coverage for traditional network gear from Cisco, Juniper, Aruba, Fortinet, and many others</li>
<li aria-level="1">Mature alerting and reporting features</li>
<li aria-level="1">Familiar to most network engineers</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Built for static network device inventories rather than dynamic cloud-native workloads</li>
<li aria-level="1">Self-hosted deployment requires Windows Server infrastructure</li>
<li aria-level="1">Modernization toward SaaS has been gradual</li>
</ul>
<p><b>Pricing:</b> Starts around $1,995 for SolarWinds NPM perpetual license. SaaS pricing through SolarWinds Observability is consumption-based.</p>
<p><b>Best For:</b> Enterprise NetOps teams managing campus, branch, or data center networks where SNMP and traditional NPM workflows dominate.</p>
<h3 id="7-auvik">7. Auvik</h3>
<p><b>Best for: MSPs and IT teams managing many distributed sites</b></p>
<p>Auvik is a cloud-based network monitoring platform aimed primarily at managed service providers and multi-site IT teams. Its automated topology mapping and per-site collector model make it easy to onboard new networks quickly.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">Cloud-managed with lightweight on-premises collectors per site</li>
<li aria-level="1">Automatic Layer 1, 2, and 3 topology discovery and visualization</li>
<li aria-level="1">TrafficInsights for NetFlow, sFlow, J-Flow, and IPFIX analysis</li>
<li aria-level="1">Configuration backup and change tracking</li>
<li aria-level="1">Multi-tenant architecture for MSPs</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Fast time to value, sites usually online within an hour</li>
<li aria-level="1">Excellent automated topology maps that update in real time</li>
<li aria-level="1">Multi-tenant model purpose-built for MSPs</li>
<li aria-level="1">Configuration management and syslog included</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Per-billable-device pricing can get expensive at scale</li>
<li aria-level="1">Less depth than Kentik or SolarWinds NPM for deep traffic analytics</li>
<li aria-level="1">Not designed for application-level or container-level visibility</li>
</ul>
<p><b>Pricing:</b> Per-billable-device pricing through sales. Free trial available.</p>
<p><b>Best For:</b> MSPs and IT teams managing dozens or hundreds of distributed sites where rapid onboarding matters.</p>
<h3 id="8-paessler-prtg-network-monitor">8. Paessler PRTG Network Monitor</h3>
<p><b>Best for: Small and mid-size organizations that prefer sensor-based, all-in-one monitoring</b></p>
<p>PRTG is a long-established Windows-based monitoring tool that uses a sensor model: each metric, port, or check is a sensor, and you pay for the total number of sensors. It covers networks, servers, applications, and IoT devices through SNMP, WMI, NetFlow, and HTTP probes.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">250+ pre-built sensor types for network devices, servers, and applications</li>
<li aria-level="1">SNMP, WMI, NetFlow, sFlow, J-Flow, and IPFIX support</li>
<li aria-level="1">Maps, dashboards, and reporting included</li>
<li aria-level="1">On-premises and PRTG Hosted options</li>
<li aria-level="1">Free tier up to 100 sensors</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Easy to install and configure on Windows</li>
<li aria-level="1">Broad sensor catalog covers network and infrastructure in one tool</li>
<li aria-level="1">Free tier is genuinely useful for small environments</li>
<li aria-level="1">Strong fit for SMB and mid-market IT generalists</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Sensor-based licensing gets complex and expensive as environments grow</li>
<li aria-level="1">Windows-centric architecture (probes can be on Linux but the core is Windows-only)</li>
<li aria-level="1">Less suitable for dynamic Kubernetes workloads</li>
</ul>
<p><b>Pricing:</b> Perpetual licenses from around $2,149 for 500 sensors. PRTG Hosted available as SaaS. Free up to 100 sensors.</p>
<p><b>Best For:</b> Small and mid-size organizations running mixed Windows and Linux infrastructure that want a single tool for network and server monitoring.</p>
<h3 id="9-manageengine-opmanager">9. ManageEngine OpManager</h3>
<p><b>Best for: IT teams that want broad multi-vendor monitoring at a moderate price</b></p>
<p>OpManager is part of the ManageEngine portfolio. It provides SNMP, WMI, CLI, and Telnet-based monitoring with extensive multi-vendor support and offers both subscription and perpetual licensing.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">200+ pre-built device templates across Cisco, Juniper, HP, Dell, Fortinet, and others</li>
<li aria-level="1">Network Configuration Manager add-on for backup and compliance</li>
<li aria-level="1">Workflow automation for routine remediation</li>
<li aria-level="1">NetFlow Analyzer add-on for traffic analysis</li>
<li aria-level="1">On-premises deployment with broad OS support</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Significantly cheaper than SolarWinds NPM with comparable feature depth</li>
<li aria-level="1">Perpetual licensing option for teams that prefer capital over operating expenses</li>
<li aria-level="1">Strong multi-vendor coverage out of the box</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Interface feels dated compared to modern SaaS tools</li>
<li aria-level="1">Add-on modules increase the total cost</li>
<li aria-level="1">Self-hosted only, no fully managed SaaS option</li>
</ul>
<p><b>Pricing:</b> Starts around $245 per year for 25 devices. Perpetual licenses available. NetFlow Analyzer and Network Configuration Manager priced separately.</p>
<p><b>Best For:</b> Mid-market IT teams wanting broad on-premises network and server monitoring at a moderate price.</p>
<h3 id="10-logicmonitor">10. LogicMonitor</h3>
<p><b>Best for: Hybrid infrastructure teams wanting SaaS-based monitoring across networks, servers, and cloud</b></p>
<p>LogicMonitor is a SaaS infrastructure monitoring platform that covers network devices, servers, cloud resources, and containers from a single console. The Edwin AI engine adds anomaly detection and event correlation across signals.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">3,000+ integrations and modules across networks, servers, and cloud</li>
<li aria-level="1">Cloud-managed with on-premises collectors</li>
<li aria-level="1">Edwin AI for anomaly detection and alert correlation</li>
<li aria-level="1">Per-device licensing rather than per-sensor or per-interface</li>
<li aria-level="1">Topology mapping and synthetic checks</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">One of the broadest integration libraries in the market</li>
<li aria-level="1">Predictable per-device pricing</li>
<li aria-level="1">Strong fit for hybrid environments mixing data center and cloud</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Enterprise pricing, not aimed at small teams</li>
<li aria-level="1">Less focused on application-level or service-level visibility than Datadog or Dynatrace</li>
<li aria-level="1">Some users report complex initial setup for advanced features</li>
</ul>
<p><b>Pricing:</b> Custom pricing through sales. Aimed at mid-market and enterprise.</p>
<p><b>Best For:</b> Mid-market and enterprise IT teams managing hybrid infrastructure that want a single SaaS tool for networks, servers, and cloud.</p>
<h3 id="11-zabbix">11. Zabbix</h3>
<p><b>Best for: Teams wanting a free, open-source enterprise-grade monitoring platform</b></p>
<p>Zabbix is one of the most widely deployed open-source monitoring tools. It supports SNMP, agent-based, agentless, and API-based monitoring for networks, servers, applications, and cloud services. The project has been actively developed for over two decades.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">SNMP, IPMI, JMX, ODBC, agent, and agentless monitoring</li>
<li aria-level="1">Network discovery and topology maps</li>
<li aria-level="1">Flexible templating and macros</li>
<li aria-level="1">Notifications across many channels</li>
<li aria-level="1">Distributed proxy architecture for large environments</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Completely free and open-source under AGPL</li>
<li aria-level="1">Mature, production-proven at very large scale</li>
<li aria-level="1">Active community and commercial support available</li>
<li aria-level="1">Flexible enough to cover networks, servers, and applications</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Requires operational expertise to deploy, scale, and maintain</li>
<li aria-level="1">UI feels less polished than commercial SaaS tools</li>
<li aria-level="1">Initial configuration can be time-consuming</li>
</ul>
<p><b>Pricing:</b> Free. Commercial support and training available through Zabbix LLC.</p>
<p><b>Best For:</b> Teams with the operational capacity to run their own monitoring infrastructure and that want full control without licensing costs.</p>
<h3 id="12-cilium-hubble">12. Cilium Hubble</h3>
<p><b>Best for: Kubernetes teams wanting open-source eBPF-native network observability</b></p>
<p>Cilium Hubble is the observability layer for Cilium, the CNCF-graduated eBPF-based networking and security project. It provides flow-level visibility, service maps, and policy enforcement insights for Kubernetes clusters.</p>
<p><b>Key Features:</b></p>
<ul>
<li aria-level="1">eBPF-based flow capture without sidecars</li>
<li aria-level="1">L3, L4, and L7 visibility including HTTP, gRPC, Kafka, and DNS</li>
<li aria-level="1">Service map visualization</li>
<li aria-level="1">Network policy verification and dropped-flow analysis</li>
<li aria-level="1">Integration with Prometheus and Grafana</li>
</ul>
<p><b>Pros:</b></p>
<ul>
<li aria-level="1">Completely free and open-source under Apache 2.0</li>
<li aria-level="1">Native eBPF approach with low overhead</li>
<li aria-level="1">Strong for Kubernetes security and network policy use cases</li>
<li aria-level="1">Tight integration with Cilium CNI</li>
</ul>
<p><b>Cons:</b></p>
<ul>
<li aria-level="1">Requires Cilium as the CNI plugin, which is a significant architectural choice</li>
<li aria-level="1">Operational expertise needed to deploy and scale Hubble</li>
<li aria-level="1">Less suited for standalone hosts, VMs, or non-Kubernetes workloads</li>
</ul>
<p><b>Pricing:</b> Free. Commercial support through Isovalent (now part of Cisco).</p>
<p><b>Best For:</b> Kubernetes-native teams that have adopted or are willing to adopt Cilium as their CNI and want deep eBPF-based flow observability without commercial licensing.</p>
<h2 id="network-monitoring-tools-comparison-table">Network Monitoring Tools Comparison Table</h2>
<table>
<thead>
<tr>
<th><b>Tool</b></th>
<th><b>Deployment</b></th>
<th><b>Kubernetes</b></th>
<th><b>Telemetry</b></th>
<th><b>Pricing</b></th>
<th><b>Best For</b></th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Sematext Network Map</b></td>
<td>SaaS</td>
<td>Native</td>
<td>eBPF, agent metrics</td>
<td>Per host</td>
<td>Cloud-native teams wanting service-aware visibility</td>
</tr>
<tr>
<td><b>Datadog Network Monitoring</b></td>
<td>SaaS</td>
<td>Yes</td>
<td>Agent flows, VPC flow logs</td>
<td>Per host + per flow</td>
<td>Enterprises already on Datadog</td>
</tr>
<tr>
<td><b>Dynatrace</b></td>
<td>SaaS or managed</td>
<td>Yes</td>
<td>OneAgent</td>
<td>Custom</td>
<td>Large enterprises wanting AI-driven observability</td>
</tr>
<tr>
<td><b>Kentik</b></td>
<td>SaaS</td>
<td>Yes</td>
<td>NetFlow, sFlow, VPC flows, BGP</td>
<td>Custom</td>
<td>NetOps in hybrid and multicloud</td>
</tr>
<tr>
<td><b>Cisco ThousandEyes</b></td>
<td>SaaS</td>
<td>Limited</td>
<td>Synthetic agents, BGP</td>
<td>Per agent</td>
<td>Internet and SaaS path visibility</td>
</tr>
<tr>
<td><b>SolarWinds NPM</b></td>
<td>Self-hosted or SaaS</td>
<td>Limited</td>
<td>SNMP, NetPath</td>
<td>License + maintenance</td>
<td>Traditional enterprise NetOps</td>
</tr>
<tr>
<td><b>Auvik</b></td>
<td>SaaS</td>
<td>Limited</td>
<td>SNMP, NetFlow</td>
<td>Per device</td>
<td>MSPs and multi-site IT</td>
</tr>
<tr>
<td><b>Paessler PRTG</b></td>
<td>Self-hosted or SaaS</td>
<td>Limited</td>
<td>SNMP, WMI, NetFlow</td>
<td>Per sensor</td>
<td>SMB and mid-market generalists</td>
</tr>
<tr>
<td><b>ManageEngine OpManager</b></td>
<td>Self-hosted</td>
<td>Limited</td>
<td>SNMP, WMI, NetFlow</td>
<td>Per device</td>
<td>Mid-market multi-vendor</td>
</tr>
<tr>
<td><b>LogicMonitor</b></td>
<td>SaaS</td>
<td>Yes</td>
<td>Agent, SNMP, cloud APIs</td>
<td>Per device</td>
<td>Hybrid infrastructure teams</td>
</tr>
<tr>
<td><b>Zabbix</b></td>
<td>Self-hosted</td>
<td>Yes</td>
<td>Agent, SNMP, IPMI</td>
<td>Free</td>
<td>Open-source enterprise</td>
</tr>
<tr>
<td><b>Cilium Hubble</b></td>
<td>Self-hosted</td>
<td>Native</td>
<td>eBPF</td>
<td>Free</td>
<td>Kubernetes-native eBPF</td>
</tr>
</tbody>
</table>
<h2 id="how-to-choose-the-right-network-monitoring-tool">How to Choose the Right Network Monitoring Tool</h2>
<h3 id="start-with-your-stack">Start With Your Stack</h3>
<p>A team running mostly Cisco switches and on-premises servers has a very different set of needs from a team running Kubernetes on EKS. SNMP-based tools like SolarWinds, ManageEngine, and PRTG remain the right answer for traditional network gear. For Kubernetes and dynamic cloud workloads, eBPF-based tools like Sematext Network Map and Cilium Hubble give you visibility that legacy NMS products cannot match.</p>
<h3 id="decide-whether-you-want-a-standalone-or-integrated-tool">Decide Whether You Want a Standalone or Integrated Tool</h3>
<p>Network monitoring used to be a separate tool maintained by a separate team. That model still works for some organizations, but most modern teams benefit from network visibility that lives next to logs, metrics, and traces. Sematext, Datadog, Dynatrace, and LogicMonitor all let you correlate network signals with application data. Standalone specialists like Kentik and ThousandEyes go deeper in their niche, often paired with a broader observability platform.</p>
<h3 id="model-your-cost-at-scale">Model Your Cost at Scale</h3>
<p>Pricing models vary widely. Per-sensor models like PRTG can balloon as you add checks. Per-device models like Auvik and LogicMonitor are predictable but can become expensive as device counts grow. Per-host models like Sematext and Datadog scale with infrastructure size. Always run a quick projection for your expected scale rather than going by starter-tier pricing.</p>
<h3 id="test-before-you-buy">Test Before You Buy</h3>
<p>Most commercial tools offer free trials. Open-source tools cost only your time. Pick two or three candidates that fit your environment and run them on a real workload for a week or two. You will learn more from a short pilot than from any vendor demo.</p>
<h3 id="do-not-forget-about-people">Do Not Forget About People</h3>
<p>A tool nobody uses is worse than no tool at all. Whatever you choose, make sure your on-call engineers find the UI usable, the alerts trustworthy, and the data easy to share across teams.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Network monitoring in 2026 is no longer a single category. Some teams need deep SNMP visibility for traditional gear. Others need eBPF-based service maps for Kubernetes. Many need both, plus correlation with logs, metrics, and traces.</p>
<p>For cloud-native and hybrid teams, <b>Sematext Network Map</b> stands out as the most pragmatic choice in 2026. It gives you eBPF-powered service and infrastructure visibility, automatic detection of over 100 service types, Kubernetes-native drill-down, and integration with logs, metrics, traces, and synthetic monitoring in one platform. All of that comes at a fraction of the cost of the major enterprise observability incumbents.</p>
<p>If your environment is dominated by traditional network gear, SolarWinds, ManageEngine, and Auvik remain solid choices. If you need internet and SaaS path visibility, ThousandEyes is hard to beat. If you want fully open-source, Zabbix covers the broad case and Cilium Hubble covers the Kubernetes-native case.</p>
<p>Whatever you choose, prioritize tools that fit how your infrastructure actually works today, not how it worked five years ago.</p>
<p><b>Ready to see your infrastructure as it really is?</b> <a href="https://apps.sematext.com/ui/registration" target="_blank" rel="noopener noreferrer">Try Sematext Network Map free for 14 days</a>, no credit card required.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-is-the-difference-between-network-monitoring-and-observability">What is the difference between network monitoring and observability?</h3>
<p>Network monitoring focuses on the health and behavior of network infrastructure: devices, interfaces, traffic, paths, and connections. Observability is a broader practice that combines logs, metrics, traces, and topology to understand the health of the entire system, including applications. Modern tools like Sematext, Datadog, and Dynatrace blur the line by treating network visibility as one signal among many.</p>
<h3 id="do-i-need-separate-network-monitoring-if-i-already-have-apm">Do I need separate network monitoring if I already have APM?</h3>
<p>APM tells you what your application code is doing. Network monitoring tells you what is happening at the network connection and infrastructure level. The two are complementary. A slow database query shows up in APM. A flaky network path, a saturated link, or a rogue process making outbound calls shows up in network monitoring, but not in APM. Most teams benefit from both, ideally on the same platform.</p>
<h3 id="what-is-ebpf-and-why-does-it-matter-for-network-monitoring">What is eBPF and why does it matter for network monitoring?</h3>
<p>eBPF (extended Berkeley Packet Filter) is a Linux kernel technology that lets tools safely run sandboxed programs inside the kernel to observe events such as network connections, system calls, and packet processing. For network monitoring, eBPF allows tools to capture connection-level data with very low overhead and without modifying applications. Tools like Sematext Network Map and Cilium Hubble use eBPF to build accurate, real-time topology views without sidecars, port mirroring, or packet captures.</p>
<h3 id="can-network-monitoring-tools-work-with-kubernetes">Can network monitoring tools work with Kubernetes?</h3>
<p>Yes, but with very different levels of effectiveness. Tools designed for static device inventories struggle with the dynamic nature of pods and containers. eBPF-based and Kubernetes-aware tools like Sematext Network Map, Cilium Hubble, Datadog NPM, and Dynatrace are built for this environment. Traditional SNMP-focused tools can still monitor the underlying nodes, but they will not give you pod-level or service-level visibility.</p>
<h3 id="what-are-the-best-free-or-open-source-network-monitoring-tools-in-2026">What are the best free or open-source network monitoring tools in 2026?</h3>
<p>Zabbix remains the most widely deployed open-source choice for general infrastructure and network monitoring. Nagios and Icinga are still in active use for traditional environments. LibreNMS and OpenNMS are strong for SNMP-heavy networks. For Kubernetes-native, eBPF-based observability, Cilium Hubble is the leading open-source option. All of these are free to use but require operational expertise to deploy and scale.</p>
<h3 id="how-much-do-network-monitoring-tools-cost">How much do network monitoring tools cost?</h3>
<p>Pricing varies enormously. Open-source tools are free but carry operational cost. Per-device tools like Auvik and OpManager typically range from a few dollars to tens of dollars per device per month. Per-host tools like Sematext Network Map start around $1.68 per host per month. Per-sensor tools like PRTG depend on how many checks you configure. Enterprise platforms like Datadog, Dynatrace, Kentik, and LogicMonitor are usually priced through sales and can run from tens of thousands to hundreds of thousands of dollars per year depending on scale.</p>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/top-network-monitoring-tools/">Top 12 Network Monitoring Tools in 2026: Complete Comparison &#038; Reviews</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using AI to Instrument Applications with OpenTelemetry</title>
		<link>https://sematext.com/blog/using-ai-to-instrument-applications-with-opentelemetry/</link>
		
		<dc:creator><![CDATA[fulya.uluturk]]></dc:creator>
		<pubDate>Thu, 21 May 2026 07:20:49 +0000</pubDate>
				<category><![CDATA[OpenTelemetry]]></category>
		<category><![CDATA[Programming languages & frameworks]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=70785</guid>

					<description><![CDATA[<p>OpenTelemetry is one of the best things that’s happened to observability in the last decade. It’s open. It has SDKs for every language that matters. It’s vendor neutral. The OTel community has been doing the hard work of standardizing how applications emit telemetry, so that you, the engineer, don’t have to learn five different agent [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/using-ai-to-instrument-applications-with-opentelemetry/">Using AI to Instrument Applications with OpenTelemetry</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://opentelemetry.io/" target="_blank" rel="noopener noreferrer">OpenTelemetry</a> is one of the best things that’s happened to observability in the last decade. It’s open. It has SDKs for every language that matters. It’s vendor neutral. The OTel community has been doing the hard work of standardizing how applications emit telemetry, so that you, the engineer, don’t have to learn five different agent formats to monitor five different services.</p>
<p>But there’s a part of the OTel pitch that often gets glossed over: <b>somebody still has to instrument the application</b>. And that part isn’t quick or easy. Even now.</p>
<h2 id="the-instrumentation-tax"><b>The instrumentation tax</b></h2>
<p>Modern applications aren’t a single binary anymore. At Sematext we run <b>30+ microservices</b> to power the <a href="https://sematext.com/docs/">Sematext Cloud</a> platform: alerts, metrics receivers and consumers, log receivers and consumers, user experience services, tracing pipelines, network map, various APIs and more, across Java (Spring Boot), Go, and a few other stacks.</p>
<p><img decoding="async" class="alignnone wp-image-70788 size-full" src="https://sematext.com/wp-content/uploads/2026/05/network-map-big.png" alt="" width="2500" height="1332" srcset="https://sematext.com/wp-content/uploads/2026/05/network-map-big.png 2500w, https://sematext.com/wp-content/uploads/2026/05/network-map-big-300x160.png 300w, https://sematext.com/wp-content/uploads/2026/05/network-map-big-1024x546.png 1024w, https://sematext.com/wp-content/uploads/2026/05/network-map-big-768x409.png 768w, https://sematext.com/wp-content/uploads/2026/05/network-map-big-1536x818.png 1536w, https://sematext.com/wp-content/uploads/2026/05/network-map-big-2048x1091.png 2048w" sizes="(max-width: 2500px) 100vw, 2500px" /></p>
<p>That’s a lot of surface area, several languages, multiple frameworks, different build systems for different stacks. None of this is unusual for a mature system. This means that instrumentation effort grows with that diversity, so any mechanism that helps minimize instrumentation mistakes will be welcomed by engineers tasked with instrumentation.</p>
<p>If you want <b>end-to-end tracing</b> through that stack, the kind that actually tells you where a slow request spent its time, you can’t just instrument one service. You have to instrument the whole chain: frontend → API gateway → backend service A → backend service B → database. Skip a hop and the trace breaks. The dependency graph the trace gives you stops being useful exactly at the boundary you didn’t instrument.</p>
<p>So in practice, “let’s adopt OpenTelemetry” turns into a checklist of dozens of services that each need their own instrumentation work. The good news is that it doesn’t have to happen all at once and AI can help.</p>
<h2 id="how-much-does-opentelemetry-instrumentation-cost"><b>How much does OpenTelemetry instrumentation cost?</b></h2>
<p>By cost, we mean the cost to an engineer, the team, and the organization. We can look at it as a non-monetary cost, but if we trace (pun intended!) this cost all the way down then yes, there is also a financial cost associated with this effort.</p>
<p>Three things make this hard, even with OTel:</p>
<p><b>Prioritization. </b>Instrumenting a service competes with shipping features and fixing bugs. It’s preventive work; its value shows up the next time something breaks at 3am, not this sprint. That’s a hard sell to a product manager.</p>
<p><b>Unknown territory. </b>When the chain spans services you didn’t write, in languages you don’t use day to day, you’re spending most of your time on context switch overhead. You’re not adding instrumentation; you’re re-learning a framework you saw once two years ago.</p>
<p><b>Time needed even for auto-instrumentation. </b>“Auto-instrumentation” means no code changes. It doesn’t mean no work. For one service the loop typically goes:</p>
<ol>
<li aria-level="1">Read the right OTel SDK docs for your language</li>
<li aria-level="1">Pick the right auto-instrumentation package (there are usually three options, only one of which is current)</li>
<li aria-level="1">Install it in the build (pom.xml, package.json, requirements.txt, …)</li>
<li aria-level="1">Configure the OTLP endpoint, the auth header, the service name</li>
<li aria-level="1">Restart, hit the service, watch what happens</li>
<li aria-level="1">Debug the first attempt: wrong port (4317 vs 4318 vs 4338), wrong protocol (http/protobuf vs grpc), wrong auth header (Bearer vs vendor-specific), region mismatch on the endpoint</li>
<li aria-level="1">Verify the data lands in the right place in your observability tool</li>
<li aria-level="1">Multiply by the number of services in your chain</li>
</ol>
<p>Forty minutes to two hours per service if you’re moving carefully, and that’s just for traces and metrics. The OTel auto-instrumentation packages don’t ship logs in most SDKs. For logs you need to switch to manual instrumentation, which is another SDK init block per service.</p>
<h2 id="and-then-theres-custom-opentelemetry-instrumentation"><b>And then there’s custom OpenTelemetry instrumentation</b></h2>
<p>The above buys you “spans for every incoming HTTP request” and a generic metrics set. The moment you want anything specific (e.g., a custom span attribute for the user’s account tier, a business metric counting checkouts, a log enriched with the trace ID so you can correlate logs and traces for faster Root Cause Analysis), you’re back in manual-instrumentation land, writing SDK code in every service you care about. The auto path ends; the per-language SDK learning curve begins.</p>
<p>For one service that’s an afternoon. For thirty services that’s a quarter. What can we do about this?</p>
<h2 id="can-we-use-ai-to-instrument-applications-with-opentelemetry"><b>Can we use AI to instrument applications with OpenTelemetry?</b></h2>
<p>The instrumentation work (pick the SDK, set the env vars, debug the endpoint, verify it landed) is exactly the kind of structured, repetitive, well-documented task an AI agent does well. The blockers aren’t intellectual; they’re “look up the right thing, paste it in the right place, watch for the obvious gotcha.”</p>
<p>That’s not “let the AI do your engineering.” It’s “let the AI do the parts that already had a right answer, written down somewhere, and just needed someone to fetch it.”</p>
<p>We tried this for instrumenting applications against Sematext Cloud. The result is a small,but highly valuable open-source artifact: a <b>Claude Code Agent Skill</b> that walks an engineer through OTel instrumentation conversationally. It’s plain markdown, lives in our public Github repository, and works with any AI agent that can read a URL.</p>
<h2 id="what-the-otel-instrumentation-ai-skill-does"><b>What the OTel instrumentation AI skill does</b></h2>
<p>The Sematext OTel skill at <a href="https://github.com/sematext/sematext-otel-onboarding/blob/main/skills/SKILL.md" target="_blank" rel="noopener noreferrer">sematext-otel-onboarding/blob/main/skills/SKILL.md</a> is the AI-readable version of “how to wire your application to Sematext.” When loaded into Claude Code (or any agent that can fetch a markdown URL), it triages the user through six short questions:</p>
<ol>
<li aria-level="1">Sematext region (US or EU)</li>
<li aria-level="1">Which App types you’re wiring (Tracing, Logs, Monitoring, any combination)</li>
<li aria-level="1">Flow: managed OTLP endpoint or Sematext Agent</li>
<li aria-level="1">Protocol: HTTP (default) or gRPC</li>
<li aria-level="1">Language and deployment environment</li>
<li aria-level="1">Auto or manual instrumentation</li>
</ol>
<p>Then it produces the exact env-var block, parameterized to your answers, including:</p>
<ul>
<li aria-level="1">The correct OTLP endpoint URL for your region and protocol</li>
<li aria-level="1">The Sematext-specific X-API-TOKEN header (different from the standard Authorization: Bearer … most OTel docs show, easy to miss)</li>
<li aria-level="1">One header per signal type, so you only configure what you’re using</li>
<li aria-level="1">A pointer to a runnable reference example in the same repo, in your language</li>
</ul>
<p>Similarly, you can use the skill not only to add instrumentation to uninstrumented applications, but also to fix broken instrumentation that’s not really working. Auto-instrumentation doesn’t ship logs? The skill flags that and asks if you want to switch to manual. Region-token mismatch? The skill warns explicitly. Custom header convention? Documented. The skill is opinionated and aware of the setup required where the official OpenTelemetry docs may be silent or difficult to understand and follow.</p>
<h2 id="what-an-instrumentation-session-looks-like"><b>What an instrumentation session looks like</b></h2>
<p>In practice, an engineer with Claude Code in their editor opens their service’s directory and pastes:</p>
<p><code>Use <a href="https://github.com/sematext/sematext-otel-onboarding/blob/main/skills/SKILL.md" target="_blank" rel="noopener noreferrer">https://github.com/sematext/sematext-otel-onboarding/blob/main/skills/SKILL.md</a> to instrument this app for Sematext.<br>
Region: US. App type: Tracing. Token: &lt;pasted-from-Sematext-UI&gt;.</code></p>
<p>Claude loads the skill, reads the project’s files to figure out the language and framework, asks the two remaining triage questions, then proposes the diff to the project (adds the OTel SDK to the build file, adds the env vars to docker-compose or systemd or .env or wherever they belong, and shows you what to expect in the Sematext UI within 60 seconds). You review the diff. You apply. You restart. You see traces.</p>
<p>Compared to the manual path (read docs, pick SDK, install, configure, debug, verify), we’d expect the instrumentation effort time to first data to drop from the typical 40 to 120 minutes per service to a handful of minutes. For an organization adopting OTel across dozens of services, that compounds quickly. A quarter of part-time effort becomes a couple of focused days. Thousands of dollars in engineering time drops to a much more sane number. The effort has a positive ROI.</p>
<h2 id="what-the-skill-doesnt-do"><b>What the skill doesn’t do</b></h2>
<p>This is where AI posts usually start hand-waving. Here’s the honest list:</p>
<ul>
<li aria-level="1"><b>It doesn’t write custom span attributes or business metrics for you. </b>It writes the boilerplate that gets you to the point where you <i>can</i> write those. The judgment about what to measure is still yours. The benefit is that the skill gives you all the scaffolding, a working instrumentation, so the effort of collecting custom/business metrics becomes significantly lower.</li>
<li aria-level="1"><b>It doesn’t psychic-debug your network. </b>If your service can’t reach the OTLP endpoint on first run (corporate proxy, missing TLS cert chain, wrong port), the skill points at the common causes, but you still have to look at the service’s own logs to confirm what happened.</li>
<li aria-level="1"><b>It doesn’t change OTel’s reality. </b>Auto-instrumentation still doesn’t ship logs in most SDKs. AI doesn’t fix the SDK. But it does tell you up front, so you don’t spend an hour wondering why your Logs App is empty.</li>
</ul>
<h2 id="try-it-the-skill-is-vendor-agnostic"><b>Try it, the skill is vendor-agnostic</b></h2>
<p>The skill is open-source and lives in our <a href="https://github.com/sematext/sematext-otel-onboarding/" target="_blank" rel="noopener noreferrer">OTel onboarding repo</a>. The same repo has runnable reference apps for Node.js, Java, Python, .NET, and PHP across baremetal, Docker, and Kubernetes deployments, so if you want to see what the skill is going to walk you through, the reference is right there.</p>
<p>If you have Claude Code, point it at the URL above. If you use a different AI agent, the skill is just markdown. Load it however your agent loads documentation. There’s no install step; there’s no vendor lock-in. The skill shared is not Sematext-specific. Sematext’s contribution is the knowledge, encoded in a format an AI can act on.</p>
<h2 id="where-this-is-going"><b>Where this is going</b></h2>
<p>The OTel skill is one example of a broader pattern we think makes sense for observability tools: <b>knowledge as something an AI can use, not just something a human can read.</b></p>
<p>A few directions we’re exploring:</p>
<ul>
<li aria-level="1"><b>Per-language sub-skills </b>for deeper, opinionated guidance when a language has subtle gotchas (Node async hooks, Java agent attach, Python startup ordering)</li>
<li aria-level="1"><b>In-product wiring </b>so the App creation page in Sematext Cloud gives you a one-click “use AI to set this up” alongside the existing manual instructions, with your region and token pre-filled into the prompt</li>
<li aria-level="1"><b>Skills for the rest of the observability journey </b>(picking sensible default alerts, creating dashboards, interpreting RCA results), each as a small, auditable markdown file you can use, fork, or ignore</li>
</ul>
<p>The bet is that the value of an observability platform isn’t just the data it collects; it’s how quickly an engineer can go from “we should monitor this” to “we’re monitoring it and we know what to do when it breaks.” AI doesn’t replace the judgment in that loop as of yet. But it can absolutely replace the busywork around it.</p>
<p>If you give the skill a try and find a gap, <a href="https://github.com/sematext/sematext-otel-onboarding/blob/main/skills/sematext-otel.md" target="_blank" rel="noopener noreferrer">open a PR</a>. The fastest way for this pattern to get good is for more people to use it on more apps.</p>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/using-ai-to-instrument-applications-with-opentelemetry/">Using AI to Instrument Applications with OpenTelemetry</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pull Request Velocity as a Proxy for AI Usage for Software Development</title>
		<link>https://sematext.com/blog/pull-request-velocity-as-a-proxy-for-ai-usage-for-software-development/</link>
		
		<dc:creator><![CDATA[Otis]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 07:06:27 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=70751</guid>

					<description><![CDATA[<p>While AI have usage has been growing steadily for the last several years, the LLM models noticeably improved around the end of 2025. Specifically, they become more viable for software development. We are seeing the results. The feature and product delivery has picked up. One way to visualize this is by looking at the number [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/pull-request-velocity-as-a-proxy-for-ai-usage-for-software-development/">Pull Request Velocity as a Proxy for AI Usage for Software Development</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>While AI have usage has been growing steadily for the last several years, the LLM models noticeably improved around the end of 2025. Specifically, they become more viable for software development. We are seeing the results. The feature and product delivery has picked up. One way to visualize this is by looking at the number of pull requests for your organization / software development teams.  This chart shows the number of Github pull requests created by a team. Can you spot when AI usage increased?</p>
<p><img decoding="async" class="alignnone  wp-image-70752" src="https://sematext.com/wp-content/uploads/2026/03/gh-pr-ai-usage-proxy-300x86.png" alt="" width="677" height="194" srcset="https://sematext.com/wp-content/uploads/2026/03/gh-pr-ai-usage-proxy-300x86.png 300w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-ai-usage-proxy-1024x293.png 1024w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-ai-usage-proxy-768x220.png 768w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-ai-usage-proxy-1536x440.png 1536w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-ai-usage-proxy-2048x586.png 2048w" sizes="(max-width: 677px) 100vw, 677px" /></p>
<p>It starts in late November, 2025. This marks the beginning of increased AI usage (for coding) in Sematext. That’s when the LLMs got better. It <i>roughly </i>matches the change in velocity as visualized in JIRA.</p>
<h3 id="individual-ai-adoption">Individual AI Adoption</h3>
<p>The blurred part are PR author names, which we can use for filtering. If we look at trends of individuals we can spot early adopters like this one:</p>
<p><img decoding="async" class="alignnone  wp-image-70753" src="https://sematext.com/wp-content/uploads/2026/03/gh-pr-early-ai-user-300x65.png" alt="" width="660" height="143" srcset="https://sematext.com/wp-content/uploads/2026/03/gh-pr-early-ai-user-300x65.png 300w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-early-ai-user-1024x221.png 1024w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-early-ai-user-768x166.png 768w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-early-ai-user-1536x332.png 1536w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-early-ai-user-2048x442.png 2048w" sizes="(max-width: 660px) 100vw, 660px" /></p>
<p>Or another individual who started making more use of AI later:</p>
<p><img decoding="async" class="alignnone  wp-image-70754" src="https://sematext.com/wp-content/uploads/2026/03/gh-pr-late-ai-user-300x64.png" alt="" width="656" height="140" srcset="https://sematext.com/wp-content/uploads/2026/03/gh-pr-late-ai-user-300x64.png 300w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-late-ai-user-1024x219.png 1024w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-late-ai-user-768x164.png 768w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-late-ai-user-1536x329.png 1536w, https://sematext.com/wp-content/uploads/2026/03/gh-pr-late-ai-user-2048x438.png 2048w" sizes="(max-width: 656px) 100vw, 656px" /></p>
<h3 id="source-github-webhook-events">Source: Github WebHook Events</h3>
<p>This data comes into Sematext via <a href="https://sematext.com/docs/integration/github-webhook-events-integration/">Github Webhook Events.</a> It takes about 5-10 minutes to set up. It can be set up at the Github organization level or for individual repositories.</p>
<h3 id="a-word-of-caution">A Word of Caution</h3>
<ol>
<li aria-level="1">There are many software development styles. There are people who commit frequently and incrementally and there are those who keep things to themselves until everything is nearly done. This is a fun chart to look at and is helpful when you want to get the feel for the “pulse” of a team or even an individual. But be careful not to judge people on this sort of data alone. Use this with a grain of salt and in combination with other inputs, observations, etc.</li>
<li aria-level="1">Creating more code or PRs doesn’t always equal better code or higher effectiveness. A person may be tapping in the dark trying to debug or implement something with the help of AI and, in the process, creating a lot of (temporary?) code and PRs.</li>
<li aria-level="1">As velocity increases, so will regressions, unless you take countermeasures. See <a href="https://www.linkedin.com/pulse/faster-coding-ai-increased-regressions-otis-gospodneti%C4%87-bi6ve/" target="_blank" rel="noopener noreferrer">Faster Coding with AI and Increased Regressions</a>.</li>
</ol>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/pull-request-velocity-as-a-proxy-for-ai-usage-for-software-development/">Pull Request Velocity as a Proxy for AI Usage for Software Development</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Running OpenTelemetry at Scale: Architecture Patterns for 100s of Services</title>
		<link>https://sematext.com/blog/running-opentelemetry-at-scale-architecture-patterns-for-100s-of-services/</link>
		
		<dc:creator><![CDATA[fulya.uluturk]]></dc:creator>
		<pubDate>Tue, 03 Mar 2026 12:06:59 +0000</pubDate>
				<category><![CDATA[OpenTelemetry]]></category>
		<category><![CDATA[Tracing]]></category>
		<category><![CDATA[distributed tracing]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[opentelemetry]]></category>
		<guid isPermaLink="false">https://sematext.com/?p=70550</guid>

					<description><![CDATA[<p>It feels great getting OpenTelemetry working in a demo environment. Spans appear, metrics flow, you connect it to a backend and everything lights up in a satisfying cascade. You write the internal doc, you present it to the team, but it’s just a matter of time when somebody on the team asks: “Great, so how [&#8230;]</p>
<p>The post <a href="https://sematext.com/blog/running-opentelemetry-at-scale-architecture-patterns-for-100s-of-services/">Running OpenTelemetry at Scale: Architecture Patterns for 100s of Services</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400;">It feels great getting OpenTelemetry working in a demo environment. Spans appear, metrics flow, you connect it to a backend and everything lights up in a satisfying cascade. You write the internal doc, you present it to the team, but it’s just a matter of time when somebody on the team asks: “Great, so how do we roll this out to all 100 services?” If you are at that point on your OTel journey, this article will help you roll out OTel to production.</span></p>
<p><span style="font-weight: 400;">Running OTel across a handful of services and running it across a few hundred are genuinely different problems. The instrumentation part stays roughly the same. Everything around it — how you collect the data, how you route it, how you make sure a traffic spike in one region does not take down your entire observability pipeline — that is where teams either build something resilient or spend the next six months fire-fighting because of inadequate planning or suboptimal architecture.</span></p>
<p><span style="font-weight: 400;">I wrote this article to share the patterns that actually hold up at scale: collector tiers, load balancing strategies, sampling at volume, and multi-cluster setups. Everything comes with real config examples because “it depends” is only useful advice if you can see what it depends on.</span></p>
<p><span style="font-weight: 400;">See</span><a href="https://sematext.com/blog/from-debugging-to-slos-how-opentelemetry-changes-the-way-teams-do-observability/" target="_blank" rel="noopener"> <span style="font-weight: 400;">How OpenTelemetry changes the way teams do observability</span></a><span style="font-weight: 400;"> for why OpenTelemetry matters and how it shifts focus from traditional metrics and logs to full, end-to-end observability.</span></p>
<h2 id="why-a-single-collector-falls-apart-and-when"><b>Why a Single Collector Falls Apart (and When)</b></h2>
<p><span style="font-weight: 400;">Most OTel tutorials show you a single collector instance receiving spans from all your services and forwarding everything to a backend. That setup works until about the point where it stops working, which tends to happen quietly and at the worst possible time. You are not going to notice a single collector struggling until it is already dropping data, buffering is maxed out, and your traces have gaps you cannot explain.</span></p>
<p><span style="font-weight: 400;">The core issue is that a single collector is both a single point of failure and a resource bottleneck. At low traffic it sits there looking fine. Add a few dozen services, let traffic spike during a product launch or a retry storm, and you will watch it start falling behind. The exporter queue fills up. Backpressure kicks in. Services start dropping spans rather than blocking on the export. By the time anyone notices, you have lost the exact telemetry you needed to understand what just happened.</span></p>
<div style="background: rgba(220,38,38,0.06); border-left: 3px solid #DC2626; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #7f1d1d;"><strong style="color: #991b1b;">The failure mode is silent.</strong> <b></b><span style="font-weight: 400;"> When a collector falls behind, it does not usually crash spectacularly. It drops spans without loud errors, your traces become incomplete, and your dashboards show suspiciously clean latency numbers because the slow requests stopped being recorded. If your p99 looks unexpectedly healthy during an incident, check your collector queue depth before trusting it.</span></div>
<p><span style="font-weight: 400;">The solution is to stop thinking about the collector as a single process and start thinking about it as a tier. Two tiers cover most production scenarios. Three tiers cover the rest. The architecture you need depends on your traffic, whether you need tail-based sampling, and how many backends you are exporting to.</span></p>
<p><span style="font-weight: 400;">Let me make this more specific: if you have fewer than 20 services and under 500 requests per second total, a single well-configured collector will likely hold up (yes, of course it depends on the underlying hardware/resources). At 20 to 80 services or 500 to 5,000 RPS, the two-tier model becomes worthwhile. Above 80 services or 5,000 RPS, you need the full tiered setup with </span><a href="https://opentelemetry.io/docs/collector/deploy/gateway/" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">trace-aware load balancing</span></a><span style="font-weight: 400;"> and </span><a href="https://sematext.com/blog/opentelemetry-production-monitoring-what-breaks-and-how-to-prevent-it/#tail-sampling" target="_blank" rel="noopener"><span style="font-weight: 400;">tail-based sampling</span></a><span style="font-weight: 400;"> at the gateway. </span></p>
<p><span style="font-weight: 400;">For more information on common production pitfalls and strategies to prevent them, see </span><a href="https://sematext.com/blog/opentelemetry-production-monitoring-what-breaks-and-how-to-prevent-it/" target="_blank" rel="noopener"> <span style="font-weight: 400;">OpenTelemetry Production Monitoring: What Breaks and How to Prevent It</span></a><span style="font-weight: 400;">.</span></p>
<h2 id="collector-tiers-the-architecture-that-actually-scales"><b>Collector Tiers: The Architecture That Actually Scales</b></h2>
<p><span style="font-weight: 400;">The tiered collector model separates two concerns that should never have been combined in the first place: getting data off your services quickly, and doing something intelligent with that data before it hits your backend.</span></p>
<p><span style="font-weight: 400;">Before getting into the architecture, it helps to know that the OTel Collector can run in three modes — and in a scaled setup, you will use all three:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Agent</b><span style="font-weight: 400;"> — a collector running on the same host as your services, collecting telemetry locally and forwarding it upstream. It stays thin: no heavy processing, just receive-and-forward.</span></li>
<li style="font-weight: 400;" aria-level="1"><b>Gateway</b><span style="font-weight: 400;"> — a collector running as a standalone service, receiving data from agents (or directly from SDKs) and doing the heavier work: sampling, routing, fan-out to backends, attribute redaction.</span></li>
</ul>
<p><b>Combined</b><span style="font-weight: 400;"> — the full pattern, where agent collectors feed into gateway collectors. Agents handle what only makes sense per-host (host metrics, file logs, resource detection). Gateways handle what only makes sense centrally (tail-based sampling, cross-service routing, policy management). The </span><a href="https://opentelemetry.io/docs/collector/deploy/gateway/#combined-deployment-of-collectors-as-agents-and-gateways" target="_blank" rel="noopener noreferrer"> <span style="font-weight: 400;">OTel Collector deployment docs</span></a><span style="font-weight: 400;"> call this the combined deployment pattern.</span></p>
<p><span style="font-weight: 400;">The tiered setup this article describes is the combined pattern. Here is what it looks like:</span></p>
<div style="margin: 32px 0;">
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase; margin-bottom: 24px;">TWO-TIER COLLECTOR ARCHITECTURE</div>
<p><!-- SERVICES ROW --></p>
<div style="text-align: center; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 8px;">SERVICES</div>
<div style="display: flex; justify-content: center; gap: 12px; margin-bottom: 6px;">
<div style="background: #1e3a5f; border: 2px solid #f59e0b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; margin-bottom: 3px;">Service</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">App A</div>
</div>
<div style="background: #1e3a5f; border: 2px solid #f59e0b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; margin-bottom: 3px;">Service</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">App B</div>
</div>
<div style="background: #1e3a5f; border: 2px solid #f59e0b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; margin-bottom: 3px;">Service</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">App C</div>
</div>
<div style="background: #1e3a5f; border: 2px solid #f59e0b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; margin-bottom: 3px;">Service</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">App N</div>
</div>
</div>
<p><!-- Arrow down --></p>
<div style="text-align: center; color: #94a3b8; font-size: 20px; line-height: 1; margin: 4px 0;">↓</div>
<p><!-- TIER 1 LABEL --></p>
<div style="text-align: center; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 8px;">TIER 1 — AGENT / SIDECAR COLLECTORS</div>
<div style="display: flex; justify-content: center; gap: 12px; margin-bottom: 6px;">
<div style="background: #14532d; border: 2px solid #14532d; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #86efac; margin-bottom: 3px;">Agent</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Collector</div>
</div>
<div style="background: #14532d; border: 2px solid #14532d; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #86efac; margin-bottom: 3px;">Agent</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Collector</div>
</div>
<div style="background: #14532d; border: 2px solid #14532d; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #86efac; margin-bottom: 3px;">Agent</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Collector</div>
</div>
<div style="background: #14532d; border: 2px solid #14532d; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #86efac; margin-bottom: 3px;">Agent</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Collector</div>
</div>
</div>
<p><!-- Arrow down --></p>
<div style="text-align: center; color: #94a3b8; font-size: 20px; line-height: 1; margin: 4px 0;">↓</div>
<p><!-- TIER 2 LABEL --></p>
<div style="text-align: center; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 8px;">TIER 2 — GATEWAY COLLECTORS</div>
<div style="display: flex; justify-content: center; gap: 12px; margin-bottom: 6px;">
<div style="background: #1e293b; border: 2px solid #1e293b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 110px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 3px;">Gateway</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Collector (HA)</div>
</div>
<div style="background: #1e293b; border: 2px solid #1e293b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 110px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 3px;">Gateway</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Collector (HA)</div>
</div>
</div>
<p><!-- Arrow down --></p>
<div style="text-align: center; color: #94a3b8; font-size: 20px; line-height: 1; margin: 4px 0;">↓</div>
<p><!-- BACKENDS --></p>
<div style="display: flex; justify-content: center; gap: 12px; margin-bottom: 6px;">
<div style="background: #1e293b; border: 2px solid #1e293b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 3px;">Backend</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Traces</div>
</div>
<div style="background: #1e293b; border: 2px solid #1e293b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 3px;">Backend</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Metrics</div>
</div>
<div style="background: #1e293b; border: 2px solid #1e293b; border-radius: 6px; padding: 10px 18px; text-align: center; min-width: 90px;">
<div style="font-size: 9px; font-weight: bold; letter-spacing: 0.1em; color: #94a3b8; margin-bottom: 3px;">Backend</div>
<div style="font-size: 15px; font-weight: bold; color: #ffffff;">Logs</div>
</div>
</div>
<p><!-- Caption --></p>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; margin-top: 16px; text-align: center; max-width: 480px; margin-left: auto; margin-right: auto;">Tier 1 agents sit close to services and do minimal work. Tier 2 gateways handle sampling, routing, and backend fan-out.</div>
</div>
<h3 id="tier-1-collectors-running-as-agents"><b>Tier 1: Collectors running as agents</b></h3>
<p><span style="font-weight: 400;">The agent tier runs as a sidecar. Its job is exactly one thing: receive telemetry from the services and forward it as fast as possible. No tail-based sampling, no complex routing logic, no fan-out to multiple backends. The only processing you want at this tier is cheap and stateless: adding resource attributes like cluster name, node name, and environment; batching spans to reduce connection overhead; and basic filtering to drop genuinely worthless spans like health check endpoints generating thousands of spans per minute and telling you nothing.</span></p>
<div style="background: rgba(217,119,6,0.06); border-left: 3px solid #D97706; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #78350f;"><span style="font-weight: 400;">Only stamp resource attributes that are low-cardinality and apply to the whole node or pod — things like environment, cluster name, and region. Adding high-cardinality values like user IDs or request IDs as resource attributes will explode your metrics storage, because each unique value becomes a separate time series.</span></div>
<div>
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase;">TIER 1 AGENT COLLECTOR CONFIG</div>
<pre># Tier 1: runs as DaemonSet, minimal processing
receivers:
  otlp:
    protocols:
      grpc: {endpoint: "0.0.0.0:4317"}
      http: {endpoint: "0.0.0.0:4318"}

processors:
  batch:                    # batch before forwarding
    send_batch_size: 1024
    timeout: 5s
  resourcedetection:        # stamp node/pod metadata
    detectors: [k8snode, env]
  filter/drop_healthchecks:
    spans:
      exclude:
        match_type: regexp
        attributes:
          - {key: http.route, value: ".*/health.*"}

exporters:
  otlp:
    # forward to gateway tier, not directly to backend
    endpoint: "otel-gateway:4317"
    sending_queue:
      enabled: true
      num_consumers: 4
      queue_size: 500

service:
  pipelines:
    traces:
      receivers:  [otlp]
      processors: [batch, resourcedetection, filter/drop_healthchecks]
      exporters:  [otlp]
</pre>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; text-align: center; max-width: 480px; margin-left: auto; margin-right: auto; margin-bottom: 24px;">Agent config stays thin. Anything heavier than batching and attribute stamping belongs in the gateway tier.</div>
<h3 id="tier-2-collectors-running-as-gateways"><b>Tier 2: Collectors running as gateways</b></h3>
<p><span style="font-weight: 400;">The gateway tier is where the interesting work happens: tail-based sampling, fan-out to multiple backends, and the routing logic that sends traces, metrics, and logs where they need to go. Once you introduce a gateway tier, it needs careful resource sizing. In practice, that means running at least two gateway collectors behind a load balancer to </span><b>avoid single points of failure</b><span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">How you deploy them depends on your environment. In Kubernetes, that typically means a Deployment scaled by load rather than node count. In a VM-based setup, two or more collector processes behind a hardware or software load balancer works just as well. The important thing is that the gateway tier scales horizontally based on traffic, not based on how many hosts you have.</span></p>
<p><span style="font-weight: 400;">Two to four instances is a reasonable starting point for a deployment handling roughly 1,000 to 5,000 spans per second across 20 to 50 services. Beyond that, sizing should be driven primarily by your tail-based sampling configuration — specifically the </span><code>decision_wait</code><span style="font-weight: 400;"> window and the </span><code>num_traces</code><span style="font-weight: 400;"> value — which determine how much trace state each gateway must hold in memory.</span></p>
<h2 id="load-balancing-the-subtle-trap-with-tail-based-sampling"><b>Load Balancing: The Subtle Trap with Tail-Based Sampling</b></h2>
<p><span style="font-weight: 400;">If you are using tail-based sampling and running multiple gateway collector instances, standard round-robin load balancing will silently break your sampling decisions. Tail-based sampling works by collecting all spans for a given trace and then making a single keep-or-drop decision once the trace is complete. With round-robin, spans for the same trace end up scattered across different collector instances. Each instance only sees a fragment, so no instance ever has enough context to make a valid decision.</span></p>
<div style="background: rgba(217,119,6,0.06); border-left: 3px solid #D97706; border-radius: 0 8px 8px 0; padding: 22px 26px; margin: 36px 0; font-size: 17px; color: #78350f;"><i><span style="font-weight: 400;">The symptom is traces that look complete but are not. You will see traces that hit your sampling rate but are missing spans from certain services, because those spans went to a different collector instance that independently decided to drop its fragment. This is one of the harder things to debug because the data loss is structured rather than random.</span></i></div>
<p><span style="font-weight: 400;">The solution is </span><b>trace-aware load balancing</b><span style="font-weight: 400;">, where spans are routed to gateway instances based on their trace ID. The OTel Collector has a </span><a href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/loadbalancingexporter" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">loadbalancing exporter</span></a><span style="font-weight: 400;"> built for exactly this. It consistently hashes trace IDs to the same downstream collector, which means all spans for a given trace always end up in the same place regardless of which agent they came from.</span></p>
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase;">LOAD BALANCING EXPORTER CONFIG — AGENT TIER</div>
<pre>exporters:
  loadbalancing:
    routing_key: "traceID"   # hash by trace ID, not round-robin
    resolver:
      k8s:                    # auto-discover gateway pods via DNS
        service: "otel-gateway"
        ports: [4317]
    protocol:
      otlp:
        timeout: 1s
        sending_queue:
          enabled: true
          queue_size: 1000
</pre>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; text-align: center; max-width: 480px; margin-left: auto; margin-right: auto; margin-bottom: 24px;">The k8s resolver watches the gateway headless service and automatically updates routing when pods scale up or down.</div>
<p><span style="font-weight: 400;">Gateway restarts or scale-in events can occasionally produce incomplete traces.  See </span><a href="https://opentelemetry.io/docs/collector/scaling/" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">OTel Collector scaling documentation</span></a><span style="font-weight: 400;"> for details.</span></p>
<h2 id="sampling-strategies-at-volume-picking-the-right-one"><b style="letter-spacing: 0.12em; text-transform: uppercase; font-size: 16px;">Sampling Strategies at Volume: Picking the Right One</b></h2>
</div>
<div>
<p><span style="font-weight: 400;">At small scale, sampling feels like an optional optimization. At large scale, it is a </span><b>financial and operational necessity</b><span style="font-weight: 400;">. Sending 100 percent of traces from a service handling 10,000 requests per second generates a staggering volume of data, most of which you will never look at. This is not too different from logs – for example, Sematext’s log pipeline contains the </span><a href="https://sematext.com/docs/logs/sampling-processor/" target="_blank" rel="noopener"><span style="font-weight: 400;">Sampling Processor</span></a><span style="font-weight: 400;"> for the same reason. Getting sampling right means you keep the traces that help you debug real incidents and drop the ones that would just sit there consuming storage.</span></p>
<p><span style="font-weight: 400;">The tricky part is that “keep the useful traces” is not as simple as it sounds. The traces you most need to keep are the ones with errors and high latency, which are often a small fraction of total traffic. If you use pure random sampling at 1 percent, you will statistically drop 99 percent of your error traces along with everything else. That is the core tension that drives the choice between head-based and tail-based sampling.</span></p>
<div style="margin: 32px 0;">
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase; margin-bottom: 10px;">SAMPLING STRATEGY COMPARISON</div>
<table style="width: 100%; border-collapse: collapse; font-family: inherit; font-size: 14px;">
<thead>
<tr style="background: #0f172a;">
<th style="padding: 10px 14px; text-align: left; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; border: 1px solid #334155;">STRATEGY</th>
<th style="padding: 10px 14px; text-align: left; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; border: 1px solid #334155;">WHERE</th>
<th style="padding: 10px 14px; text-align: left; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; border: 1px solid #334155;">KEEPS ERRORS</th>
<th style="padding: 10px 14px; text-align: left; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; border: 1px solid #334155;">MEMORY COST</th>
<th style="padding: 10px 14px; text-align: left; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; border: 1px solid #334155;">BEST FOR</th>
<th style="padding: 10px 14px; text-align: left; font-size: 10px; font-weight: bold; letter-spacing: 0.1em; color: #f59e0b; border: 1px solid #334155;">WHAT IT DOES</th>
</tr>
</thead>
<tbody>
<tr style="background: #ffffff;">
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: 600; color: #1e293b;">Always-on</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">SDK</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #16a34a;">YES</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #dc2626;">HIGH</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Dev / staging only</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Keep all spans, no sampling</td>
</tr>
<tr style="background: #f8fafc;">
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: 600; color: #1e293b;">Parent-based</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">SDK</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #f59e0b;">INHERITS</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #16a34a;">LOW</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Consistent decisions across services</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Keep/drop based on parent trace</td>
</tr>
<tr style="background: #ffffff;">
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: 600; color: #1e293b;">Probabilistic</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">SDK/Collector</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #dc2626;">NO</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #16a34a;">LOW</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Volume reduction on healthy traffic</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Randomly keep spans at a fixed rate</td>
</tr>
<tr style="background: #f8fafc;">
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: 600; color: #1e293b;">Rate-limiting</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Collector</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #dc2626;">NO</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #16a34a;">LOW</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Capping ingest cost during spikes</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Keep spans until a fixed rate limit</td>
</tr>
<tr style="background: #ffffff;">
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: 600; color: #1e293b;">Tail-based</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Collector (GW)</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #16a34a;">YES</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; font-weight: bold; color: #dc2626;">HIGH</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Error-aware sampling at scale</td>
<td style="padding: 10px 14px; border: 1px solid #e2e8f0; color: #475569;">Keep spans based on errors &amp; latency</td>
</tr>
</tbody>
</table>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; margin-top: 12px; text-align: center; max-width: 540px; margin-left: auto; margin-right: auto; margin-bottom: 12px;">Most production deployments combine parent-based sampling at the SDK with tail-based sampling at the gateway tier.</div>
<div>
<h3 id="the-combination-that-works-at-scale"><b>The combination that works at scale</b></h3>
<p><span style="font-weight: 400;">Parent-based sampling means the sampling decision is made once at the root span — the first service that receives the request — and every downstream service in that trace inherits the same decision automatically, so you never end up with a trace where some spans were kept and others were dropped by different services making independent choices.</span></p>
<p><span style="font-weight: 400;">Use </span><a href="https://opentelemetry.io/docs/languages/go/sampling/" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">parent-based sampling at the SDK level</span></a><span style="font-weight: 400;"> to reduce overall span volume before it even reaches the collector, then use tail-based sampling at the gateway tier to make intelligent keep-or-drop decisions on what makes it through. Two passes of selection — aggressive on volume, smart about what survives.</span></p>
<p><span style="font-weight: 400;">A concrete example: set parent-based sampling at 10 percent for general traffic at the SDK. At the gateway, keep 100 percent of error traces, 100 percent of traces exceeding your latency SLO, and 10 percent of everything else. You end up storing roughly 11 to 12 percent of total trace volume, but with near-complete coverage of the production incidents you actually need to investigate.</span></p>
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase;">TAIL SAMPLING POLICY CONFIG — GATEWAY TIER</div>
<pre>processors:
  tail_sampling:
    decision_wait: 10s      # wait for all spans before deciding
    num_traces: 100000      # traces held in memory simultaneously
    expected_new_traces_per_sec: 1000
    policies:
      # always keep error traces
      - name: keep-errors
        type: status_code
        status_code: {status_codes: [ERROR]}

      # always keep slow traces (adjust threshold to your SLO)
      - name: keep-slow
        type: latency
        latency: {threshold_ms: 500}

      # keep 100% of checkout and payment — business critical
      - name: keep-critical-services
        type: string_attribute
        string_attribute:
          key: service.name
          values: [checkout-api, payment-service]

      # probabilistic baseline for everything else
      - name: baseline-sample
        type: probabilistic
        probabilistic: {sampling_percentage: 10}
</pre>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; text-align: center; max-width: 480px; margin-left: auto; margin-right: auto; margin-bottom: 24px;">Policies are evaluated in order. A trace is kept if any policy matches. The probabilistic baseline catches everything the specific policies did not select.</div>
<h3 id="memory-sizing-for-tail-based-sampling"><b>Memory sizing for tail-based sampling</b></h3>
<p><span style="font-weight: 400;">The <code>num_traces</code> parameter is the one that will bite you if you undershoot it. It controls how many traces the gateway holds in memory simultaneously while waiting for all their spans to arrive. A rough formula: multiply your expected traces per second by your decision_wait value, then add 20 percent headroom. For 1,000 traces per second with a 10 second wait, you need at least 12,000 slots — not the 1,000 that most tutorial configs show.</span></p>
<p><a href="https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">The tail sampling processor documentation</span></a><span style="font-weight: 400;"> has the full parameter reference including the memory limiter integration, which you absolutely want enabled at the gateway tier to prevent OOM kills during traffic spikes.</span></p>
<h2 id="multi-cluster-setups-when-one-pipeline-is-not-enough"><b>Multi-Cluster Setups: When One Pipeline Is Not Enough</b></h2>
<p><span style="font-weight: 400;">At some point, a single OTel pipeline stops being the right model. Maybe you operate in multiple regions with data residency requirements. Maybe you have a mix of Kubernetes clusters running different workloads with different SLOs. Whatever the reason, multi-cluster OTel setups introduce a layer of complexity that single-cluster thinking does not prepare you for.</span></p>
<p><span style="font-weight: 400;">The fundamental question is where aggregation happens. Aggregate within each cluster and forward summarized telemetry to a global backend, and you keep cross-region bandwidth low but lose the ability to do cross-cluster trace correlation. Forward raw telemetry to a central aggregation layer, and you get full correlation capability at significantly higher egress cost. Most organizations end up with a hybrid: metrics and logs aggregate locally, traces are forwarded to a central tier for correlation.</span></p>
<h3 id="getting-trace-context-across-cluster-boundaries"><b>Getting trace context across cluster boundaries</b></h3>
<p><span style="font-weight: 400;">Cross-cluster trace correlation only works if your services propagate the </span><a href="https://www.w3.org/TR/trace-context/" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">W3C traceparent header</span></a><span style="font-weight: 400;"> across cluster boundaries. Internal service mesh traffic usually handles this correctly. However, cross-cluster calls that pass through an API gateway, CDN, or any reverse proxy that strips unknown headers will </span><b>break trace continuity</b><span style="font-weight: 400;"> at that boundary.</span></p>
<p><span style="font-weight: 400;">Diagnosing this is straightforward: if you see a trace starting at an API gateway span and the first downstream service shows a different root span with no parent, there’s a propagation break. To fix it, add </span><span style="font-weight: 400;"><code>traceparent</code></span><span style="font-weight: 400;"> and </span><span style="font-weight: 400;"><code>tracestate</code></span><span style="font-weight: 400;"> to your proxy’s header allowlist.</span></p>
<p><span style="font-weight: 400;">Here is what that looks like in the two most common cases:</span></p>
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase;">PROXY HEADER CONFIG — NGINX AND ENVOY</div>
<pre># nginx — add inside your proxy_pass block
proxy_set_header traceparent $http_traceparent;
proxy_set_header tracestate  $http_tracestate;

---

# Envoy — request_headers_to_add in HttpConnectionManager
route_config:
  request_headers_to_add:
    - header: { key: traceparent }
    - header: { key: tracestate }
</pre>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; text-align: center; max-width: 480px; margin-left: auto; margin-right: auto; margin-bottom: 24px;">One of these two covers the vast majority of cases. If you are behind a CDN, check their documentation for custom header passthrough settings.</div>
<h3 id="data-residency-and-the-gdpr-headache"><b>Data residency and the GDPR headache</b></h3>
<p><span style="font-weight: 400;">If you operate in the EU, forwarding raw traces containing user identifiers to a central tier outside the EU can be a compliance problem. The practical solution is to run attribute redaction in your regional gateway before any data leaves the region. The OTel Collector’s transform processor lets you hash, mask, or drop specific attributes before export.</span></p>
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase;">PII REDACTION CONFIG — EU GATEWAY PROCESSOR</div>
<pre>processors:
  transform/redact_pii:
    trace_statements:
      - context: span
        statements:
          # hash user IDs rather than drop
          - set(attributes["user.id"], SHA256(attributes["user.id"]))
          # drop email entirely
          - delete_key(attributes, "user.email")
          # truncate IP to /24 for geo without individual tracking
          - replace_pattern(attributes["net.peer.ip"], "\\d+$", "0")
</pre>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; text-align: center; max-width: 480px; margin-left: auto; margin-right: auto; margin-bottom: 24px;">Run PII redaction at the regional gateway, not the central tier. By the time data reaches central, sensitive attributes should already be gone.</div>
<h2 id="keeping-the-pipeline-itself-observable"><b>Keeping the Pipeline Itself Observable</b></h2>
<p><span style="font-weight: 400;">It would be funny if the  observability tools couldn’t be observed. The </span><a href="https://opentelemetry.io/docs/collector/" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">OTel Collector</span></a><span style="font-weight: 400;"> exposes its own internal telemetry as a standard OTLP pipeline, which means you can route it to any backend or an observability solution that you are already using.</span></p>
<p><span style="font-weight: 400;"><code>otelcol_processor_batch_timeout_trigger_send</code> (gotta love this long property name!) tells you whether the batch processor is flushing because the timeout fired rather than because the batch was full. </span><b>A high ratio of timeout-triggered flushes means your traffic volume is lower than your batch config expects, and you are adding unnecessary latency.</b></p>
<p><span style="font-weight: 400;"><code>otelcol_exporter_queue_size</code> is the canary for backpressure. </span><b>When <code>otelcol_exporter_queue_size</code> climbs toward your configured maximum, your exporter is falling behind the ingest rate.</b><span style="font-weight: 400;"> If it hits the maximum, the collector starts dropping data. Set an alert at 80 percent of queue capacity and you will catch pressure building before it becomes data loss.</span></p>
<p><span style="font-weight: 400;">otelcol_processor_tail_sampling_sampling_decision_timer_latency (another awesome long name!) tells you how long the tail sampling processor is taking to make decisions. A sudden increase here usually means the number of active traces in memory has grown past what the processor can efficiently scan — either increase resources or tighten your sampling policy.</span></p>
<div style="font-size: 11px; font-weight: bold; letter-spacing: 0.12em; color: #64748b; text-transform: uppercase;">COLLECTOR SELF-MONITORING CONFIG</div>
<pre>receivers:
  prometheus:
    config:
      scrape_configs:
        - job_name: otel-collector
          scrape_interval: 15s
          static_configs:
            - targets: ["localhost:8888"]

# Expose collector's own telemetry via its service config
service:
  telemetry:
    metrics:
      level: detailed   # basic | normal | detailed
      address: 0.0.0.0:8888
    logs:
      level: warn       # keep collector logs quiet in production

</pre>
<div style="font-size: 13px; color: #94a3b8; font-style: italic; text-align: center; max-width: 480px; margin-left: auto; margin-right: auto; margin-bottom: 24px;">Set telemetry level to ‘detailed’ in staging to understand baseline behavior, then dial back to ‘normal’ in production.</div>
<h2 id="rolling-this-out-without-breaking-everything"><b>Rolling This Out Without Breaking Everything</b></h2>
<p><span style="font-weight: 400;">The migration path from a single collector to a tiered setup does not have to be a big-bang cutover. You could introduce the gateway tier first while keeping the existing single collector in place, route a small percentage of services to the new tier, and validate that data is flowing correctly before moving everything over.</span></p>
<p><span style="font-weight: 400;">I suggest you start with a non-critical service — one that has decent traffic but where gaps in telemetry during the migration window would not cause anyone to lose sleep. Verify spans arrive at the gateway, verify they arrive at the backend with the right resource attributes, and check that your tail sampling policies are making sensible decisions. That validation loop is worth running for a week before you touch any of your critical services.</span></p>
<p><span style="font-weight: 400;">The config change on the service side is usually just updating the OTLP endpoint to the new agent address. If you are using the </span><a href="https://opentelemetry.io/docs/kubernetes/operator/" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">OTel Operator for Kubernetes</span></a><span style="font-weight: 400;">, you can inject the agent endpoint as an environment variable through the Instrumentation custom resource — no application code changes, no redeployment of service configs when the collector topology changes.</span></p>
<p><span style="font-weight: 400;">The pattern across all of this — tiered collectors, trace-aware load balancing, layered sampling strategies, regional pipelines — is that scaling OTel is fundamentally an architecture problem, not an instrumentation problem. The instrumentation is the relatively easy part. The hard part is building a pipeline that stays operational under load, degrades gracefully when individual components have problems, and gives you enough visibility into itself that you can tell when something is wrong before it starts affecting the data your engineers depend on during incidents.</span></p>
<p><span style="font-weight: 400;">Once your OpenTelemetry pipeline is running at scale, the next step is learning how to interpret the traces to identify performance bottlenecks and root causes. See </span><a href="https://sematext.com/blog/troubleshooting-microservices-with-opentelemetry-distributed-tracing/" target="_blank" rel="noopener"><span style="font-weight: 400;">Troubleshooting Microservices with OpenTelemetry Distributed Tracing</span></a><span style="font-weight: 400;"> for an in-depth and very practical guidance on that subject.</span></p>
</div>
</div>
</div>
<p class="space-top"><a href="https://apps.sematext.com/ui/registration" class="button-big" target="_blank" rel="noopener noreferrer">Start Free Trial</a></p><hr class="hidden"><p>The post <a href="https://sematext.com/blog/running-opentelemetry-at-scale-architecture-patterns-for-100s-of-services/">Running OpenTelemetry at Scale: Architecture Patterns for 100s of Services</a> appeared first on <a href="https://sematext.com">Sematext</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
