{"id":10438,"date":"2026-08-15T14:39:43","date_gmt":"2026-08-15T12:39:43","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/prometheus-tsdb-capacity-planner\/"},"modified":"2026-08-15T14:48:58","modified_gmt":"2026-08-15T12:48:58","slug":"prometheus-tsdb-capacity-planner","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/","title":{"rendered":"Prometheus-Zeitreihenbudget"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Prometheus auf einer kleinen Maschine wird \u00fcber die Zahl der Zeitreihen ausgelegt, und die ist selten die, mit der jemand gerechnet hat: Metriken mal Ziele mal jeder Labelwert. Daraus werden hier Plattenplatz, Arbeitsspeicher und die Schreiblast, die der Datentr\u00e4ger \u00fcberstehen muss.<\/p>\n<div style=\"font-family: 'Nunito Sans', sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.92rem; margin-bottom: 8px;\">Woher die Zeitreihen kommen<\/div>\n<div id=\"pr-quellen\" style=\"display: grid; grid-template-columns: 1fr auto auto auto; gap: 6px 12px; align-items: baseline; margin-bottom: 18px;\"><\/div>\n<div style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; margin-bottom: 8px;\">\n<div>\n            <label for=\"pr-intervall\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Abtastintervall<\/label><br \/>\n            <select id=\"pr-intervall\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\"><option value=\"10\">10 s<\/option><option value=\"15\" selected>15 s<\/option><option value=\"30\">30 s<\/option><option value=\"60\">60 s<\/option><\/select>\n        <\/div>\n<div>\n            <label for=\"pr-tage\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Aufbewahrung (Tage)<\/label><br \/>\n            <input id=\"pr-tage\" type=\"number\" min=\"1\" step=\"1\" value=\"90\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"pr-bytes\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Bytes je Abtastwert<\/label><br \/>\n            <input id=\"pr-bytes\" type=\"number\" min=\"0.5\" max=\"4\" step=\"0.1\" value=\"1.7\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"pr-kopf\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">KB je Reihe im Kopfblock<\/label><br \/>\n            <input id=\"pr-kopf\" type=\"number\" min=\"1\" max=\"32\" step=\"0.5\" value=\"8\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"pr-traeger\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Datentr\u00e4ger<\/label><br \/>\n            <select id=\"pr-traeger\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\"><option value=\"sd\" selected>SD-Karte<\/option><option value=\"ssd\">SSD oder USB-Platte<\/option><\/select>\n        <\/div>\n<div>\n            <label for=\"pr-ram\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Arbeitsspeicher der Maschine<\/label><br \/>\n            <select id=\"pr-ram\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\"><option value=\"2\">2 GB<\/option><option value=\"4\">4 GB<\/option><option value=\"8\" selected>8 GB<\/option><option value=\"16\">16 GB<\/option><\/select>\n        <\/div>\n<\/p><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Komprimierte Abtastwerte liegen im Mittel bei etwa 1,7 Byte; der Kopfblock braucht grob 8 KB je aktiver Reihe. Beides sind Faustwerte &#8211; der erste ist stabil, der zweite schwankt mit Labell\u00e4nge und Abfragelast.<\/p>\n<p>    <button id=\"pr-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: #0b1114; border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Budget berechnen<\/button><\/p>\n<div id=\"pr-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Prometheus auf einer kleinen Maschine wird \u00fcber die Zahl der Zeitreihen ausgelegt, und die ist selten die, mit der jemand gerechnet hat: Metriken mal Ziele mal jeder Labelwert. Daraus werden hier Plattenplatz, Arbeitsspeicher und die Schreiblast, die der Datentr\u00e4ger \u00fcberstehen muss.\",\"h_quellen\":\"Woher die Zeitreihen kommen\",\"spalte_jeziel\":\"Reihen je Ziel\",\"spalte_ziele\":\"Ziele\",\"spalte_summe\":\"Reihen\",\"quelle_node\":\"node_exporter\",\"quelle_cadvisor\":\"cAdvisor je Container\",\"quelle_blackbox\":\"Blackbox-Pr\u00fcfungen\",\"quelle_eigen\":\"eigene Anwendung\",\"label_intervall\":\"Abtastintervall\",\"label_tage\":\"Aufbewahrung (Tage)\",\"label_bytes\":\"Bytes je Abtastwert\",\"label_kopf\":\"KB je Reihe im Kopfblock\",\"label_traeger\":\"Datentr\u00e4ger\",\"traeger_sd\":\"SD-Karte\",\"traeger_ssd\":\"SSD oder USB-Platte\",\"label_ram\":\"Arbeitsspeicher der Maschine\",\"faustwerte\":\"Komprimierte Abtastwerte liegen im Mittel bei etwa 1,7 Byte; der Kopfblock braucht grob 8 KB je aktiver Reihe. Beides sind Faustwerte - der erste ist stabil, der zweite schwankt mit Labell\u00e4nge und Abfragelast.\",\"knopf\":\"Budget berechnen\",\"h_ergebnis\":\"Ergebnis\",\"zeile_reihen\":\"Aktive Zeitreihen\",\"zeile_rate\":\"Abtastwerte je Sekunde\",\"zeile_platte\":\"Platte bei voller Aufbewahrung\",\"zeile_kopf\":\"Kopfblock im Arbeitsspeicher\",\"zeile_ramanteil\":\"Anteil am Arbeitsspeicher\",\"zeile_schreib_tag\":\"Geschrieben je Tag\",\"zeile_schreib_jahr\":\"Geschrieben je Jahr\",\"zeile_lebensdauer\":\"Haltbarkeit des Tr\u00e4gers bei dieser Last\",\"jahre\":\"Jahre\",\"h_hinweise\":\"Was diese Auslegung bedeutet\",\"hinweis_keine_reihen\":\"Ohne Zeitreihen gibt es nichts zu speichern.\",\"hinweis_ram_knapp\":\"Allein der Kopfblock beansprucht mehr als die H\u00e4lfte des Arbeitsspeichers. Prometheus braucht daneben Platz f\u00fcr Abfragen, und Grafana will seinen eigenen Anteil.\",\"hinweis_ram_reicht_nicht\":\"Der Kopfblock passt nicht in den Arbeitsspeicher der Maschine. Prometheus wird vom Kern abger\u00e4umt, meist w\u00e4hrend der ersten gr\u00f6\u00dferen Abfrage.\",\"hinweis_platte_gross\":\"Mehr als 32 GB bei voller Aufbewahrung. Auf einem Pi geh\u00f6rt das auf eine eigene Platte und nicht auf das Startmedium.\",\"hinweis_sd_karte\":\"Die Menge ist \u00fcberschaubar, aber Prometheus schreibt ununterbrochen in kleinen Bl\u00f6cken, und genau das verschlei\u00dft eine Karte - die dann die ganze Geschichte mitnimmt. Eine SSD, eine k\u00fcrzere Aufbewahrung oder ein Fernschreiben auf eine zweite Maschine vermeiden das.\",\"hinweis_verschleiss\":\"Bei dieser Last ist die angenommene Schreibfestigkeit in unter drei Jahren aufgebraucht.\",\"hinweis_rate_hoch\":\"Oberhalb von zehntausend Abtastwerten je Sekunde ist ein Pi am Anschlag. Abhilfe schaffen weniger Zeitreihen, nicht ein l\u00e4ngeres Intervall.\",\"hinweis_intervall_kurz\":\"Ein Zehn-Sekunden-Intervall verdoppelt alles gegen\u00fcber zwanzig Sekunden und lohnt sich nur f\u00fcr Messgr\u00f6\u00dfen, die sich tats\u00e4chlich so schnell \u00e4ndern.\",\"dezimal\":\",\"};<\/p>\n<p>    \/\/ Uebliche Groessenordnungen je Ziel, als Vorbelegung.\n    const QUELLEN = [\n        { id: 'node',     jeZiel: 900, ziele: 3 },\n        { id: 'cadvisor', jeZiel: 60,  ziele: 12 },\n        { id: 'blackbox', jeZiel: 12,  ziele: 8 },\n        { id: 'eigen',    jeZiel: 40,  ziele: 1 }\n    ];<\/p>\n<p>    const GB = 1024 * 1024 * 1024;\n    const MB = 1024 * 1024;\n    \/\/ Prometheus schreibt jeden Abtastwert zweimal: in das Schreibprotokoll\n    \/\/ und spaeter in den fertigen Block.\n    const SCHREIBFAKTOR = 2;\n    \/\/ Angenommene Schreibfestigkeit einer ordentlichen Karte bzw. SSD.\n    const FESTIGKEIT_TB = { sd: 30, ssd: 300 };<\/p>\n<p>    function zahl(wert, ersatz) {\n        const n = Number(wert);\n        return isFinite(n) ? n : ersatz;\n    }<\/p>\n<p>    function zeitreihen(zeilen) {\n        return (zeilen || []).reduce(function (summe, z) {\n            const je = Math.max(0, zahl(z.jeZiel, 0));\n            const n  = Math.max(0, zahl(z.ziele, 0));\n            return summe + je * n;\n        }, 0);\n    }<\/p>\n<p>    function rechnen(e) {\n        const ein = e || {};\n        const reihen    = Math.max(0, zahl(ein.reihen, 0));\n        const intervall = Math.max(1, zahl(ein.intervall, 15));\n        const tage      = Math.max(1, zahl(ein.tage, 1));\n        const bytes     = Math.max(0.1, zahl(ein.bytes, 1.7));\n        const kopfKB    = Math.max(0.1, zahl(ein.kopfKB, 8));\n        const ramGB     = Math.max(0.5, zahl(ein.ramGB, 8));\n        const traeger   = ein.traeger === 'ssd' ? 'ssd' : 'sd';<\/p>\n<p>        const abtastRate  = reihen \/ intervall;                       \/\/ Abtastwerte je Sekunde\n        const abtastwerte = abtastRate * 86400 * tage;                \/\/ ueber die Aufbewahrung\n        const platteByte  = abtastwerte * bytes;\n        const kopfByte    = reihen * kopfKB * 1024;<\/p>\n<p>        const schreibTagByte  = abtastRate * bytes * SCHREIBFAKTOR * 86400;\n        const schreibJahrByte = schreibTagByte * 365;\n        const festigkeitByte  = FESTIGKEIT_TB[traeger] * 1024 * GB;\n        const lebensdauerJahre = schreibJahrByte > 0 ? festigkeitByte \/ schreibJahrByte : Infinity;<\/p>\n<p>        const ramAnteil = kopfByte \/ (ramGB * GB);<\/p>\n<p>        const hinweise = [];\n        if (reihen <= 0)          { hinweise.push('keine_reihen'); }\n        if (ramAnteil > 0.5)      { hinweise.push('ram_knapp'); }\n        if (ramAnteil > 1)        { hinweise.push('ram_reicht_nicht'); }\n        if (platteByte > 32 * GB) { hinweise.push('platte_gross'); }\n        if (traeger === 'sd')     { hinweise.push('sd_karte'); }\n        if (isFinite(lebensdauerJahre) && lebensdauerJahre < 3) { hinweise.push('verschleiss'); }\n        if (abtastRate > 10000)   { hinweise.push('rate_hoch'); }\n        if (intervall <= 10 &#038;&#038; reihen > 2000) { hinweise.push('intervall_kurz'); }<\/p>\n<p>        return {\n            reihen: reihen,\n            abtastRate: abtastRate,\n            abtastwerte: abtastwerte,\n            platteGB: platteByte \/ GB,\n            kopfGB: kopfByte \/ GB,\n            ramAnteil: ramAnteil,\n            schreibTagMB: schreibTagByte \/ MB,\n            schreibJahrGB: schreibJahrByte \/ GB,\n            lebensdauerJahre: lebensdauerJahre,\n            traeger: traeger,\n            hinweise: hinweise\n        };\n    }<\/p>\n<p>    \/\/ --- Pruefpunkt ----------------------------------------------------------\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.PR = { rechnen: rechnen, zeitreihen: zeitreihen, quellen: QUELLEN };<\/p>\n<p>    \/\/ --- Oberflaeche ---------------------------------------------------------<\/p>\n<p>    const quellenBox = document.getElementById('pr-quellen');\n    const btn = document.getElementById('pr-btn');\n    const out = document.getElementById('pr-ausgabe');\n    if (!quellenBox || !btn || !out) { return; }<\/p>\n<p>    function el(tag, stil, text) {\n        const e = document.createElement(tag);\n        if (stil) { e.setAttribute('style', stil); }\n        if (text !== undefined) { e.textContent = text; }\n        return e;\n    }\n    function wert(id) { const e = document.getElementById(id); return e ? e.value : ''; }\n    function komma(n, stellen) {\n        const s = stellen === undefined ? 1 : stellen;\n        if (!isFinite(n)) { return '\u221e'; }\n        return Number(n).toFixed(s).replace('.', T.dezimal);\n    }<\/p>\n<p>    const FELD = 'width: 90px; padding: 7px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 5px; box-sizing: border-box;';<\/p>\n<p>    quellenBox.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.78rem;', ''));\n    quellenBox.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.78rem;', T.spalte_jeziel));\n    quellenBox.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.78rem;', T.spalte_ziele));\n    quellenBox.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.78rem;', T.spalte_summe));<\/p>\n<p>    QUELLEN.forEach(function (q) {\n        quellenBox.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;', T['quelle_' + q.id]));\n        const a = document.createElement('input');\n        a.type = 'number'; a.min = '0'; a.step = '1'; a.value = String(q.jeZiel);\n        a.id = 'pr-je-' + q.id; a.style.cssText = FELD;\n        quellenBox.appendChild(a);\n        const b = document.createElement('input');\n        b.type = 'number'; b.min = '0'; b.step = '1'; b.value = String(q.ziele);\n        b.id = 'pr-n-' + q.id; b.style.cssText = FELD;\n        quellenBox.appendChild(b);\n        quellenBox.appendChild(el('div', 'color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace;', '', ''));\n    });<\/p>\n<p>    function zeilenLesen() {\n        return QUELLEN.map(function (q) {\n            return { id: q.id, jeZiel: wert('pr-je-' + q.id), ziele: wert('pr-n-' + q.id) };\n        });\n    }<\/p>\n<p>    const UEBERSCHRIFT = 'font-family: \\'Nunito Sans\\', sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.92rem; margin: 18px 0 8px;';\n    const ZELLE = 'padding: 5px 14px 5px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;';\n    const ZELLE_WERT = 'padding: 5px 14px 5px 0; color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace;';<\/p>\n<p>    btn.addEventListener('click', function () {\n        const zeilen = zeilenLesen();\n        const reihen = zeitreihen(zeilen);<\/p>\n<p>        \/\/ Summenspalte je Zeile nachtragen\n        QUELLEN.forEach(function (q, i) {\n            const felder = quellenBox.children;\n            const summenFeld = felder[4 + i * 4 + 3];\n            if (summenFeld) {\n                const je = Number(wert('pr-je-' + q.id)) || 0;\n                const n  = Number(wert('pr-n-' + q.id)) || 0;\n                summenFeld.textContent = String(je * n);\n            }\n        });<\/p>\n<p>        const erg = rechnen({\n            reihen: reihen,\n            intervall: wert('pr-intervall'),\n            tage: wert('pr-tage'),\n            bytes: wert('pr-bytes'),\n            kopfKB: wert('pr-kopf'),\n            ramGB: wert('pr-ram'),\n            traeger: wert('pr-traeger')\n        });<\/p>\n<p>        out.innerHTML = '';\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_ergebnis));\n        const g = el('div', 'display: grid; grid-template-columns: auto auto; gap: 0 18px; align-items: baseline;');\n        function zeile(name, w) {\n            g.appendChild(el('div', ZELLE, name));\n            g.appendChild(el('div', ZELLE_WERT, w));\n        }\n        zeile(T.zeile_reihen, komma(erg.reihen, 0));\n        zeile(T.zeile_rate, komma(erg.abtastRate, 1));\n        zeile(T.zeile_platte, komma(erg.platteGB, 2) + ' GB');\n        zeile(T.zeile_kopf, komma(erg.kopfGB, 2) + ' GB');\n        zeile(T.zeile_ramanteil, komma(erg.ramAnteil * 100, 0) + ' %');\n        zeile(T.zeile_schreib_tag, komma(erg.schreibTagMB, 0) + ' MB');\n        zeile(T.zeile_schreib_jahr, komma(erg.schreibJahrGB, 1) + ' GB');\n        zeile(T.zeile_lebensdauer, komma(erg.lebensdauerJahre, 1) + ' ' + T.jahre);\n        out.appendChild(g);<\/p>\n<p>        if (erg.hinweise.length) {\n            out.appendChild(el('div', UEBERSCHRIFT, T.h_hinweise));\n            const liste = el('ul', 'margin: 0 0 0 18px; padding: 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem; line-height: 1.65;');\n            erg.hinweise.forEach(function (h) { liste.appendChild(el('li', '', T['hinweis_' + h])); });\n            out.appendChild(liste);\n        }\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Macht aus Exportern und Abtastintervall Plattenplatz, Arbeitsspeicher und Schreiblast &#8211; samt dem, was ein Jahr Abtastung mit der Karte anstellt, von der ein Raspberry Pi startet.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92058,92208],"class_list":["post-10438","page","type-page","status-publish","hentry","tag-monitoring-de","tag-raspberry-pi-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Prometheus-Zeitreihenbudget - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prometheus-Zeitreihenbudget - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Macht aus Exportern und Abtastintervall Plattenplatz, Arbeitsspeicher und Schreiblast - samt dem, was ein Jahr Abtastung mit der Karte anstellt, von der ein Raspberry Pi startet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-15T12:48:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/prometheus-tsdb-capacity-planner\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/prometheus-tsdb-capacity-planner\\\/\",\"name\":\"Prometheus-Zeitreihenbudget - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-15T12:39:43+00:00\",\"dateModified\":\"2026-08-15T12:48:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/prometheus-tsdb-capacity-planner\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/prometheus-tsdb-capacity-planner\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/prometheus-tsdb-capacity-planner\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Prometheus-Zeitreihenbudget\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Prometheus-Zeitreihenbudget - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/","og_locale":"en_US","og_type":"article","og_title":"Prometheus-Zeitreihenbudget - Lukas Wojcik - Blog","og_description":"Macht aus Exportern und Abtastintervall Plattenplatz, Arbeitsspeicher und Schreiblast - samt dem, was ein Jahr Abtastung mit der Karte anstellt, von der ein Raspberry Pi startet.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/","og_site_name":"Lukas Wojcik - Blog","article_modified_time":"2026-08-15T12:48:58+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/","name":"Prometheus-Zeitreihenbudget - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-15T12:39:43+00:00","dateModified":"2026-08-15T12:48:58+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/prometheus-tsdb-capacity-planner\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-2\/"},{"@type":"ListItem","position":3,"name":"Prometheus-Zeitreihenbudget"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10438"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10438\/revisions"}],"predecessor-version":[{"id":10456,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10438\/revisions\/10456"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10438"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}