{"id":10486,"date":"2026-09-21T18:10:00","date_gmt":"2026-09-21T16:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10486"},"modified":"2026-10-26T13:45:35","modified_gmt":"2026-10-26T12:45:35","slug":"dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/","title":{"rendered":"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych"},"content":{"rendered":"<p>Sama liczba eksporter\u00f3w nie wystarcza do dobrania zasob\u00f3w Raspberry Pi z Prometheusem. Znaczenie maj\u0105 mi\u0119dzy innymi liczba szereg\u00f3w czasowych, cz\u0119stotliwo\u015b\u0107 odpytywania, zapytania i okres przechowywania. Ka\u017cdy szereg identyfikuje nazwa metryki oraz pe\u0142na kombinacja warto\u015bci etykiet.<\/p>\n<p>Liczba odr\u0119bnych kombinacji to kardynalno\u015b\u0107. Iloczyn liczebno\u015bci zbior\u00f3w warto\u015bci etykiet jest g\u00f3rn\u0105 granic\u0105, a nie automatycznie osi\u0105gan\u0105 liczb\u0105: cz\u0119\u015b\u0107 kombinacji mo\u017ce nigdy nie wyst\u0105pi\u0107. Dodanie etykiety z jedn\u0105 sta\u0142\u0105 warto\u015bci\u0105 nie zwielokrotnia liczby szereg\u00f3w. Etykieta z wieloma zmiennymi warto\u015bciami mo\u017ce jednak powodowa\u0107 znaczne koszty.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" alt=\"Przyk\u0142adowa g\u00f3rna granica: 3 \u00d7 5 \u00d7 8 \u00d7 40 \u00d7 2400 = 11 520 000 kombinacji. Szeregi tworz\u0105 tylko faktycznie udost\u0119pnione kombinacje.\" height=\"580\" loading=\"lazy\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-10486-20261024.png\" width=\"1120\"\/>\n<figcaption>Przyk\u0142adowa g\u00f3rna granica: 3 \u00d7 5 \u00d7 8 \u00d7 40 \u00d7 2400 = 11 520 000 kombinacji. Szeregi tworz\u0105 tylko faktycznie udost\u0119pnione kombinacje.<\/figcaption>\n<\/figure>\n<h2>Liczba warto\u015bci i tempo zmian to osobne kwestie<\/h2>\n<p>Etykieta potrzebuje kontrolowanego zbioru warto\u015bci i konkretnego celu. Dla <code>method<\/code> i <code>status<\/code> rzeczywiste liczby zale\u017c\u0105 od aplikacji i instrumentacji. HTTP nie okre\u015bla dok\u0142adnie pi\u0119ciu metod ani dok\u0142adnie dwunastu status\u00f3w. Nieznane metody mog\u0105 na przyk\u0142ad otrzymywa\u0107 wsp\u00f3ln\u0105 warto\u015b\u0107 zast\u0119pcz\u0105.<\/p>\n<p>Surowe \u015bcie\u017cki, takie jak <code>\/wp-admin<\/code>, <code>\/.env<\/code> lub <code>\/product\/12345<\/code>, mog\u0105 tworzy\u0107 kolejne szeregi, je\u015bli instrumentacja kopiuje ka\u017cd\u0105 \u015bcie\u017ck\u0119 do etykiety. Nast\u0119pne \u017c\u0105danie z identyczn\u0105 pe\u0142n\u0105 kombinacj\u0105 etykiet nie tworzy nowego szeregu. Zapisane dane podlegaj\u0105 te\u017c retencji zamiast pozostawa\u0107 na zawsze.<\/p>\n<table style=\"width:100%;border-collapse:collapse\"><thead><tr><th>Etykieta<\/th><th>Typowe \u017ar\u00f3d\u0142o warto\u015bci<\/th><th>Kontrola kardynalno\u015bci<\/th><\/tr><\/thead><tbody><tr><td>job \/ instance<\/td><td>Cele i konfiguracja<\/td><td>Inwentarz i liczba cel\u00f3w<\/td><\/tr><tr><td>method \/ status<\/td><td>Aplikacja i protok\u00f3\u0142<\/td><td>Dozwolone warto\u015bci i warto\u015b\u0107 zast\u0119pcza<\/td><\/tr><tr><td>handler \/ route<\/td><td>Szablony tras<\/td><td>Sta\u0142y zbi\u00f3r tras; warto\u015b\u0107 zast\u0119pcza<\/td><\/tr><tr><td>path (surowa)<\/td><td>\u015acie\u017cki \u017c\u0105da\u0144<\/td><td>Normalizacja u \u017ar\u00f3d\u0142a<\/td><\/tr><tr><td>user_id \/ email<\/td><td>Identyfikatory poszczeg\u00f3lnych os\u00f3b<\/td><td>Pomini\u0119cie w metrykach zagregowanych<\/td><\/tr><tr><td>container_id \/ pod<\/td><td>Dzia\u0142aj\u0105ce instancje<\/td><td>Obserwacja stanu i tempa zmian<\/td><\/tr><\/tbody><\/table>\n<p>Churn oznacza powstawanie i zanikanie szereg\u00f3w, na przyk\u0142ad wskutek zmiany identyfikator\u00f3w pod\u00f3w. Gdy znika dziesi\u0119\u0107 starych szereg\u00f3w i powstaje dziesi\u0119\u0107 nowych, \u0142\u0105czna liczba pozostaje taka sama mimo dwudziestu zmian. Sta\u0142a liczba szereg\u00f3w obecnych jednocze\u015bnie mo\u017ce ukrywa\u0107 du\u017c\u0105 rotacj\u0119. Stare szeregi pozostaj\u0105 istotne w odpowiednich blokach przez okres przechowywania; przy sta\u0142ym tempie zmian i ograniczonej retencji \u0142\u0105czna ilo\u015b\u0107 danych nie musi jednak rosn\u0105\u0107 z tygodnia na tydzie\u0144.<\/p>\n<h2>Ocena zasob\u00f3w bez sztywnego przelicznika na szereg<\/h2>\n<p>Wiele szereg\u00f3w obci\u0105\u017ca RAM, CPU, no\u015bnik i sie\u0107. Do zu\u017cycia przyczyniaj\u0105 si\u0119 bie\u017c\u0105ce dane szereg\u00f3w i indeksy, przetwarzanie dziennika zapisu wyprzedzaj\u0105cego (WAL) oraz du\u017ce zapytania. Sta\u0142a liczba kilobajt\u00f3w na szereg nie gwarantuje wystarczaj\u0105cych zasob\u00f3w: r\u00f3\u017cni\u0105 si\u0119 d\u0142ugo\u015bci etykiet, pr\u00f3bki, wersje i obci\u0105\u017cenie zapytaniami. Na Pi pierwszym ograniczeniem mo\u017ce by\u0107 RAM, CPU albo miejsce na dane.<\/p>\n<p>Zbyt du\u017ce zu\u017cycie RAM mo\u017ce spowodowa\u0107 zako\u0144czenie procesu z powodu braku pami\u0119ci (Out of Memory, OOM) i p\u0119tl\u0119 restart\u00f3w. To mo\u017cliwy przebieg awarii, a nie diagnoza wynikaj\u0105ca wy\u0142\u0105cznie z niedzia\u0142aj\u0105cego panelu. Zu\u017cycie pami\u0119ci procesu, zapas na ho\u015bcie, restarty, dzienniki i zmiany liczby szereg\u00f3w wymagaj\u0105 wsp\u00f3lnej oceny.<\/p>\n<h2>Celowane zapytania o nietypow\u0105 liczb\u0119 szereg\u00f3w<\/h2>\n<p>Poni\u017csze przyk\u0142ady PromQL pocz\u0105tkowo ograniczaj\u0105 analiz\u0119 do przyk\u0142adowego zadania <code>app<\/code>. Nieograniczony przegl\u0105d wszystkich metryk mo\u017ce dodatkowo obci\u0105\u017cy\u0107 ju\u017c przeci\u0105\u017cone Pi. Drugie zapytanie liczy wy\u0142\u0105cznie obecne, niepuste warto\u015bci <code>path<\/code>; bez pasuj\u0105cych szereg\u00f3w wyra\u017cenie zwraca brak wyniku, a nie automatycznie wpisane zero.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"plain\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Text<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-plain\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">topk(10, count by (__name__)({job=\"app\", __name__=~\".+\"}))\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">count(count by (path) (http_requests_total{job=\"app\", path!=\"\"}))\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">prometheus_tsdb_head_series\n<\/span><span class=\"cbb-line\">delta(prometheus_tsdb_head_series&#91;1h&#93;)<\/span><\/code><\/pre><\/figure><p>Metryki head wymagaj\u0105 odpytywania w\u0142asnych metryk przez Prometheusa; pusty wynik mo\u017ce te\u017c oznacza\u0107 brak zbierania tych danych.<\/p>\n<p>Pierwsze zapytanie wskazuje nazwy metryk z du\u017c\u0105 liczb\u0105 szereg\u00f3w w bie\u017c\u0105cym stanie zapytania. Drugie sprawdza wcze\u015bniej wybran\u0105 etykiet\u0119, wi\u0119c nie odkrywa automatycznie problematycznej etykiety. Metryka typu gauge zapisuje bie\u017c\u0105c\u0105 warto\u015b\u0107, kt\u00f3ra mo\u017ce rosn\u0105\u0107 lub male\u0107. Metryka head tego typu obejmuje szeregi w bie\u017c\u0105cym obszarze TSDB head, przechowuj\u0105cym najnowsze pomiary, i mo\u017ce r\u00f3\u017cni\u0107 si\u0119 od szereg\u00f3w nadal dost\u0119pnych w zapytaniu chwilowym. <code>delta<\/code> opisuje zmian\u0119 netto warto\u015bci typu gauge ekstrapolowan\u0105 na godzin\u0119, a nie liczb\u0119 nowo utworzonych szereg\u00f3w.<\/p>\n<p>Rosn\u0105cy stan mo\u017ce wynika\u0107 z uzasadnionej rozbudowy; du\u017ca rotacja mo\u017ce wyst\u0119powa\u0107 przy sta\u0142ym stanie. Uzupe\u0142niaj\u0105co <code>\/api\/v1\/status\/tsdb?limit=10<\/code> udost\u0119pnia rankingi wed\u0142ug nazw metryk i warto\u015bci etykiet oraz statystyki head. Taka diagnostyka tak\u017ce ma koszt. Pomocne jest por\u00f3wnanie ze znanym stanem normalnym oraz zmianami eksporter\u00f3w i wdro\u017ce\u0144.<\/p>\n<h2>Usuni\u0119cie etykiety nie agreguje warto\u015bci<\/h2>\n<p><code>labeldrop<\/code> usuwa nazwy etykiet, ale nie dodaje warto\u015bci. Przyk\u0142adowo liczniki <code>requests_total{path=\"\/a\"} 10<\/code> i <code>requests_total{path=\"\/b\"} 20<\/code> po usuni\u0119ciu <code>path<\/code> otrzymuj\u0105 identyczne oznaczenie. Nie powstaje w ten spos\u00f3b niezawodnie poprawny \u0142\u0105czny licznik 30. Kolizje mog\u0105 prowadzi\u0107 do odrzucenia pr\u00f3bek. Usuwanie etykiet jest odpowiednie tylko wtedy, gdy pozosta\u0142e szeregi nadal s\u0105 jednoznacznie identyfikowane.<\/p>\n<p>Wyra\u017anie ograniczonym dzia\u0142aniem dora\u017anym jest ca\u0142kowite pomini\u0119cie przy zapisie kosztownej metryki, je\u015bli zb\u0119dno\u015b\u0107 zosta\u0142a potwierdzona. Poni\u017cszy przyk\u0142ad odrzuca wszystkie szeregi <code>http_requests_total<\/code> wy\u0142\u0105cznie w zadaniu <code>app<\/code>. Tych pr\u00f3bek zabraknie r\u00f3wnie\u017c na panelach i w alertach; nazwa metryki jest przyk\u0142adem wymagaj\u0105cym dostosowania.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"yaml\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">YAML<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-yaml\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-attr\">scrape_configs<\/span>:\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-operator\">-<\/span> <span class=\"cbb-attr\">job_name<\/span>: <span class=\"cbb-string\">'app'<\/span>\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-attr\">static_configs<\/span>:\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-operator\">-<\/span> <span class=\"cbb-attr\">targets<\/span>: &#91;<span class=\"cbb-string\">'app:9100'<\/span>&#93;\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-attr\">metric_relabel_configs<\/span>:\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-operator\">-<\/span> <span class=\"cbb-attr\">source_labels<\/span>: &#91;__name__&#93;\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-attr\">regex<\/span>: <span class=\"cbb-string\">'http_requests_total'<\/span>\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-attr\">action<\/span>: drop<\/span><\/code><\/pre><\/figure>\n<p>Trwa\u0142e rozwi\u0105zanie cz\u0119sto znajduje si\u0119 u \u017ar\u00f3d\u0142a: eksporter zlicza bezpo\u015brednio wed\u0142ug znormalizowanego szablonu trasy, na przyk\u0142ad <code>\/product\/:id<\/code>, ze sta\u0142\u0105 warto\u015bci\u0105 zast\u0119pcz\u0105 dla nieznanych tras. Samo przemianowanie etykiet istniej\u0105cych osobnych licznik\u00f3w spowodowa\u0142oby kolejn\u0105 kolizj\u0119. Suma PromQL lub regu\u0142a zapisuj\u0105ca mo\u017ce upro\u015bci\u0107 analiz\u0119, ale nie zapobiega wcze\u015bniejszemu zapisowi surowych szereg\u00f3w. Przed wdro\u017ceniem <code>promtool check config prometheus.yml<\/code> sprawdza konfiguracj\u0119; poprawny YAML nie potwierdza jeszcze zasadno\u015bci filtra.<\/p>\n<h2>Bud\u017cet dla nowych etykiet<\/h2>\n<p>Dla ka\u017cdej etykiety potrzebne s\u0105 udokumentowane oczekiwania dotycz\u0105ce liczby warto\u015bci, tempa zmian, mo\u017cliwych kombinacji i przydatno\u015bci. Plik konfiguracyjny nie gwarantuje ma\u0142ej kardynalno\u015bci; nawet sko\u0144czony zbi\u00f3r mo\u017ce by\u0107 za du\u017cy. Z kolei wysoka kardynalno\u015b\u0107 nie oznacza automatycznie danych osobowych: losowe identyfikatory kontener\u00f3w to inny problem ni\u017c adresy e-mail.<\/p>\n<p>Bezpo\u015brednie identyfikatory os\u00f3b s\u0105 zwykle zb\u0119dne w zagregowanych metrykach operacyjnych i zwi\u0119kszaj\u0105 zar\u00f3wno kardynalno\u015b\u0107, jak i ilo\u015b\u0107 wra\u017cliwych informacji. Pomini\u0119cie takich etykiet ogranicza te ryzyka, lecz nie zast\u0119puje kontroli pozosta\u0142ych danych pomiarowych pod k\u0105tem mo\u017cliwego zwi\u0105zku z osobami.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy kr\u00f3tsza retencja pomaga przy braku pami\u0119ci?<\/h3><p>Kr\u00f3tsza retencja ogranicza przede wszystkim starsze bloki danych. Bie\u017c\u0105cy head i kosztowne zapytania nadal wymagaj\u0105 zasob\u00f3w. Prometheus zapisuje pocz\u0105tkowo bloki obejmuj\u0105ce zwykle dwie godziny; head obejmuje zazwyczaj kilka godzin zamiast ca\u0142ego okresu retencji. Dok\u0142adny zakres zale\u017cy od kompakcji, restart\u00f3w i warunk\u00f3w pracy. Po zmianie filtra stare szeregi nie znikaj\u0105 natychmiast z head ani wstecznie z zapisanych blok\u00f3w.<\/p>\n<h3>Jakie ograniczenia zmniejszaj\u0105 ryzyko awarii?<\/h3><p>Kilka zabezpiecze\u0144 uzupe\u0142nia kontrolowan\u0105 instrumentacj\u0119, lecz nie gwarantuje nieprzerwanego dzia\u0142ania:<\/p><ol><li><code>sample_limit<\/code> ogranicza przyjmowane pr\u00f3bki w pojedynczym odpytaniu po metric relabeling. Przekroczenie limitu powoduje niepowodzenie ca\u0142ego odpytania; <code>up<\/code> przyjmuje zero dla danego celu. Podstaw\u0105 limitu mog\u0105 by\u0107 normalne warto\u015bci <code>scrape_samples_post_metric_relabeling<\/code> i uzasadniony zapas. Nie ogranicza to \u0142\u0105cznego stanu zmieniaj\u0105cych si\u0119 szereg\u00f3w z wielu odpyta\u0144.<\/li><li>Alerty dotycz\u0105ce liczby szereg\u00f3w i zmian tej liczby pomagaj\u0105 wraz z metrykami pami\u0119ci, restart\u00f3w i b\u0142\u0119d\u00f3w odpytywania. Sam alert wzrostu nie wykrywa ka\u017cdej rotacji ani ka\u017cdego kr\u00f3tkiego skoku obci\u0105\u017cenia.<\/li><li>Skuteczny twardy limit pami\u0119ci kontenera ogranicza zu\u017cycie w danej cgroup; zako\u0144czenie przez OOM w tej grupie mo\u017ce zatrzyma\u0107 Prometheusa. Globalny brak pami\u0119ci spowodowany innymi procesami pozostaje mo\u017cliwy. W Dockerze sprawdzenia wymagaj\u0105 rzeczywista obs\u0142uga j\u0105dra i cgroup, obowi\u0105zuj\u0105ce limity oraz ustawienia swap, na przyk\u0142ad przez <code>docker info<\/code> i konfiguracj\u0119 kontenera.<\/li><\/ol><\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.raspberrypi.com\/documentation\/computers\/raspberry-pi.html\" rel=\"noopener noreferrer\" target=\"_blank\">Raspberry Pi: dokumentacja<\/a><\/li>\n<li><a href=\"https:\/\/prometheus.io\/docs\/concepts\/data_model\/\" rel=\"noopener noreferrer\" target=\"_blank\">Prometheus: model danych<\/a><\/li><li><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/\" rel=\"noopener noreferrer\" target=\"_blank\">Prometheus: zmiana etykiet i limity odpytywania<\/a><\/li><li><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/storage\/\" rel=\"noopener noreferrer\" target=\"_blank\">Prometheus: przechowywanie i retencja<\/a><\/li><li><a href=\"https:\/\/prometheus.io\/docs\/practices\/instrumentation\/\" rel=\"noopener noreferrer\" target=\"_blank\">Prometheus: wdro\u017cenie pomiar\u00f3w<\/a><\/li><li><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/querying\/api\/#tsdb-stats\" rel=\"noopener noreferrer\" target=\"_blank\">Prometheus: statystyki TSDB<\/a><\/li><li><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/3.9\/querying\/functions\/#delta\" rel=\"noopener noreferrer\" target=\"_blank\">Prometheus: funkcja delta<\/a><\/li><li><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/querying\/basics\/#staleness\" rel=\"noopener noreferrer\" target=\"_blank\">Prometheus: nieaktualne szeregi i koszt zapyta\u0144<\/a><\/li><li><a href=\"https:\/\/docs.docker.com\/engine\/containers\/resource_constraints\/\" rel=\"noopener noreferrer\" target=\"_blank\">Docker: limity pami\u0119ci<\/a><\/li><li><a href=\"https:\/\/www.iana.org\/assignments\/http-methods\/\" rel=\"noopener noreferrer\" target=\"_blank\">IANA: metody HTTP<\/a><\/li><\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Prometheus rozpoznaje szeregi czasowe po nazwie metryki i warto\u015bciach etykiet. Wiele kombinacji i cz\u0119sta wymiana mog\u0105 obci\u0105\u017cy\u0107 Raspberry Pi. Normalizacja u \u017ar\u00f3d\u0142a, celowa diagnostyka i odpowiednie limity zmniejszaj\u0105 ryzyko; usuni\u0119cie etykiety nie sumuje licznik\u00f3w.<\/p>\n","protected":false},"author":1,"featured_media":31657,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[92064,92223],"class_list":["post-10486","post","type-post","status-publish","format-standard","hentry","category-raspberry-pi-pl","tag-monitoring-pl","tag-raspberry-pi-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Dlaczego liczba szereg\u00f3w czasowych jest iloczynem, a nie sum\u0105, i jakie trzy zapytania znajduj\u0105 sprawc\u0119, zanim maszyna si\u0119 przewr\u00f3ci.\" \/>\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\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Dlaczego liczba szereg\u00f3w czasowych jest iloczynem, a nie sum\u0105, i jakie trzy zapytania znajduj\u0105 sprawc\u0119, zanim maszyna si\u0119 przewr\u00f3ci.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-21T16:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:45:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10486.png\" \/>\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\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych\",\"datePublished\":\"2026-09-21T16:10:00+00:00\",\"dateModified\":\"2026-10-26T12:45:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/\"},\"wordCount\":1332,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10486.png\",\"keywords\":[\"Monitoring\",\"Raspberry Pi\"],\"articleSection\":[\"Raspberry Pi\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/\",\"name\":\"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10486.png\",\"datePublished\":\"2026-09-21T16:10:00+00:00\",\"dateModified\":\"2026-10-26T12:45:35+00:00\",\"description\":\"Dlaczego liczba szereg\u00f3w czasowych jest iloczynem, a nie sum\u0105, i jakie trzy zapytania znajduj\u0105 sprawc\u0119, zanim maszyna si\u0119 przewr\u00f3ci.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10486.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10486.png\",\"width\":1200,\"height\":630,\"caption\":\"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/raspberry-pi-pl\\\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych\"}]},{\"@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\":\"Lukas Wojcik\",\"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\":\"Lukas Wojcik\"},\"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":"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych | Lukas Wojcik","description":"Dlaczego liczba szereg\u00f3w czasowych jest iloczynem, a nie sum\u0105, i jakie trzy zapytania znajduj\u0105 sprawc\u0119, zanim maszyna si\u0119 przewr\u00f3ci.","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\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/","og_locale":"en_US","og_type":"article","og_title":"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych | Lukas Wojcik","og_description":"Dlaczego liczba szereg\u00f3w czasowych jest iloczynem, a nie sum\u0105, i jakie trzy zapytania znajduj\u0105 sprawc\u0119, zanim maszyna si\u0119 przewr\u00f3ci.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-21T16:10:00+00:00","article_modified_time":"2026-10-26T12:45:35+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10486.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych","datePublished":"2026-09-21T16:10:00+00:00","dateModified":"2026-10-26T12:45:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/"},"wordCount":1332,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10486.png","keywords":["Monitoring","Raspberry Pi"],"articleSection":["Raspberry Pi"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/","name":"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10486.png","datePublished":"2026-09-21T16:10:00+00:00","dateModified":"2026-10-26T12:45:35+00:00","description":"Dlaczego liczba szereg\u00f3w czasowych jest iloczynem, a nie sum\u0105, i jakie trzy zapytania znajduj\u0105 sprawc\u0119, zanim maszyna si\u0119 przewr\u00f3ci.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10486.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10486.png","width":1200,"height":630,"caption":"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/raspberry-pi-pl\/dlaczego-prometheus-zuzywa-duzo-pamieci-na-raspberry-pi-wyszukiwanie-nadmiarowych-szeregow-pomiarowych\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Dlaczego Prometheus zu\u017cywa du\u017co pami\u0119ci na Raspberry Pi: wyszukiwanie nadmiarowych szereg\u00f3w pomiarowych"}]},{"@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":"Lukas Wojcik","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":"Lukas Wojcik"},"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\/posts\/10486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"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=10486"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10486\/revisions"}],"predecessor-version":[{"id":27514,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10486\/revisions\/27514"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/31657"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}