diff --git a/apps/landing/src/pages/guides/index.astro b/apps/landing/src/pages/guides/index.astro index 11b74932f3..59dca929a2 100644 --- a/apps/landing/src/pages/guides/index.astro +++ b/apps/landing/src/pages/guides/index.astro @@ -56,6 +56,13 @@ const coreGuides = [ description: "The four metric types with examples, the handful worth watching, and how to collect and chart them.", read: "7 min", }, + { + href: "/guides/new-relic-pricing", + label: "Pricing", + title: "New Relic pricing, explained", + description: "How users and gigabytes add up to a monthly bill, what the free tier covers, and what a 12-person team pays.", + read: "9 min", + }, { href: "/guides/sentry-pricing", label: "Pricing", @@ -245,8 +252,11 @@ const itemListJsonLd = { href={guide.href} class:list={[ "group flex min-h-[280px] flex-col bg-bg p-6 transition-colors hover:bg-bg-deep focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-ring md:p-8", - // An odd count leaves a hole in the last row; the last card fills it. - index === coreGuides.length - 1 && coreGuides.length % 2 === 1 && "md:col-span-2", + // A short last row leaves a hole; the last card stretches to fill it at each column count. + index === coreGuides.length - 1 && [ + coreGuides.length % 2 === 1 && "md:col-span-2", + ["xl:col-span-1", "xl:col-span-3", "xl:col-span-2"][coreGuides.length % 3], + ], ]} >
diff --git a/apps/landing/src/pages/guides/new-relic-pricing.astro b/apps/landing/src/pages/guides/new-relic-pricing.astro new file mode 100644 index 0000000000..1961053f9b --- /dev/null +++ b/apps/landing/src/pages/guides/new-relic-pricing.astro @@ -0,0 +1,748 @@ +--- +import Layout from "../../layouts/Layout.astro"; +import Nav from "../../components/Nav.astro"; +import Footer from "../../components/Footer.astro"; +import BottomCTA from "../../components/BottomCTA.astro"; +import Breadcrumb from "../../components/Breadcrumb.astro"; +import FAQ from "../../components/FAQ.astro"; +import SeoHead from "../../components/SeoHead.astro"; +import TableOfContents from "../../components/TableOfContents.astro"; +import { CONTRIBUTORS } from "../../lib/changelog-meta"; +import { highlight } from "../../lib/guide-highlight"; +import { estimateMaple, estimateVendor } from "../../lib/vendor-pricing"; + +const pageTitle = "New Relic pricing: plans, free tier and costs | Maple"; +const pageDescription = + "New Relic pricing explained: the free tier's 100 GB, Standard, Pro and Enterprise plans, per-user and per-GB rates, and a worked monthly bill."; +const published = "2026-10-19"; +const updated = "2026-10-20"; +const updatedLabel = "October 20, 2026"; +const author = CONTRIBUTORS.jeremyfunk; +const authorUrl = `https://github.com/${author.github}`; + +const toc = [ + { depth: 2, slug: "model", text: "The pricing model" }, + { depth: 3, slug: "user-types", text: "User types" }, + { depth: 2, slug: "plans", text: "Plans" }, + { depth: 3, slug: "standard-ceiling", text: "Standard's five-user limit" }, + { depth: 3, slug: "terms", text: "Pay-as-you-go or commit" }, + { depth: 2, slug: "free-tier", text: "Free tier" }, + { depth: 3, slug: "past-100-gb", text: "Past 100 GB" }, + { depth: 3, slug: "free-trial", text: "Free trial" }, + { depth: 2, slug: "rates", text: "User types and data rates" }, + { depth: 3, slug: "counting", text: "How users are counted" }, + { depth: 3, slug: "data-options", text: "Original Data or Data Plus" }, + { depth: 3, slug: "compute", text: "Compute pricing" }, + { depth: 2, slug: "example", text: "Cost example" }, + { depth: 3, slug: "dynatrace", text: "Dynatrace vs New Relic" }, + { depth: 2, slug: "reduce", text: "Lowering the bill" }, + { depth: 3, slug: "collector", text: "Filter in a Collector" }, +]; +const sectionNav = toc.filter((h) => h.depth === 2); + +// One color per billing meter, used by the formula, the meter chart, the +// user-type badges and the cost bars. +const meters = { + full: { name: "Full platform user", color: "var(--chart-p99)" }, + core: { name: "Core user", color: "var(--chart-5)" }, + data: { name: "Data past 100 GB", color: "var(--chart-2)" }, + free: { name: "Free", color: "var(--chart-3)" }, +}; + +// Rates the shared estimator does not model, from newrelic.com/pricing. +const CORE_USER = 49; +const DATA_PLUS_PER_GB = 0.6; +const PRO_MONTHLY_PER_USER = 418.8; + +const usd = (amount: number) => + `$${amount.toLocaleString("en-US", { minimumFractionDigits: Number.isInteger(amount) ? 0 : 2, maximumFractionDigits: 2 })}`; + +const dataGb = 800; +const billableGb = dataGb - 100; +const allFull = estimateVendor("new-relic", { fullUsers: 12, dataVolume: dataGb }); +const mixed = estimateVendor("new-relic", { fullUsers: 4, dataVolume: dataGb }); +const [allFullUsers, allFullData] = allFull.breakdown; +const [mixedFullUsers, mixedData] = mixed.breakdown; +const coreCost = 8 * CORE_USER; +const mixedTotal = mixed.total + coreCost; +const dataPlusCost = billableGb * DATA_PLUS_PER_GB; +const proMonthlyUsers = 12 * PRO_MONTHLY_PER_USER; +const maple = estimateMaple("new-relic", { fullUsers: 12, dataVolume: dataGb }); + +const scenarios = [ + { + label: "A", + title: "12 full platform users, Pro with a 1-year commitment", + total: allFull.total, + parts: [ + { meter: meters.full, value: allFullUsers.value, detail: allFullUsers.detail }, + { meter: meters.data, value: allFullData.value, detail: `${billableGb} GB × $0.40` }, + ], + }, + { + label: "B", + title: "4 full platform + 8 core users, Standard", + total: mixedTotal, + parts: [ + { meter: meters.full, value: mixedFullUsers.value, detail: mixedFullUsers.detail }, + { meter: meters.core, value: coreCost, detail: `8 × $${CORE_USER}` }, + { meter: meters.data, value: mixedData.value, detail: `${billableGb} GB × $0.40` }, + ], + }, +]; +const maxTotal = Math.max(...scenarios.map((s) => s.total)); +const seatShareA = Math.round((allFullUsers.value / allFull.total) * 100); + +// The free-tier meter: 4 px per GB from x = 110. +const gbX = (gb: number) => 110 + gb * 4; + +const ingestQuery = `FROM NrConsumption SELECT sum(GigabytesIngested) +WHERE productLine = 'DataPlatform' +SINCE 3 months ago FACET usageMetric TIMESERIES 1 day`; + +const userQuery = `FROM NrMTDConsumption SELECT latest(FullPlatformUsersBillable), + latest(CoreUsersBillable) SINCE 3 hours ago`; + +const alertQuery = `FROM NrMTDConsumption SELECT latest(GigabytesIngested) +WHERE productLine = 'DataPlatform'`; + +const collectorConfig = `receivers: + otlp: + protocols: + grpc: + http: + +processors: + filter/drop-debug-logs: + error_mode: ignore + logs: + log_record: + - severity_number != SEVERITY_NUMBER_UNSPECIFIED and severity_number < SEVERITY_NUMBER_INFO + batch: + +exporters: + otlphttp/newrelic: + endpoint: https://otlp.nr-data.net # EU: https://otlp.eu01.nr-data.net + headers: + api-key: \${env:NEW_RELIC_LICENSE_KEY} + otlphttp/maple: + endpoint: https://ingest.maple.dev # EU: https://ingest.eu.maple.dev + headers: + Authorization: Bearer \${env:MAPLE_INGEST_KEY} + +service: + pipelines: + traces: + receivers: [otlp] + processors: [batch] + exporters: [otlphttp/newrelic, otlphttp/maple] + logs: + receivers: [otlp] + processors: [filter/drop-debug-logs, batch] + exporters: [otlphttp/newrelic, otlphttp/maple]`; + +const faqs = [ + { + question: "Is New Relic free?", + answer: + "Yes. The free tier has no time limit and needs no credit card. Each month it includes 100 GB of data ingest, one full platform user, unlimited basic users, at least 8 days of retention and 500 synthetic check runs. You pay once you need more data or more full platform or core users.", + }, + { + question: "How much does New Relic cost per month?", + answer: + "Users plus data. On Standard, the first full platform user is $10 a month and each additional one $99 a month, up to five. On Pro each full platform user is $349 a month with a 1-year commitment, or $418.80 a month without one. Core users are $49 a month on any paid plan, and every GB past the first 100 is $0.40. A 12-person team sending 800 GB pays about $979 a month with 4 full platform and 8 core users on Standard, or $4,468 with all 12 on Pro.", + }, + { + question: "What happens past 100 GB on the New Relic free tier?", + answer: + "New Relic sends an email and an in-app alert at 85% of the 100 GB. Once a Free account passes 100 GB in a calendar month, data ingest stops and you lose access to the platform until you upgrade or the first day of the next month. On a paid plan the first 100 GB stays free and every GB after it is billed.", + }, + { + question: "Is there a New Relic free trial?", + answer: + "New Relic does not advertise a time-limited trial of Standard or Pro. The free tier does not expire and includes one full platform user, so one person can use the APM, infrastructure and browser views on up to 100 GB a month before paying.", + }, + { + question: "Does New Relic charge per host?", + answer: + "No. Hosts, agents and containers are not counted. A host costs only the data it sends, so 10 hosts and 1,000 hosts pay the same user fees.", + }, + { + question: "Is New Relic cheaper than Dynatrace?", + answer: + "It depends on team size and host count. New Relic bills per full platform user and per GB, with hosts free. Dynatrace bills per host (by memory for full-stack monitoring) and per GiB of logs and traces, with no user fee, under an annual commitment. A small team on many hosts usually pays less on New Relic; a large team on few hosts often pays less on Dynatrace.", + }, +]; + +const siteUrl = Astro.site?.toString().replace(/\/$/, "") ?? "https://maple.dev"; +const articleJsonLd = { + "@context": "https://schema.org", + "@type": "TechArticle", + headline: "New Relic pricing, explained", + description: pageDescription, + datePublished: published, + dateModified: updated, + author: { "@type": "Person", name: author.name, url: authorUrl }, + publisher: { + "@type": "Organization", + name: "Maple", + logo: { "@type": "ImageObject", url: `${siteUrl}/logo192.png` }, + }, + mainEntityOfPage: `${siteUrl}/guides/new-relic-pricing`, +}; +--- + + + +