Prometheus customization

Prometheus customization covers the exporters, instrumentation, rules, routing and dashboards that make metrics useful to the teams that depend on them. This page explains what the work includes, what drives its cost, and what you need to provide.

On this page

What Prometheus customization involves

Customization starts after a base Prometheus deployment is running and scraping targets. It covers the work that makes the metrics match how your services are built and who answers for them: custom exporters for systems that expose no metrics endpoint, application instrumentation with the official client libraries, relabeling in scrape and metric configuration, recording rules that precompute expensive queries for dashboards and alerts, alert routing trees that send notifications to owning teams, and dashboards organized by service owner instead of by host.

Four triggers usually start this work. A new service ships with no metrics at all. A team receives alerts it cannot act on, or alerts nobody owns. Dashboards were copied from a template and do not reflect how the service is actually run, such as its request paths, queues or deployment units. Scrape configuration has grown by hand until label names differ across jobs and queries become hard to write. Each trigger points to a specific artifact: an instrumentation change, a relabel rule, a recording rule, or a routing tree entry.

Most organizations build this in-house, and the work is mostly engineering time and design judgment rather than license spend. Prometheus is Apache-2.0 licensed with no paid enterprise edition, and its pull model, PromQL and configuration files are all open. The hard parts are deciding label conventions, choosing which signals page people, and agreeing on ownership metadata. A partner can help when the team lacks PromQL depth or needs the design done before the build. Ask any partner to show the written scope for exporters, instrumented services, rules and routes, and who maintains each artifact after handover.

What the work includes

Customization sits on top of a working Prometheus deployment. Sibling topics cover base rollout, alerting rule design and routing mechanics, and security hardening; this page covers the customization layer built on top of them, and each workstream below ends in artifacts your team can maintain.

Custom exporter development

Proprietary, legacy or unsupported systems often expose no metrics Prometheus can scrape, so a custom exporter translates their state into metrics. You receive the source code, automated tests, a documented list of metric names and label schemas, and a runbook for changing them. Check how the exporter authenticates to its target and how it bounds label cardinality.

Application instrumentation standards

Instrumentation standards define which metrics services expose, their types, units and naming, so teams report consistently. You receive a written standard, reference client library snippets and a review checklist applied to each service's metrics. Confirm who owns label choices, since unbounded user or request identifiers quickly inflate storage.

Scrape and metric relabeling

Relabeling rules decide which targets are scraped, which labels are attached and which series are dropped before storage. You receive versioned scrape and relabel configuration, with comments explaining each rule and a test set of sample targets showing the expected output. Review drop rules carefully, because a mistake can silently remove metrics that alerts depend on.

Recording rule libraries

Recording rules precompute expensive PromQL expressions so dashboards and alerts stay responsive. You receive a versioned library of rules grouped by service or domain, each with a documented metric name, evaluation interval and owner. Check that rule names follow the agreed level and labels convention so teams can find and reuse them.

Team routing tree design

The routing tree maps alert labels to the teams that own each service, which is an ownership decision as much as a configuration task. You receive an ownership mapping table, the routing tree expressed in configuration and a runbook for adding a team or service. Confirm that every alert label used for routing is set by the rules, not by hand.

Dashboard build and handover

Dashboards are built around the services and teams that use them, with panels tied to the recording rules and metric names in the library. You receive dashboard definitions as versioned files, a short guide for each dashboard and a handover session with the teams that will maintain them. Check that dashboards reference variables rather than hard-coded instance names.

Configuration packaging and review

Exporters, relabel rules, recording rules, routing and dashboards change together, so they need one packaging and review process. You receive a repository layout, a validation pipeline that runs rule and configuration checks before merge, and a runbook covering review roles and rollback. Confirm the pipeline runs against the Prometheus version you operate, since rule syntax can change between releases.

What drives cost and duration

The table lists the drivers that change Prometheus customization effort, why each one matters and how to keep it under control.

