Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 39 additions & 39 deletions apps/landing/messages/en.json

Large diffs are not rendered by default.

344 changes: 192 additions & 152 deletions apps/landing/messages/ja.json

Large diffs are not rendered by default.

344 changes: 192 additions & 152 deletions apps/landing/messages/ko.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions apps/landing/src/components/BillComparison.astro
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ import * as m from "../paraglide/messages";
<tr>
<td class="px-4 py-3 text-fg-muted">{m.bill_row_mcp()}</td>
<td class="px-4 py-3 bg-primary/8 text-primary font-medium">{m.bill_v_first_class()}</td>
<td class="px-4 py-3 text-foreground">{m.bill_v_no()}</td>
<td class="px-4 py-3 text-foreground">{m.bill_v_no()}</td>
<td class="px-4 py-3 text-foreground">{m.bill_v_no()}</td>
<td class="px-4 py-3 text-foreground">{m.bill_v_yes()}</td>
<td class="px-4 py-3 text-foreground">{m.bill_v_yes()}</td>
<td class="px-4 py-3 text-foreground">{m.bill_v_yes()}</td>
</tr>
</tbody>
</table>
Expand Down
2 changes: 1 addition & 1 deletion apps/landing/src/components/Footer.astro
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ const stars = await getGitHubStars();

<!-- Bottom bar -->
<div class="mt-12 pt-6 border-t border-border flex flex-col sm:flex-row items-center sm:justify-between gap-4">
<p class="text-fg-muted text-[10px]">&copy; {m.footer_copyright()}</p>
<p class="text-fg-muted text-[10px]">{m.footer_copyright()}</p>
<div class="flex items-center gap-4">
<a href={l("/privacy")} class="text-fg-muted text-[10px] hover:text-foreground transition-colors">{m.footer_privacy()}</a>
<a href={l("/terms")} class="text-fg-muted text-[10px] hover:text-foreground transition-colors">{m.footer_terms()}</a>
Expand Down
10 changes: 5 additions & 5 deletions apps/landing/src/components/PricingCalculator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -222,8 +222,8 @@ function calculateMaple(values: Record<string, number>, competitor: Competitor)
}

// Maple: 100 GB each for logs, traces, metrics = 300 GB total included
// Overage billed at $0.25/GB beyond 300 GB total
const overage = Math.max(0, totalDataGB - 300) * 0.25
// Overage billed at $0.30/GB beyond 300 GB total (autumn.config.ts)
const overage = Math.max(0, totalDataGB - 300) * 0.3

