{% extends layout %}{% import 'ui/kit.html' as kit %} {% import 'ui/telemetry/_t.html' as t with context %} {% block title %}Metrics ยท amebo{% endblock %} {% block content %} {{ t.css() }} {%- set total_series = names|sum(attribute='series') %}

Metrics

Counters, gauges and histograms over OTLP, carrying the same resource attributes as traces and logs, so a metric is filterable by the same service, version and pod as everything else.

{{ t.rng('/metrics/browse', w.key, {'s': service, 'm': metric}) }}
Metrics{{ w.label }}
{{ names|length }}
reporting in this window
Series
{{ total_series }}
distinct attribute sets, the cardinality bill
Services
{{ seen|length }}
reporting telemetry
{%- if not metric %}

Pick a metric from the catalog below

amebo folds every data point into a per-minute bucket keyed by service, metric and attribute set, so the write rate is bounded by cardinality rather than by how often you export.

{%- else %}

{{ metric }} {{ service }} · {{ kind }}{% if unit %} · {{ unit }}{% endif %}

{%- set n = points|length %} {%- if n < 2 %}

{{ 'Pick a service for this metric from the catalog below.' if not service else 'Not enough data in this window.' }}

{%- else %} {%- set vals = points|map(attribute='value')|list %} {%- set lo = vals|min %}{% set hi = vals|max %}{% set span = (hi - lo) if hi > lo else 1.0 %} {%- set ns = namespace(pts=[]) %} {%- for p in points %}{% set ns.pts = ns.pts + [((loop.index0 * 1000) // (n - 1)) ~ ',' ~ (220 - (((p.value - lo) / span) * 200)|int)] %}{% endfor %} {%- set line = ns.pts|join(' ') %}
{{ h.fmt(hi) }}{{ h.fmt(lo) }}
{{ h.clock(points[0].ts) }}{{ h.clock(points[n // 2].ts) }}{{ h.clock(points[n - 1].ts) }}
{%- endif %}
{%- endif %}
{{ names|length }} metrics
{%- if not names %}

No metrics in this window

Point an OpenTelemetry metrics exporter at POST /v1/metrics with the same api key traces and logs use.

{%- else %} {%- for m in names %} {%- endfor %}
metricservicekindunittrendseries
{%- endif %}
{%- if srows|length > 1 %}

Series one row per attribute set on this metric

{%- for r in srows %} {%- endfor %}
attributespointslast
{{ r.skey or 'no attributes' }} {{ r.count }} {{ h.fmt(r.last, unit) }}
{%- endif %} {% endblock %}