DriverWhy it mattersHow to keep it down
Services and teams needing custom metricsEach service owner brings naming, labeling and alerting expectations, and agreeing them takes more time than writing the instrumentation itself.Start with the services that page someone, define a shared metric naming standard once and add teams in waves.
Systems needing custom exportersEach system without a native or community exporter needs its own collector, tests, documentation and upkeep as the system changes.Check existing exporters first, and limit custom exporters to systems where no maintained option exists or the gap blocks alerting.
Metric naming and label cardinality decisionsLabels with unbounded values such as user IDs or request paths multiply series, drive memory and storage use, and are hard to undo once dashboards depend on them.Agree on allowed label sets, review new labels before release, and use recording rules or relabeling to drop high-cardinality dimensions.
Ownership boundaries that routing must reflectAlert routing trees need one branch per owning team, escalation path and on-call schedule, and each boundary adds rules to test and keep current.Map alert ownership from the service catalog before writing routes, and route by team label so new services inherit a default receiver.
Dashboard count and audienceEach dashboard needs a named audience, queries that stay fast under load and review whenever the underlying metrics change.Build a small set of role-based dashboards, retire unused ones and reuse shared panels and template variables.
Environments and change controlRules, scrape configuration and relabeling must be promoted through each environment, and every change needs review and rollback steps.Keep configuration in version control, validate rules with promtool in the pipeline and limit the number of environments that need full parity.
Language and framework spread of instrumented applicationsEach language or framework has its own client library, conventions and quirks, so a mixed estate needs more review and more test coverage.Standardize on a small set of supported client libraries and provide a reference instrumentation pattern for each one.
Compliance and access requirements on metric contentMetrics and labels can expose customer identifiers, internal hostnames or security events, which may bring access controls, retention limits and review steps into scope.Confirm with your compliance and security leads what metric content is allowed before design, and enforce it with relabeling and access controls.

Project phases and outputs

The sequence moves from agreeing who depends on which metrics to a handed-over, documented configuration that your team can change and roll back.

  1. Discover metric consumers and owners

    We interview the teams that build, run and respond to the services Prometheus watches, and inventory the dashboards, alerts and questions they rely on today. The output is a consumer and owner register that maps each service and metric family to the people who act on it. Done means each owner has confirmed their entries in writing.

  2. Agree a metric and label naming standard

    We draft naming conventions for metric names, units, label keys and label cardinality limits, then review them with the owners from discovery. The output is a short standard document with examples and a list of banned labels, such as unbounded identifiers. Done means the standard is approved and applied to a sample set of existing metrics.

  3. Design exporters and instrumentation

    We specify which custom exporters and application instrumentation are needed, what each one exposes, how it discovers its targets and how it authenticates. The output is a design record covering metric definitions, scrape intervals, and any URL-parameter targets that need access controls. Done means the owners sign off the design before build begins.

  4. Build and unit test exporters and rules

    We write the exporters and recording and alerting rules, and test them with unit tests that check metric output and PromQL results against fixture data. The output is versioned source code and rule files in your repository, with a test report. Done means all tests pass in your continuous integration pipeline.

  5. Configure relabeling and routing in staging

    We write relabeling rules and Alertmanager routing trees, then run them against a staging Prometheus that scrapes non-production targets. The output is validated configuration files and a test log showing expected series, labels and alert routing to each receiver. Done means the owners confirm that routing reaches the right teams in a controlled alert test.

  6. Build dashboards with owner review

    We build dashboards for each consumer group from the agreed metrics, then walk each owner through them to confirm panels answer their questions. The output is exported dashboard definitions under version control and a list of owner-approved changes. Done means each owner has accepted their dashboards or the open items are recorded.

  7. Roll out with a reload and rollback path

    We apply the approved configuration to production through a configuration reload, with a documented rollback to the previous version and a check of scrape health and alert routing after the change. The output is a rollout record and a tested rollback procedure. Done means the rollback has been exercised in staging and the production checks pass.

  8. Hand over with documentation

    We write runbooks for changing exporters, rules, relabeling and routing, and train the staff who will maintain them. The output is a documentation set, the source repository, and a handover session record. Done means your named operators have made a supervised change themselves.

What teams keep and what they outsource

This table compares each Prometheus customization work area with what teams usually keep in-house, what they commonly buy as a fixed-scope service, and the skills each side needs.

Work areaTypically kept in-houseTypically outsourcedSkills required
Service owner requirementsDeciding which symptoms each service owner must see, which pages wake someone up, and which signals are only for debuggingFacilitating requirement workshops and drafting the first list of candidate signals from existing dashboards and incidentsService ownership, on-call experience, incident review practice
Metric naming governanceApproving naming conventions, label policy and ownership of the shared style guideDrafting the convention, auditing existing metric names and writing lint checks for CIMetric naming conventions, label cardinality analysis, CI tooling
Exporter developmentOwning the exporters after handover, reviewing them against service needs, and deciding which systems need oneBuilding custom exporters for systems without one, with tests and packaging to the agreed scopeGo or Python development, Prometheus exposition format, knowledge of the target system's APIs
Application instrumentationDeciding which business and latency metrics each team exposes and reviewing code changes that add themAdding client library instrumentation to selected services and writing the patterns other teams copyClient libraries in the application language, HTTP and queue semantics, performance testing
PromQL rule authoringChoosing which symptoms become alerts, setting thresholds with service owners and signing off each ruleWriting recording and alerting rules to the agreed list, with unit tests using promtoolPromQL, rule evaluation behavior, promtool unit testing, performance review
Alertmanager routingMapping routes to the current on-call rota, escalation paths and maintenance windowsBuilding the routing tree, inhibition and silence patterns, and testing receivers against sample alertsAlertmanager configuration, your paging tool's integration model, on-call design
Dashboard designChoosing the questions each dashboard answers and retiring panels nobody usesBuilding the dashboards and shared panel templates from the agreed question listGrafana dashboard design, PromQL query tuning, UX for operations screens
Ongoing rule ownership after handoverReviewing rule changes, owning the Git repository, and deciding when a rule is retiredOptional retainer covering rule reviews, upgrade testing for rules and storage, and fixes to exportersGit-based change control, Prometheus release tracking, on-call feedback loops

