<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Felix Barnsteiner - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Felix Barnsteiner - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/de/search-labs/author/felix-barnsteiner</link>
    </image>
    <link>https://www.elastic.co/de/search-labs/author/felix-barnsteiner</link>
    <atom:link href="https://www.elastic.co/de/search-labs/rss/author/felix-barnsteiner.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[de]]></language>
    <lastBuildDate>Mon, 28 Sep 2026 03:58:22 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Mehr Power für Elasticsearch: native Prometheus-API-Unterstützung hinzufügen]]></title>
    <description><![CDATA[Elasticsearch kann direkt von Prometheus-kompatiblen Clients über native PromQL-, Discovery- und Metadaten-Endpunkte abgefragt werden. Senden Sie Daten an Elasticsearch mit Prometheus Remote Write.]]></description>
    <content:encoded><![CDATA[<p>Richten Sie einen beliebigen Prometheus-kompatiblen Client auf Elasticsearch aus und führen Sie PromQL direkt gegen Ihre vorhandenen Metriken aus. Elasticsearch fügt als technische Vorschau native Prometheus-Abfrage-, Erkennungs- und Metadaten-Endpunkte hinzu, die mit Metriken arbeiten, die über Prometheus Remote Write, OpenTelemetry oder die Bulk-API aufgenommen werden. Die API läuft auf den Zeitreihendatenströmen (TSDS) von Elasticsearch, sodass keine separate Prometheus-spezifische Speicherschicht erforderlich ist.</p><p>Dieser Beitrag erklärt, wie die Abfrage-, Discovery- und Metadaten-Endpunkte auf der früheren Ingest- und Abfragearbeit aufbauen, um diese API-Oberfläche zu formen. In Begleitbeiträgen werden einzelne Aspekte näher beleuchtet:</p><ul><li><p><a href="https://www.elastic.co/observability-labs/blog/elasticsearch-supports-promql">Native PromQL-Unterstützung in ES|QL</a> beschreibt, wie PromQL-Abfragen in ES|QL-Ausführungspläne übersetzt werden.</p></li><li><p><a href="https://www.elastic.co/observability-labs/blog/prometheus-remote-write-elasticsearch">Prometheus-Metriken mit Remote Write an Elasticsearch versenden</a> behandelt die Einrichtung der Ingestion.</p></li><li><p><a href="https://www.elastic.co/observability-labs/blog/prometheus-remote-write-elasticsearch-architecture">So funktioniert die Prometheus Remote Write Ingestion in Elasticsearch</a> behandelt die internen Abläufe von Remote Write.</p></li></ul><p>Dieses Projekt läuft noch. In den folgenden Abschnitten wird aufgeführt, was derzeit unterstützt wird und welche Teile sich noch in der Entwicklung befinden.</p><h2>Die API-Oberfläche</h2><p>Heute fällt die Prometheus-kompatible API-Oberfläche in drei Gruppen.</p><h3>Abfrage-Endpoints</h3><p>Die Abfrage-Endpoints ermöglichen Prometheus-kompatiblen Clients die Auswertung von PromQL-Ausdrücken:</p><ul><li><p><code>GET /_prometheus/api/v1/query_range</code> wertet einen PromQL-Ausdruck über ein Zeitfenster aus (Matrix-Ergebnisse).</p></li><li><p><code>GET /_prometheus/api/v1/query</code> wertet zu einem einzelnen Zeitpunkt aus (Vektor-Ergebnisse). Derzeit als Kurzbereichsabfrage implementiert, die die letzte Stichprobe zurückgibt.</p></li></ul><p>Aktuell wird nur GET als Abfrage-Endpoint unterstützt. Einige Clients verwenden standardmäßig POST, so dass Sie sie möglicherweise auf GET umstellen müssen. Die Prometheus POST-Konvention verwendet <code>application/x-www-form-urlencoded</code>-Bodies, die von der HTTP-Schicht von Elasticsearch als CSRF-Schutzmaßnahme abgelehnt werden, bevor die Anfrage überhaupt den Handler erreicht.</p><p>Den vollständigen PromQL-Abdeckungsstatus finden Sie im <a href="https://www.elastic.co/observability-labs/blog/elasticsearch-supports-promql">Begleitbeitrag zu PromQL in ES|QL</a>.</p><h3>Metadaten-Endpoints</h3><p>Die Metadaten-Endpoints liefern die Discovery-Informationen, die Kunden für Autovervollständigung, Variablen-Dropdowns und das Durchsuchen von Metriken benötigen.</p><p>Die Endpunkte für Serien, Labels und Labelwerte akzeptieren alle <code>match[]</code>-Selektoren und einen Zeitbereich (<code>start</code>/<code>end</code>). Der Parameter <code>match[]</code> nimmt einen Prometheus-Serienselektor wie <code>http_requests_total{job="api"}</code> entgegen und beschränkt die Reaktion auf passende Zeitreihen. Dadurch bleiben die Reaktionen auf Clustern mit einer großen Anzahl von Metriken schnell und relevant. Zum Beispiel:</p>GET /_prometheus/api/v1/series?match[]=http_requests_total{job="api"}GET /_prometheus/api/v1/labels?match[]=http_requests_totalGET /_prometheus/api/v1/label/instance/values?match[]=http_requests_total{job="api"}<p>Die erste gibt alle Serien für <code>http_requests_total</code> zurück, wobei <code>job="api"</code> gilt, zusammen mit ihren vollständigen Label-Sets. Die zweite gibt nur die Label-Namen zurück, die in der <code>http_requests_total</code>-Serie existieren. Die dritte gibt nur die <code>instance</code> Werte zurück, die in übereinstimmenden Reihen vorkommen.</p><p><code>GET /_prometheus/api/v1/metadata</code> ist anders: Pro Metrik werden nur Typ und Einheit zurückgegeben, optional gefiltert nach Namen über einen <code>metric</code>-Parameter.</p>GET /_prometheus/api/v1/metadata?metric=http_requests_total<p><code>match[]</code>-Selektoren oder ein Zeitbereich werden nicht akzeptiert. In Prometheus werden Metadaten von aktiven Scrape-Zielen gesammelt (die Zeilen <code>HELP</code>, <code>TYPE</code> und <code>UNIT</code>, die sie anzeigen), sodass die Reaktion keinen Datenscan beinhaltet. Elasticsearch verfügt über keinen dedizierten Metadatenspeicher dieser Art, daher ermittelt die aktuelle Implementierung Metrik-Metadaten, indem sie Zeitreihendaten der letzten 24 Stunden durchsucht. Dadurch bleibt die Abfrage schnell, ohne dass ein vollständiger Indexscan erforderlich ist. Diese 24-Stunden-Rückschau ist derzeit fest vorgegeben: Die Prometheus-Metadaten-API stellt keine <code>start</code>- oder <code>end</code>-Parameter zur Verfügung, die Elasticsearch verwenden könnte, um sie für den Nutzer anpassbar zu machen.</p><p>Wie die Metadaten-Endpunkte im Hintergrund funktionieren, einschließlich der Befehle <code>TS_INFO</code> und <code>METRICS_INFO</code>, auf denen sie basieren, wird <a href="https://www.elastic.co/search-labs/blog//elasticsearch-native-prometheus-api#ts-info-and-metrics-info">im Folgenden</a> erläutert.</p><h3>Index-Vorfilterung</h3><p>Alle Abfrage- und Metadaten-Endpoints akzeptieren ein optionales <code>{index}</code>-Pfadsegment nach <code>/_prometheus/</code>:</p>GET /_prometheus/metrics-prod-*/api/v1/query_range?query=up&amp;start=...&amp;end=...<p>Dies schränkt ein, gegen welche Elasticsearch-Indizes die Abfrage ausgeführt wird, bevor mit der Auswertung des Ausdrucks begonnen wird. In Clustern mit vielen Datenströmen, die sich über Teams oder Umgebungen erstrecken, verhindert dies das Durchsuchen irrelevanter Indizes und kann die Latenz bei Abfragen erheblich verringern. Sie können pro Indexmuster separate Datenquellen konfigurieren, um Teams gezielten Zugriff auf ihre eigenen Metriken zu gewähren.</p><h3>Eine Anmerkung zum Remote Write</h3><p>Für die Ingestion stellt Elasticsearch auch den standardmäßigen Prometheus Remote Write-Endpoint bereit:</p><ul><li><p><code>POST /_prometheus/api/v1/write</code> nimmt Zeitreihen über das Prometheus Remote Write v1-Protokoll auf. v2 wird noch nicht unterstützt.</p></li></ul><p>Remote Write schreibt in die bestehenden Zeitreihendatenströme (TSDS) von Elasticsearch und nicht in eine separate, Prometheus-spezifische Speicherschicht. Prometheus-Labels werden zu TSDS-Dimensionen, und Metriknamen werden zu Feldern im Index-Mapping. Der <a href="https://www.elastic.co/observability-labs/blog/prometheus-remote-write-elasticsearch-architecture">Beitrag zur Architektur von Remote Write</a> behandelt das vollständige Mapping im Detail, einschließlich der Ableitung von Metriktypen und der Speicherung von Labels mit einem <code>labels.</code>-Präfix.</p><h3>So funktionierts</h3><p>Im Hintergrund funktionieren alle Endpoints auf die gleiche Weise: Sie parsen die eingehenden HTTP-Parameter, erstellen einen ES|QL-Abfrageplan, führen ihn für Zeitreihendatenströme aus und konvertieren das spaltenorientierte Ergebnis zurück in das von Prometheus-Clients erwartete JSON-Format.</p><h2>TS_INFO und METRICS_INFO</h2><p>Die Metadaten-Endppoints müssen Fragen beantworten wie „Welche Labels existieren?“ oder „Welche Metriktypen sind definiert?“, und das über potenziell Millionen von Zeitreihen hinweg, ohne jeden einzelnen Datenpunkt zu prüfen.</p><p>Intern beantworten die Prometheus-Metadaten-Endpoints diese Fragen, indem sie ES|QL-Pläne um zwei neue Verarbeitungsbefehle erstellen: <code>METRICS_INFO</code> und <code>TS_INFO</code>. Sie müssen diese Befehle nicht direkt verwenden, um die Prometheus-API zu nutzen, doch sie bilden die Kernausführungsprimitive hinter den Metadatenantworten. Beide funktionieren, indem sie nur ein Dokument pro Zeitreihe aufrufen, um dessen Metadaten zu extrahieren, anstatt alle Stichproben zu scannen. Das bedeutet, dass sich ihre Kosten proportional zur Anzahl der einzelnen Zeitreihen und nicht zur Anzahl der Datenpunkte verhalten.</p><p><code>METRICS_INFO</code> gibt eine Zeile pro eindeutiger Metrik mit ihrem Namen, Typ, Einheit und zugehörigen Dimensionsfeldern zurück. <code>TS_INFO</code> ist detaillierter: eine Zeile pro Kombination aus Metrik und Zeitreihe, einschließlich der tatsächlichen Dimensionswerte als JSON-Objekt.</p><p>Ein eigener Blogbeitrag zu <code>TS_INFO</code> und <code>METRICS_INFO</code> folgt in Kürze. Er behandelt das zweiphasige Ausführungsmodell, wie sie skaliert werden und wie sie direkt in ES|QL-Abfragen außerhalb der Prometheus-API verwendet werden können.</p><h3>So werden sie von den Metadaten-Endpoints verwendet</h3><p>Jeder Metadaten-Endpoint konstruiert einen ES|QL-Plan mit einem dieser Befehle im Kern.</p><p><code>/api/v1/labels</code> und <code>/api/v1/series</code> verwenden <code>TS_INFO</code>, da sie detaillierte Daten pro Zeitreihe benötigen (welche Labels existieren, welche Dimensionswerte jede Reihe identifizieren). <code>/api/v1/metadata</code> und <code>/api/v1/label/__name__/values</code> verwenden <code>METRICS_INFO</code>, da sie nur Informationen pro Metrik benötigen (Metriknamen, Typen, Einheiten).</p><p><code>/api/v1/label/{name}/values</code> Für reguläre Labels (alles außer <code>__name__</code>) wird keiner der beiden Befehle verwendet. Reguläre Labels wie <code>job</code> oder <code>instance</code> sind tatsächliche Dimensionsfelder im Index, sodass der Endpoint sie direkt mit einer Gruppenaggregation abfragen kann. Wenn <code>match[]</code> Selektoren bereitgestellt werden, werden sie in eine <code>WHERE</code>-Klausel übersetzt, die die Zeitreihen filtert, bevor die Aggregation ausgeführt wird.</p><p>Das <code>__name__</code>-Label erfordert eine andere Strategie, da es nicht immer als Dimensionsfeld vorhanden ist. Prometheus Remote Write speichert <code>labels.__name__</code>, aber Metriken, die über andere Pfade (OpenTelemetry, die Bulk-API) aufgenommen werden, enthalten es nicht. Der metrische Name ist im Feldnamen selbst kodiert (z. B. <code>metrics.http_requests_total</code>). Sie könnten sich die Index-Mappings ansehen, um die Feldnamen aufzulisten, aber Mappings allein geben keinen Aufschluss darüber, welche Metrik welche Dimensionen aufweist, und sie lassen sich nicht nach Labelwerten aus einem <code>match[]</code>-Selektor filtern. <code>METRICS_INFO</code> kann beides: Es zählt Metriknamen über Indizes auf, während es Upstream-Filter <code>WHERE</code> berücksichtigt.</p><p>In allen Fällen übernimmt die API-Ebene die Rückübersetzung in die Prometheus-Konventionen: indem sie die Speicherpräfixe <code>labels.</code> und <code>metrics.</code> entfernt und <code>__name__</code> für Nicht-Prometheus-Metriken ergänzt, denen ein solches Präfix fehlt.</p><h2>Fazit</h2><p>Das Ergebnis: Jeder Prometheus-kompatible Client kann Elasticsearch-Metriken über bereits verstehende Endpunkte abfragen und erkunden. Remote Write-Metriken, OpenTelemetry-Metriken und Metriken, die über andere Pfade indiziert werden, werden alle über dieselbe API angezeigt, die von denselben TSDS-Indizes unterstützt wird.</p><p>Alle hier erwähnten Prometheus-APIs sind heute als technische Vorschau in Elasticsearch Serverless verfügbar. Für selbstverwaltete Cluster und Elastic Cloud Hosted Deployments, verfügbar als technische Vorschau in Elasticsearch 9.4, mit Ausnahme von <code>GET /_prometheus/api/v1/metadata</code>. Um lokal zu experimentieren, verwenden Sie <a href="https://www.elastic.co/docs/deploy-manage/deploy/self-managed/local-development-installation-quickstart">start-local</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-native-prometheus-api</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-native-prometheus-api</guid>
    <category><![CDATA[Integrationen]]></category>
    <dc:creator><![CDATA[Felix Barnsteiner]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt12b4e100d5bbb7f0/6a16f7a22b835ff747f4afdd/c7b333bd73e8a1f4e18486b2d692ba742788dcfd-1376x768.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>