Stack Review
What you collect today, what it costs, which labels and log fields drive volume, and which parts have no owner. The output is a written review, not a product pitch.
Open Source Observability
Last reviewed by Tyler Eastridge
AceMQ designs and supports open source observability stacks built on OpenTelemetry, Prometheus, Grafana, Loki, Tempo and OpenSearch, for teams that run their own messaging and data platforms. It covers logs, metrics and traces, and the choice of a stack without vendor lock-in on the collection layer. We help you pick the parts, set cardinality and retention limits, bring RabbitMQ, Kafka and PostgreSQL signals into the same view, and then support or operate the stack on the four-tier ladder.
Is This You?
Metrics, logs and traces live in three tools, and nobody can follow one request across them
The monitoring bill grows with every new label, and no one owns the limit
A single Prometheus server holds the only copy of the metrics, and its disk is the retention policy
Alerts fire in dozens for one failed node, and the on-call engineer has learned to ignore them
A Thanos, Mimir or Loki rollout was started, never finished, and two paths are now half-live
The broker and database metrics sit in a separate dashboard that no one checks before an incident
Nobody can say which licence each part of the stack is under, or who patches it
Outcomes
Concrete state changes, not deliverable counts. This is what actually differs about your Infrastructure estate when the engagement closes.
Before
The stack grew one tool at a time, and each team picked its own.
A written decision on collection, metrics storage, logs, traces and dashboards, with the reasons and the parts you chose not to run.
Before
Cardinality is discovered when the server runs out of memory.
A label policy, series limits and a retention plan sized from the sample rate, written down before the next service ships.
Before
Messaging and database health is checked by hand.
RabbitMQ, Kafka and PostgreSQL metrics collected in the same stack, with alerts routed to the team that owns each platform.
Before
When the monitoring stack fails, no one is on call for it.
An agreed tier of cover for the stack itself, from escalation to AceMQ operating it, so the thing that watches production is also watched.
Scope
What you collect today, what it costs, which labels and log fields drive volume, and which parts have no owner. The output is a written review, not a product pitch.
Collection, metrics storage, logs, traces and dashboards chosen against your sources, retention and team size, with a plain statement of what you operate in each layer.
RabbitMQ, Kafka and PostgreSQL metrics wired into the stack, with the alerts that predict incidents rather than describe them afterwards.
Grouping, inhibition and ownership routes so one failure sends one notification to one team, and rules that never led to action are removed.
Local retention, object storage, downsampling and index lifecycle sized from your ingest rate, with a restore or query test before you rely on it.
Support or managed operation for Prometheus, Grafana and OpenSearch, so someone answers when the monitoring is the thing that is down.
The Engagement
Every phase has a defined duration and a concrete artifact handed over at the end of it. You always know what stage you're in and what you've received.
We read the current collection, storage, alerting and dashboards, measure series and log volume by source, and list who owns each part and what each costs to run.
You receive
The stack decision: collection and sampling, metrics storage from single server to Thanos or Mimir, logs and traces, dashboards, licences, and the operating model for each part.
You receive
We stand the new parts up with your engineers and run them next to the old ones, comparing query results and alert behaviour before anything is switched off.
You receive
Runbooks for storage failures, WAL replay, index recovery and upgrades, a handover session, then the support tier you choose.
You receive
There is no single open source observability platform. A stack is a set of projects, each covering one signal, held together by shared labels and a collection layer. Open-source observability usually means logs, metrics and traces, with distributed tracing as the newest layer for many teams. Grafana Labs calls Loki, Grafana, Tempo and Mimir the LGTM stack, and Prometheus, Thanos, OpenSearch and Jaeger fit the same pattern. The useful decisions are which project covers each layer, what that choice makes you operate, and where it usually goes wrong.
| Layer | Common choice | Governance or licence | What you operate | Where it goes wrong |
|---|---|---|---|---|
| Collection | OpenTelemetry SDKs and Collector | CNCF graduated project. The Collector's overall status is mixed, and each component's README states its own stability. | Collector fleet, pipelines, sampling and batching. | An experimental component in a production pipeline, or sampling decided after the volume has grown. |
| Metrics | Prometheus and Alertmanager | Prometheus is CNCF graduated. Prometheus and Alertmanager are Apache 2.0. | Scrape configuration, rules, the local time series database and its disk, Alertmanager routing. | Unbounded labels, memory growth and long WAL replay after a restart. |
| Long-term metrics | Thanos, Mimir or Cortex | Thanos and Cortex are CNCF incubating and Apache 2.0. Mimir is Grafana Labs' AGPL v3 project. | Object storage, compactor, store gateway and queriers, or ingesters and distributors. | A rollout that stops half way, or a compactor that falls behind. |
| Logs | Loki or OpenSearch | Loki is AGPL v3. OpenSearch is Apache 2.0 under the OpenSearch Software Foundation. | Index or label design, shard count, retention, snapshots. | Too many small shards, or log labels with unbounded values. |
| Traces | Tempo or Jaeger | Tempo is AGPL v3. Jaeger is CNCF graduated, and Jaeger v2 is built on the OpenTelemetry Collector framework. | Trace storage, retention and the sampling policy. | Keeping every trace, or sampling so hard that the slow one is gone. |
| Dashboards and alerts | Grafana | AGPL v3 since the 2021 relicensing. Grafana is on 13.x. | Data sources, dashboards as code, alert rules and contact points. | Dashboard sprawl, and alert rules duplicated in two places. |
Versions as of 4 November 2026: Prometheus 3.15.1, Grafana 13.3, OpenSearch 3.9.0. Sources are listed at the end of this page and the licence rows are the projects' own statements.
Prometheus stores samples on local disk. Its documentation says plainly that local storage is not clustered or replicated, so it should be run like a single-node database. Retention defaults to 15 days unless you set a time or size flag, and when both are set, whichever triggers first applies.
Sizing is arithmetic, and it is worth doing before the incident. The documentation gives the formula: retention time in seconds, times ingested samples per second, times bytes per sample, and it puts the average at 1 to 2 bytes per sample. It also advises setting the size limit to 80 to 85 percent of the disk, to leave room for compaction.
OpenTelemetry does not replace Prometheus or Grafana. The Collector receives, processes and exports telemetry to open source or commercial backends, so it is the layer that lets you change a backend without re-instrumenting every service.
The details decide how smooth that is. Prometheus accepts OTLP metrics over HTTP, but the receiver is off by default and has to be switched on with a flag. Delta temporality is still experimental in Prometheus, behind a feature flag, and the project describes delta ingestion as at a very early stage. Resource attributes arrive as a target_info series unless you promote the ones you need to labels, and every promoted attribute is a new dimension of cardinality.
The Collector's own status is mixed, and the project asks you to read the stability level on each component. That is a reason to pin Collector versions, test pipelines in a staging environment and treat an upgrade as a change with a rollback, not a package update.
Open source does not remove the cost of cardinality. It moves it from an invoice to your memory, disk and on-call hours. Prometheus's own guidance is to keep the cardinality of a metric below 10, to look for alternatives above 100, and to start with no labels if unsure. Its worked example shows why: 10,000 nodes produce about 100,000 filesystem series, which is fine, while a per-user label across 10,000 users pushes the total into double-digit millions.
The same pattern shows up in logs, where a label or index field with unbounded values multiplies streams or shards, and in traces, where sampling is the lever. So the first design artefact is a label policy: which labels are allowed, who may add one, and where the limit is enforced.
Most observability pages stop at application traces. Most production incidents on a messaging or data platform are visible earlier in the platform's own metrics. This is the part AceMQ adds, because messaging and data platforms are what AceMQ supports.
The projects in the stack do not share a licence. Grafana, Loki and Tempo moved from Apache 2.0 to AGPL v3 in 2021, and Mimir is AGPL v3 too. Prometheus, Alertmanager, Thanos and Cortex are Apache 2.0, and so is OpenSearch. Elasticsearch's repository carries a triple licence, AGPL v3, the Server Side Public License and the Elastic License 2.0, after Elastic announced in August 2024 that it would add AGPL as an option.
What those licences mean for your deployment is a question for your counsel, and AceMQ gives no licensing advice. What we can do is the engineering side: list what you run, in which version, under which licence, so the conversation starts from facts. AceMQ is an independent provider: it is not a reseller and sells no Grafana Labs or Elastic subscription.
The stack that tells you production is down needs its own cover. The question is how much of it you want to hold.
Sources, all checked on 4 November 2026: prometheus.io release cycle, storage, instrumentation and OpenTelemetry guide pages; cncf.io project list; opentelemetry.io Collector documentation; jaegertracing.io; grafana.com Mimir documentation and the 2021 AGPL relicensing post; the projects' GitHub licences; opensearch.org releases; Elastic's August 2024 licensing post; rabbitmq.com Prometheus documentation; kafka.apache.org monitoring documentation.
Customer Success
See how enterprises trust AceMQ for their most critical Infrastructure workloads.
SaaS Platform Team
A typical engagement for Java services that restart with exit code 137 after a base image brings a newer JDK: the heap is not full, no OutOfMemoryError appears, and the memory that matters lives outside the heap.
Global Aviation Technology Provider
Troubleshooting cluster failover, partition handling, and quorum queue issues in a high-stakes aviation operational environment.
State-Run Virtual Education Platform
Standardizing RabbitMQ deployment and training staff while migrating infrastructure from VMware to Nutanix.
Global Telecom Leader
Resolving weekly RabbitMQ crashes, optimizing for 300,000+ connected devices, and architecting horizontal scaling strategy.
Cloud HR & Payroll Platform
Improving observability with Prometheus, Grafana, alerting, queue visibility, disk/memory thresholds, and retry metrics.
Telecommunications Operator
Remediation of a Grafana deployment that became unusable during incidents, with dashboards timing out exactly when engineers needed them most.
Energy Utility Operator
Ongoing support for Grafana unified alerting, notification routing, and datasource reliability across an operational monitoring estate.
Global Logistics Provider
Assessment of a sprawling Grafana dashboard estate to identify duplication, broken panels, and the small set of dashboards anyone actually uses.
FAQ
It is a set of open source projects that together collect, store and display metrics, logs and traces. A common set is OpenTelemetry for collection, Prometheus for metrics, Loki or OpenSearch for logs, Tempo or Jaeger for traces and Grafana for dashboards and alerts. You choose each layer, and you run each one unless you buy a managed service for it.
Compared with a platform such as Datadog or Splunk, it removes licence and ingest fees and adds engineering time, storage and on-call. Which is smaller depends on your volume, retention and team, so we do not quote a saving before reviewing your data. Cardinality is the main driver on both sides.
No. OpenTelemetry standardises how telemetry is collected and exported. Prometheus stores and queries metrics, and it can receive OTLP metrics over HTTP once the receiver is enabled. Many stacks use both: OpenTelemetry in the services, Prometheus or a long-term store behind them.
Set a label policy, drop or relabel the offenders at scrape time, and size retention from the sample rate: retention seconds, times samples per second, times 1 to 2 bytes per sample. Keep the size limit near 80 to 85 percent of the disk. Add Thanos or Mimir when local disk cannot hold the history you need.
You choose. At Tier 1 your team runs it and AceMQ responds to incidents within 15 minutes, 24/7. At Tier 2 AceMQ also monitors the platforms. At Tier 3 AceMQ operates it in your environment, and at Tier 4 on infrastructure AceMQ runs. Managed tiers are quoted per engagement.
Let's talk
Tell us what you collect today, what it costs and what has gone wrong. We will scope a stack review and reply to your quote request within 1 hour.
Send us a message and we'll follow up within 1 hour — or book a free 30-min consultation directly.
305-204-2607info@acemq.comPrefer to talk now? Call us directly or use the consultation tab to find a time that works.