What usually goes wrong

Most Prometheus customization problems do not show up at go-live. They appear later as rising storage, misleading numbers, exporters that can be abused, or alerts that stop firing after an upgrade. Each card below names one failure and the check that prevents it.

Unbounded label cardinality

Labels built from user IDs, request paths or pod names create a new time series for every distinct value, which inflates disk use, memory and query cost. Review each proposed label before instrumentation ships, keep identifiers in logs or traces, and normalize paths to route templates. Measure series count per job after rollout.

Prometheus used for exact billing counts

Teams sometimes use Prometheus counters as the record for invoices or per-request charges. The Prometheus overview docs say it values reliability over precision and is not a good choice where 100% accuracy is required. Keep billing in a system that records each event, and use Prometheus only for operational trends.

Exporters that accept arbitrary targets

Exporters such as SNMP and Blackbox take targets from URL parameters. The Prometheus security model warns that anyone with HTTP access to them can make them send requests to arbitrary endpoints. Restrict the exporter to an allowlist of modules and targets, place it behind authentication, and keep it off networks that untrusted callers can reach.

Recording rules that drift from alerts

A recording rule and an alert that compute the same signal with slightly different expressions will eventually disagree, so a dashboard looks healthy while a page fires, or the reverse. Define each shared expression once, reference the recording rule from the alert, and review both together whenever a label or metric name changes.

Routing trees built from org charts

Alertmanager routes that mirror the company structure send pages to whoever owns a department rather than whoever is on call for the failing service. Build routes from service ownership and on-call rotations, use labels that identify the owning team, and test each route with sample alerts before cutover.

Relabeling that silently drops series

A relabel rule with a broad regex or a wrong action can remove targets or series without any error. Series then disappear from dashboards and alerts stop evaluating against missing data. Test relabeling against sample targets, compare series counts before and after each change, and alert on targets that vanish from the scrape list.

Exporters and rules broken by release cycles

Prometheus minor releases arrive on a 6-week cycle and generally stop receiving bug fixes after those 6 weeks, while the LTS line receives fixes for one year. Custom exporters and rule files that depend on behavior in one release can break on the next. Pin versions, run rule and exporter tests in staging, and confirm the support window before choosing a line.

How the work differs by starting point

When Prometheus is new to the organization, customization starts from a blank inventory, so most of the work is deciding what gets collected and who owns it. The build is larger in design and smaller in cleanup.

  • Scope: Define the target inventory by service and team, then decide which custom exporters and application instrumentation are needed before writing any scrape configuration.
  • Dependencies: Settle label conventions, naming and the relabeling rules that every job will share, since changing them later means touching every target and rule.
  • Dependencies: Agree on the recording rules and alert routing tree up front so new services inherit them rather than defining their own.
  • Testing: Validate each custom exporter against a staging target and confirm the expected series, labels and cardinality before adding it to production scrapes.
  • Testing: Check rule files with promtool and exercise alert routes with test alerts so each receiver is verified before go-live.

What you need to provide

The schedule and the quality of a Prometheus customization both depend on what your team hands over before design starts. The most important inputs are a running Prometheus or an agreed target environment, read access to the scrape configuration and rule files, and a sample of the services you want instrumented. Without the current scrape and rule files, the work starts with discovery instead of design, and every relabeling or recording rule is written against guesses about label sets that are already in production.

Named owners matter as much as access. Each service and each team that receives alerts needs a named owner who can confirm metric names, label meanings, expected alert thresholds and acceptable notification volume. Ask for the on-call structure and escalation paths in writing, including which Alertmanager receivers map to which rotations. Routing trees cannot be validated against a team that has no one available to say whether a page is useful. Review time from service owners and access to the code repositories where exporters and instrumentation live should be booked in advance, because those reviews are often the longest wait in the project.

Ask for any existing metric naming conventions and a staging environment that mirrors production label patterns. Staging with realistic cardinality is what lets you test relabeling and recording rules before they touch live series. Also confirm who approves changes to labels and alert routing, and how quickly that approval happens. If approvals are unclear, plan for a slower change cycle, because a relabel rule that alters series names can break dashboards and alerts that teams depend on.

Frequently asked questions

What drives the cost of Prometheus customization?