return {
total: baseCost + overage,
Expand All @@ -234,11 +234,11 @@ function calculateMaple(values: Record<string, number>, competitor: Competitor)
{
label: "Overage",
value: overage,
detail: `${Math.round(totalDataGB - 300)} GB × $0.25`,
detail: `${Math.round(totalDataGB - 300)} GB × $0.30`,
},
]
: []),
{ label: "Team seats", value: 0, detail: "Unlimited — always free" },
{ label: "Team seats", value: 0, detail: "No per-seat fees" },
],
}
}
Expand Down Expand Up @@ -437,7 +437,7 @@ export function PricingCalculator({ competitor }: { competitor: Competitor }) {
<p className="mt-4 text-[10px] text-[oklch(0.4_0.02_60)] leading-relaxed">
Estimates based on published pricing as of 2025. Actual costs may vary based on contract
terms, volume discounts, and additional features. Maple pricing based on the Startup plan
($39/mo with 300 GB total included data, then $0.25/GB).
($39/mo with 300 GB total included data, then $0.30/GB).
{competitor === "dash0" &&
" Dash0 bills per data point (spans & logs $0.60/M, metrics $0.20/M); Maple bills per GB, so the Maple estimate converts data points to volume at roughly 1 KB per span and log record and 0.1 KB per metric data point. Your real ratio depends on attribute and payload sizes."}
</p>
Expand Down
6 changes: 3 additions & 3 deletions apps/landing/src/components/PricingTable.astro
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,9 @@ if (plans.length === 0) {
trialDuration: 14,
subtitle: m.pricing_for_growing(),
dataFeatures: [
{ featureId: "logs", label: m.pricing_logs(), value: "100 GB", detail: "then $0.25 per GB" },
{ featureId: "traces", label: m.pricing_traces(), value: "100 GB", detail: "then $0.25 per GB" },
{ featureId: "metrics", label: m.pricing_metrics(), value: "100 GB", detail: "then $0.25 per GB" },
{ featureId: "logs", label: m.pricing_logs(), value: "100 GB", detail: "then $0.30 per GB" },
{ featureId: "traces", label: m.pricing_traces(), value: "100 GB", detail: "then $0.30 per GB" },
{ featureId: "metrics", label: m.pricing_metrics(), value: "100 GB", detail: "then $0.30 per GB" },
],
platformFeatures: PLAN_FEATURES["startup"]!,
ctaLabel: m.pricing_start_trial({ duration: "14" }),
Expand Down
6 changes: 3 additions & 3 deletions apps/landing/src/lib/best-observability-tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export interface BestTool {
export const lastUpdated = "June 2026"

export const methodology =
"We build Maple, so we list it firstbut this is an honest roundup, not a sales page. " +
"We build Maple, so it sits at #1factor that bias in; the rest of the list is played straight. " +
"Every tool here is open source or source-available — you can read the code and self-host all of " +
"them — and we note each one's license. We weighed how natively each one speaks OpenTelemetry, " +
"whether it unifies traces, logs, and metrics in one place, and how much operational work a small " +
Expand All @@ -39,7 +39,7 @@ export const bestObservabilityTools: BestTool[] = [
name: "Maple",
slug: "maple",
url: "https://maple.dev",
bestFor: "OpenTelemetry-native teams who want AI-agent workflows and honest pricing",
bestFor: "OpenTelemetry-native teams who want AI-agent workflows and flat per-GB pricing",
license: "Source-available (FSL-1.1 → Apache 2.0)",
summary:
"Maple is an OpenTelemetry-native observability platform built on ClickHouse, covering traces, logs, metrics, and browser session replay in one app. It ships a first-class MCP server so AI agents can search traces, find errors, and propose fixes, and it prices on usage instead of per-host or per-seat. Its source is available under FSL-1.1 (which converts to Apache 2.0), so you can read it, fork it, and self-host.",
Expand Down Expand Up @@ -188,6 +188,6 @@ export const listicleFaqs: Array<{ question: string; answer: string }> = [
},
{
question: "Which open-source tool is best for AI agents?",
answer: "Maple ships a first-class MCP (Model Context Protocol) server, so compatible AI agents can list services, search traces, find errors, and propose fixes directly against your telemetry the most complete AI-agent story among the tools here.",
answer: "Maple ships a first-class MCP (Model Context Protocol) server, so compatible AI agents can list services, search traces, find errors, and propose fixes against your telemetry from one backend. Grafana also offers an official MCP server for its stack; with the LGTM setup the agent works across separate data stores.",
},
]
54 changes: 27 additions & 27 deletions apps/landing/src/lib/competitors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ export const competitors: Record<string, Competitor> = {
slug: "datadog",
tagline: "Open-source observability without the surprise bills",
description:
"Maple gives you the same distributed tracing, log management, and metrics dashboards as Datadog — built on OpenTelemetry with transparent usage-based pricing and no vendor lock-in.",
"Maple covers the core observability workflow — distributed tracing, log management, and metrics dashboards — built on OpenTelemetry with a flat per-GB rate and source code you can read.",
features: {
"Pricing model": {
maple: "Usage-based, transparent",
competitor: "Complex per-host + per-GB",
},
"Open source": {
maple: true,
maple: "FSL-1.1 → Apache 2.0",
competitor: false,
},
"OpenTelemetry native": {
maple: true,
competitor: false,
competitor: "OTLP ingest via Datadog Agent",
},
"Distributed tracing": {
maple: true,
Expand All @@ -70,15 +70,15 @@ export const competitors: Record<string, Competitor> = {
},
"AI / MCP integration": {
maple: true,
competitor: false,
competitor: true,
},
"Self-hosting available": {
maple: true,
competitor: false,
},
"No vendor lock-in": {
maple: true,
competitor: false,
competitor: "Proprietary agent by default",
},
"Custom dashboards": {
maple: true,
Expand All @@ -90,15 +90,15 @@ export const competitors: Record<string, Competitor> = {
},
"Setup time": {
maple: "Minutes",
competitor: "Hours to days",
competitor: "Agent rollout per host",
},
"Proprietary agents required": {
maple: false,
competitor: true,
},
"Data retention control": {
maple: true,
competitor: false,
maple: "Configurable",
competitor: "Fixed tiers per product",
},
"Team seats included": {
maple: "Unlimited",
Expand Down Expand Up @@ -154,7 +154,7 @@ export const competitors: Record<string, Competitor> = {
},
{
question: "How does Maple's pricing compare to Datadog?",
answer: "Maple uses transparent, usage-based pricing based on data volume — no per-host fees, no per-seat charges, no separate costs for custom metrics. Datadog's pricing combines per-host, per-GB, and per-feature charges that can lead to unexpected bills as you scale. Most teams see significant cost savings with Maple.",
answer: "Maple charges a flat rate per GB of ingested data — no per-host fees, no per-seat charges, no separate costs for custom metrics. Datadog's list pricing combines per-host, per-GB, and per-feature charges. Whether you save depends on your host count and data volume; the pricing calculator compares both on your actual numbers.",
},
{
question: "Can I migrate from Datadog to Maple without downtime?",
Expand All @@ -181,13 +181,13 @@ export const competitors: Record<string, Competitor> = {
},
{
value: "100%",
label: "Open source",
detail: "Every line of code is open — audit, contribute, and self-host freely",
label: "Source on GitHub",
detail: "FSL-1.1, converting to Apache 2.0 — audit it, fork it, self-host it",
},
{
value: "$0",
label: "Per-seat cost",
detail: "Unlimited team members included. No per-seat pricing, ever",
detail: "No per-seat pricing on any plan — every engineer gets access",
},
],
},
Expand All @@ -203,7 +203,7 @@ export const competitors: Record<string, Competitor> = {
competitor: "Usage-based + self-host costs",
},
"Open source": {
maple: true,
maple: "FSL-1.1 → Apache 2.0",
competitor: true,
},
"OpenTelemetry native": {
Expand All @@ -224,7 +224,7 @@ export const competitors: Record<string, Competitor> = {
},
"AI / MCP integration": {
maple: true,
competitor: false,
competitor: true,
},
"Self-hosting available": {
maple: true,
Expand Down Expand Up @@ -309,7 +309,7 @@ export const competitors: Record<string, Competitor> = {
},
{
question: "How does Maple compare to Grafana Cloud?",
answer: "Grafana Cloud manages the Loki/Tempo/Mimir stack for you but you're still working with multiple query languages and separate data stores. Maple provides a unified experience where all signals are correlated automatically — plus AI-powered diagnostics and MCP integration that Grafana doesn't offer.",
answer: "Grafana Cloud manages the Loki/Tempo/Mimir stack for you, but you're still working with multiple query languages and separate data stores. Maple stores all three signals in one database, so traces, logs, and metrics are correlated automatically instead of joined across backends.",
},
{
question: "Do I need to learn a new query language?",
Expand Down Expand Up @@ -351,14 +351,14 @@ export const competitors: Record<string, Competitor> = {
slug: "new-relic",
tagline: "Full-stack observability without per-seat pricing",
description:
"Maple provides the same full-stack observability as New Relic — traces, logs, and metrics — with OpenTelemetry-native ingestion, no per-seat fees, and the freedom to self-host.",
"Maple covers the observability core — traces, logs, and metrics — with OpenTelemetry-native ingestion, no per-seat fees, and the freedom to self-host.",
features: {
"Pricing model": {
maple: "Usage-based, transparent",
competitor: "Per-seat + per-GB",
},
"Open source": {
maple: true,
maple: "FSL-1.1 → Apache 2.0",
competitor: false,
},
"OpenTelemetry native": {
Expand All @@ -379,15 +379,15 @@ export const competitors: Record<string, Competitor> = {
},
"AI / MCP integration": {
maple: true,
competitor: false,
competitor: true,
},
"Self-hosting available": {
maple: true,
competitor: false,
},
"No vendor lock-in": {
maple: true,
competitor: false,
competitor: "Proprietary agents, NRQL",
},
"Custom dashboards": {
maple: true,
Expand All @@ -406,8 +406,8 @@ export const competitors: Record<string, Competitor> = {
competitor: true,
},
"Data retention control": {
maple: true,
competitor: false,
maple: "Configurable",
competitor: "Extended retention costs extra",
},
"Team seats included": {
maple: "Unlimited",
Expand Down Expand Up @@ -460,11 +460,11 @@ export const competitors: Record<string, Competitor> = {
faqs: [
{
question: "Is Maple a full replacement for New Relic?",
answer: "Maple covers the core observability features: distributed tracing, log management, metrics dashboards, alerting, and AI-powered diagnostics. If you're using New Relic primarily for APM, logs, and infrastructure monitoring, Maple handles those use cases. Advanced New Relic features like Browser Monitoring and Synthetics are not yet available.",
answer: "Maple covers the core observability features: distributed tracing, log management, metrics dashboards, alerting, and AI-powered diagnostics. If you're using New Relic primarily for APM, logs, and infrastructure monitoring, Maple handles those use cases. For browser-side visibility Maple offers session replay correlated with backend traces rather than full RUM; Synthetics has no Maple equivalent yet.",
},
{
question: "How much can I save by switching from New Relic to Maple?",
answer: "Savings depend on your team size and data volume. New Relic charges per full-platform user (and per GB of data beyond the free tier). Maple charges only for data volume with unlimited seats — so the more engineers you have, the more you save. Teams with 10+ users typically see significant reductions.",
answer: "Savings depend on your team size and data volume. New Relic's list price charges per full-platform user plus per GB of data beyond the free tier. Maple charges only for data volume, with no seat fees — so the difference grows with the number of engineers who need access. Run both through the pricing calculator on your actual numbers.",
},
{
question: "Does Maple support NRQL or a similar query language?",
Expand All @@ -487,12 +487,12 @@ export const competitors: Record<string, Competitor> = {
{
value: "$0",
label: "Per-seat cost",
detail: "Unlimited team members — no per-user fees to limit observability access",
detail: "No per-user fees to limit observability access",
},
{
value: "100%",
label: "Open source",
detail: "Inspect every line of code. No black-box data processing",
label: "Source on GitHub",
detail: "FSL-1.1, converting to Apache 2.0 — no black-box data processing",
},
{
value: "0",
Expand All @@ -513,7 +513,7 @@ export const competitors: Record<string, Competitor> = {
competitor: "Usage-based, transparent",
},
"Open source": {
maple: true,
maple: "FSL-1.1 → Apache 2.0",
competitor: false,
},
"OpenTelemetry native": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {

const pageTitle = "Best Open-Source Observability Tools in 2026";
const pageDescription =
"An honest, ranked roundup of the best open-source observability platforms — OpenTelemetry-native traces, logs, and metrics you can self-host. Compare Maple, Grafana, SigNoz, HyperDX, and more. Updated June 2026.";
"A ranked roundup of open-source observability platforms — OpenTelemetry-native traces, logs, and metrics you can self-host. Compare Maple, Grafana, SigNoz, HyperDX, and more, with pros, cons, and licenses. Updated June 2026.";

const siteUrl = Astro.site?.toString().replace(/\/$/, "") ?? "https://maple.dev";
const pageUrl = `${siteUrl}/best-open-source-observability-tools`;
Expand Down Expand Up @@ -50,7 +50,7 @@ const itemListJsonLd = {
<FeatureHero
label="Guide"
title="Best open-source observability tools in 2026"
subtitle="OpenTelemetry-native traces, logs, and metrics you can self-host — ranked honestly, with what each tool is genuinely best for."
subtitle="OpenTelemetry-native traces, logs, and metrics you can self-host — ranked, with pros, cons, licenses, and what each tool is best for."
/>

<!-- Intro + methodology + last updated -->
Expand Down
4 changes: 2 additions & 2 deletions apps/landing/src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const homeFaqs = [
{
question: "Is Maple open source?",
answer:
"Maple's source is available under the Functional Source License (FSL-1.1) — you can read every line, fork it, and self-host. Under FSL the code converts to Apache 2.0 over time. You own your data and your instrumentation, and you can run Maple yourself or use the hosted version.",
"Maple's source is on GitHub under the Functional Source License (FSL-1.1) — you can read every line, fork it, and self-host. Each release becomes Apache 2.0 two years after publication. You own your data and your instrumentation, and you can run Maple yourself or use the hosted version.",
},
{
question: "Is Maple OpenTelemetry-native?",
Expand All @@ -42,7 +42,7 @@ const homeFaqs = [
{
question: "How is Maple priced?",
answer:
"Maple uses transparent, usage-based pricing — no per-host or per-seat fees. You pay for the data you ingest and the retention window you choose.",
"The Startup plan is $39/month with 100 GB of logs, traces, and metrics each included, then a flat $0.30 per GB. No per-host or per-seat fees. Enterprise plans add custom volume and retention.",
},
{
question: "Does Maple work with AI agents?",
Expand Down
2 changes: 1 addition & 1 deletion apps/landing/src/pages/local.astro
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const valueProps = [
<div class="max-w-2xl mb-12">
<LocalEyebrow index="01" label="Why local" />
<h2 class="font-display text-3xl sm:text-4xl md:text-5xl font-semibold leading-[1.04] tracking-tight">
The fastest way to look at OpenTelemetry data
From OTLP exporter to dashboard in one command
</h2>
<p class="mt-5 text-sm md:text-base text-fg-muted leading-relaxed">
Point any OTLP exporter at localhost, open the dashboard, and explore traces, logs, and
Expand Down
Loading
Loading