The cost follows the amount of custom work, not a license, because Prometheus is Apache-2.0 licensed with no paid edition. The main drivers are the number and complexity of custom exporters, how much application code must change for instrumentation, the volume of recording rules and relabeling logic, the alert routing trees each team needs, and the dashboards. Testing effort rises with the number of environments and the need for parallel runs before cutover. Build work is one-time, while keeping exporters and rules current through upgrades recurs. Figures appear only in a written scope. Ask for a quote that separates the build from ongoing support and lists each exporter and rule set in scope.

How long does Prometheus customization take to complete?

Duration depends on the same drivers as cost: the number of services to instrument, whether exporters must be written or existing ones suffice, how many teams own alert routes, and how many dashboards are needed. Approval cycles and access to test environments often set the pace as much as the code does. Changes to relabeling or alerting need a comparison run against live series before they replace current rules, which adds time. DeployOpen does not state a duration here. A written scope sets the schedule, the milestones and the dependencies on your teams, so ask for milestones tied to named deliverables.

Can an in-house team customize Prometheus without an implementation partner?

Yes, many teams do, if they already run Prometheus, know PromQL and have engineers who can write exporters in the languages their services use. Gaps usually appear in relabeling edge cases, alert routing across Alertmanager receivers, and upgrade testing when a new minor release arrives every 6 weeks. Check whether the team has the capacity for on-call support during rollout and a test environment that mirrors production targets. A partner is most useful when the team lacks those skills or the bandwidth to build and run the changes alongside its normal work.

What must our team provide before customization work starts?

Start with an inventory: scrape targets, existing exporters, current alert rules, and the teams that receive notifications. You also need a named technical owner who can decide label conventions and alert ownership, plus a test environment with representative targets. Provide current configuration files, the Prometheus and Alertmanager versions in use, and how they are deployed, including whether the admin and lifecycle endpoints are enabled. Access to the reverse proxy and the secrets store matters for any new targets. The written scope should state which items your team delivers and which items DeployOpen delivers.

Do we need custom exporters or will existing exporters work?

Use existing exporters where they expose the metrics you need, since they are already maintained upstream and cost less to run. Write a custom exporter when a system exposes its data only through a proprietary API or interface. Direct instrumentation of internal application code is usually the better fit for services you own. Review any exporter that takes targets from URL parameters, such as SNMP or Blackbox, because the security model warns that anyone with HTTP access can make it send requests to arbitrary endpoints. Confirm metric names, label cardinality and the owner for maintenance before committing to either path.

How do we test and roll out rule and config changes safely?

Validate every configuration and rule file before it reaches a server, then deploy changes through version control and a staged environment. Reloads and shutdowns use the lifecycle endpoints, which the security model says are disabled by default, so confirm which endpoints are enabled before you build a deployment pipeline. Admin APIs are also off by default. Run new recording and alerting rules alongside the existing ones, compare their results, and only then switch notifications over. Ask the scope to name the reload method, the rollback steps and who approves production changes.

What happens after handover, including upgrades on the 6-week cycle?

Handover ends the build, but Prometheus keeps releasing. A new minor release cycle begins every 6 weeks, and a minor release generally stops receiving bug fixes after those 6 weeks. The long-term support line receives bug fixes for one year. The current LTS line is 3.13, supported until July 31, 2027. Each upgrade needs testing of rules, relabeling and storage behavior before rollout. Ask whether the support arrangement covers upgrade testing, which versions it covers and how production changes are approved. Ongoing support, upgrades and testing are available as a retainer.

How DeployOpen delivers this

DeployOpen scopes Prometheus customization in writing before any build starts, then implements custom exporters, instrumentation, rules, relabeling, alert routing and dashboards inside infrastructure you control. Work is delivered as a fixed-scope engagement, with ongoing support available as a retainer.

How we scope

  • The written scope lists the services, exporters, scrape targets and teams whose metrics and alerts are being customized.
  • Recording rules, relabeling and alert routing trees are named individually, with the expected owner of each rule set.
  • Scope states which dashboards are in and out, and which Alertmanager receivers must be reached from your network.

How we build

  • Custom exporters and application instrumentation are built against an agreed metric naming and label convention.
  • Recording rules and alerting rules are written in PromQL and tested against sample data before they reach production.
  • Relabeling and Alertmanager routing trees are reviewed for label cardinality and duplicate or missing notifications.

How we hand over

  • Deliverables include configuration files, rule files, exporter source code, dashboards and an operations runbook.
  • Handover covers how to add a new target, change a rule or route an alert, with each step verified by your own team.
  • Documentation records the Prometheus version in use and the upgrade checks needed for rules and dashboards.

How we support

  • Ongoing support can be added as a retainer covering upkeep of exporters, rules and routing after go-live.
  • Retainer scope, response expectations and upgrade handling are agreed in writing, and you should confirm them in the quote.
  • Rule and dashboard changes can be re-tested against the current Prometheus release line before they are rolled out.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.