פורסם

Grafana Loki

שרת לאיסוף לוגים של Grafana Labs שמאנדקס רק labels ושומר את הלוגים כ-chunks דחוסים, עם שאילתות LogQL מתוך Grafana. רץ כאן כ-container יחיד עם אחסון על מערכת הקבצים. מתאים לשרת אחד או לכמה שרתים שרוצים את הלוגים של ה-containers והמערכת במקום אחד שאפשר לחפש בו.

משאבים לפי רמת עומס

מה האפליקציה עצמה צריכה בכל רמה, לצד מה שאנחנו ממליצים לשרת שמריץ רק אותה.

רמהמה זה אומרדרישות האפליקציהמומלץ
קלהערכהעד 1 GB של לוגים ביום משרת אחד וה-containers שלו, עד 500 streams פעילים, כמה אנשים ששואלים על 30 הימים האחרונים מתוך Grafana.0.5 vCPU · 1 GiB RAM · 6.361 GiB דיסק0.72 vCPU · 2.7 GiB RAM · 16.631 GiB דיסק
בינוניהערכהעד 5 GB של לוגים ביום מכמה שרתים, עד 2,000 streams פעילים, דשבורדים וכללי התראה ששואלים את Loki לאורך היום.1 vCPU · 2 GiB RAM · 31.027 GiB דיסק1.32 vCPU · 3.9 GiB RAM · 44.997 GiB דיסק
כבדהערכהעד 20 GB של לוגים ביום, התקרה של מצב monolithic לפי התיעוד, עד 5,000 streams פעילים (מגבלת ברירת המחדל לכל tenant), שימוש כבד ב-LogQL.2 vCPU · 4 GiB RAM · 123.527 GiB דיסק2.52 vCPU · 6.3 GiB RAM · 151.372 GiB דיסק

מומלץ = דרישות האפליקציה + baseline של המערכת + מרווח ביטחון (headroom), לפי מדיניות ה-sizing ‏2026.10.0. האפשרויות נשארות בברירת המחדל. ״הערכה״ פירושה שהמקורות לא נותנים מספר למקרה הזה, ולכן הוא מחושב מהם בשיטה שמפורטת תחת רכיבים. איך המספרים נבנים

לחישוב ב-Stack Sizer

קבצים מוכנים להפעלה

רמת תמיכה נתמך

תבנית Compose מהמקורות הרשמיים; עוד לא נבדקה בהרצה.

צור docker-compose

רכיבים

מה כל רכיב צריך בכל רמת עומס, לפני baseline ו-headroom.

vCPU / GiB RAM / GiB דיסק
רכיבקלבינוניכבדמקורות
Loki (app)0.5 / 1 / 6.3611 / 2 / 31.0272 / 4 / 123.527[7][10][11][26][28]
איך ההערכות מחושבות
  • Loki · קל: אין sizing רשמי למצב monolithic. ‏RAM: שעתיים (max_chunk_age) של 1 GB ביום הם 0.083 GB של chunks פתוחים, ועוד results cache של 100 MB וה-runtime של Go לכל הרכיבים ← 1 GiB. ‏vCPU: ‏gzip של כ-12 KB לשנייה ושאילתות LogQL קצרות ← חצי ליבה. Disk: ‏image של 0.194 GiB ‏(0.045 דחוס ועוד 0.149 פרוס, ה-containerd store שומר את שניהם) ועוד 30 יום × 1 GB / 5 (יחס gzip משוער) = ‏6, ועוד WAL של שעתיים של קליטה × 2 = ‏0.167 ← 6.361; ‏GB נספר כ-GiB.
  • Loki · בינוני: RAM: שעתיים של 5 GB ביום הם 0.417 GB של chunks פתוחים, ועוד results cache של 100 MB ועד 4 שאילתות בו-זמנית (querier max_concurrent) ← 2 GiB. ‏vCPU: ליבה אחת לדחיסה ולשאילתות של דשבורדים על כמה ימים של נתונים. Disk: ‏image של 0.194 GiB ‏(0.045 דחוס ועוד 0.149 פרוס, ה-containerd store שומר את שניהם) ועוד 30 יום × 5 GB / 5 (יחס gzip משוער) = ‏30, ועוד WAL של שעתיים של קליטה × 2 = ‏0.833 ← 31.027; ‏GB נספר כ-GiB.
  • Loki · כבד: RAM: שעתיים של 20 GB ביום הם 1.667 GB של chunks פתוחים, ועוד cache ו-4 שאילתות בו-זמנית ← 4 GiB, בקשה של ingester אחד בדרגה הקטנה של microservices בתיעוד (2 CPU, ‏4 Gi). ‏vCPU: ‏2, אותה בקשה; התיעוד מזהיר ששאילתות עלולות לדרוש פי 10. Disk: ‏image של 0.194 GiB ‏(0.045 דחוס ועוד 0.149 פרוס, ה-containerd store שומר את שניהם) ועוד 30 יום × 20 GB / 5 (יחס gzip משוער) = ‏120, ועוד WAL של שעתיים של קליטה × 2 = ‏3.333 ← 123.527; ‏GB נספר כ-GiB.

פורטים

פורטים ציבוריים נועדו לגישה מחוץ ל-stack, בדרך כלל דרך reverse proxy; פורטים פנימיים נשארים ברשת של ה-stack עצמו.

רכיבפורטחשיפהשימושמקורות
Loki3100/tcpפנימי בלבדHTTP API: push (/loki/api/v1/push, /otlp/v1/logs), LogQL queries, /ready; no authentication[2][8][9]
Loki9095/tcpפנימי בלבדgRPC between Loki components (default grpc_listen_port); unused from outside[7]

כל הפורטים בקטלוג, עם התנגשויות בין אפליקציות

משתמש והרשאות (UID/GID)

המשתמש שהתהליך של כל קונטיינר רץ תחתיו, והנתיבים שהוא כותב אליהם. ‏bind mount לאחד הנתיבים האלה חייב להיות ניתן לכתיבה על ידי ה-UID:GID הזה.

רכיבUID:GIDמשתמשמתחיל כ-rootכותב אלמקורות
Loki10001:10001lokiלא/loki[1][4][6][14]

צמיחת אחסון

בכמה הנתונים של כל רכיב גדלים בחודש בכל רמת עומס, מעבר לדיסק שבפרופיל. ערך שמסומן ״הנחה״ הוא הנחה מוצהרת של ANAROQ ולא מספר מהמקורות; ההערות מפרטות על מה היא נשענת.

GiB לחודש
רכיבקלבינוניכבדמקורות
Lokiהנחה630120[7][12][13]
על מה מספרי הצמיחה נשענים
  • Loki: ה-retention כבוי כברירת מחדל, ולכן Loki שומר כל לוג ולא מוחק לפי מקום פנוי: 30 יום × 1 GB ביום / 5 (יחס gzip משוער; chunk_encoding gzip) = ‏6 GiB בחודש, בלי סוף. כשה-retention של ה-compactor פעיל, הדיסק מתייצב בערך על תקופת retention אחת.
  • Loki: ה-retention כבוי כברירת מחדל, ולכן Loki שומר כל לוג ולא מוחק לפי מקום פנוי: 30 יום × 5 GB ביום / 5 (יחס gzip משוער; chunk_encoding gzip) = ‏30 GiB בחודש, בלי סוף. כשה-retention של ה-compactor פעיל, הדיסק מתייצב בערך על תקופת retention אחת.
  • Loki: ה-retention כבוי כברירת מחדל, ולכן Loki שומר כל לוג ולא מוחק לפי מקום פנוי: 30 יום × 20 GB ביום / 5 (יחס gzip משוער; chunk_encoding gzip) = ‏120 GiB בחודש, בלי סוף. כשה-retention של ה-compactor פעיל, הדיסק מתייצב בערך על תקופת retention אחת.

שדרוג וחזרה לאחור

איך עוברים לגרסה חדשה בבטחה, ואיך חוזרים אחורה אם משהו נכשל.

קודם גיבוי

עוצרים את Loki ‏(docker compose stop loki), ואז מעתיקים את כל ה-volume של ‎/loki עם container עזר, למשל docker run --rm -v <volume>:/loki:ro -v "$PWD":/backup alpine tar czf /backup/loki.tgz -C /loki . ב-image של Loki אין shell ואין tar. [2][14][15]נגזר‏upstream לא מתעדים נוהל גיבוי לאחסון על מערכת הקבצים. כל נתיבי הנתונים (chunks, אינדקס TSDB, ‏WAL, ‏compactor) נמצאים תחת path_prefix ‏‎/loki, ו-BusyBox הוסר מה-image ב-3.5.8, ולכן ההעתקה רצה מחוצה לו.

שלבי השדרוג

  1. קוראים את מדריך השדרוג ואת ה-release notes של כל גרסה שעוברים; ‏upstream ממליצים לשדרג גרסה אחר גרסה ולבדוק קודם דילוג על גרסאות. אחר כך מגבים את ‎/loki, מגדירים את ה-tag המוצמד החדש ומריצים docker compose pull ו-docker compose up -d. [15][16]
  2. עם קובץ הגדרות משלכם, בודקים אותו קודם: מריצים את ה-image החדש עם ‎-config.file=<הקובץ שלכם> -verify-config=true, או משווים את הפלט של ‎-print-config-stderr בין ה-tag הישן לחדש, כמו במדריך השדרוג. [15]
  3. אחרי ההפעלה Loki משחזר את ה-WAL; מחכים שה-container יהיה healthy ‏(loki -health על ‎/ready) ובודקים את docker compose logs loki לפני שסומכים עליו. [5][7][8]

חזרה לאחור

עוצרים את ה-stack, משחזרים ל-volume את העותק של ‎/loki שנלקח לפני השדרוג, מצמידים את ה-tag הקודם ומריצים docker compose up -d. לוגים שהתקבלו אחרי הגיבוי אובדים. [15]נגזרמדריך השדרוג מכסה רק שדרוגים, לא חזרה לאחור; ‏binary ישן על קבצי אינדקס ו-WAL שגרסה חדשה כתבה לא מתועד כבטוח, ואילו העותק מלפני השדרוג כן.

שינויים שוברים ידועים

  • בגרסה 3.7.3: ‏Promtail הוסר מפרויקט Loki (סוף החיים ב-2 במרץ 2026). מעבירים את שליחת הלוגים ל-Grafana Alloy; ‏alloy convert ממיר הגדרות של Promtail להגדרות של Alloy. [16][18][19]
  • בגרסה 3.7.0: ‏labels שמחולצים ב-parsers בשאילתה (json, ‏logfmt) כבר לא דורסים structured metadata עם אותו שם; שאילתות שנשענו על זה מחזירות תוצאות אחרות. [16]
  • בגרסה 3.6.0: ממשק המשתמש המובנה של Loki עבר ל-plugin של Grafana ‏(Loki Operational UI); ‏Loki מגיש עכשיו רק את ה-APIs שה-plugin משתמש בהם. [17]
  • בגרסה 3.5.8: ‏BusyBox הוסר מה-image: אין ‎/bin/sh, ‏ls או wget, ולכן docker exec … sh ו-healthchecks עם shell או wget נכשלים. משתמשים ב-docker cp, ב-container עזר או ב-loki -health ‏(3.7 ומעלה). [5][15]
  • בגרסה 3.0.0: ‏structured metadata פעיל כברירת מחדל ודורש אינדקס tsdb עם schema v13, אחרת Loki לא עולה; קודם עוברים ל-TSDB. מגבלות חדשות: ‏256 KB לשורה, 15 labels לסדרה; נוסף label בשם service_name; ‏retention דורש delete_request_store. [15]

מגבלות

  • התבנית היא רק שרת Loki; משהו צריך לשלוח אליו לוגים. ‏Promtail הגיע לסוף חייו: משתמשים ב-Grafana Alloy ‏(loki.write אל http://loki:3100/loki/api/v1/push; קריאת לוגים של containers דורשת את ה-Docker socket, ולכן אין לה תבנית), ב-Docker logging driver של Loki, או ב-OTLP ב-‎/otlp/v1/logs. [8][18][19][20][24]
  • כל אפליקציה בקובץ שנוצר מקבלת רשת פנימית משלה, ולכן Grafana באותו קובץ עדיין לא מגיע ל-Loki: מוסיפים את loki-internal ל-networks של השירות grafana, ואז משתמשים ב-http://loki:3100 ככתובת ה-data source של Loki. [3][8]
  • ה-Docker logging driver רץ בתוך ה-Docker daemon במארח, לא ברשת של Compose: מתקינים את grafana/loki-docker-driver:3.7.8-amd64 (או ‎-arm64), מפעילים את publish-loopback ומגדירים loki-url ל-http://127.0.0.1:3100/loki/api/v1/push. [21][22][23]
  • ה-retention כבוי: ‏Loki שומר כל לוג לתמיד ולא מוחק כשהדיסק מתמלא. כדי להגביל, מפעילים retention ב-compactor, למשל בהוספת ‎-compactor.retention-enabled=true -compactor.delete-request-store=filesystem -store.retention=744h אחרי ‎-config.file=/etc/loki/local-config.yaml ב-command. [7][12][13]
  • מצב monolithic עם אחסון על מערכת הקבצים מתאים לעד כ-20 GB ביום בשרת אחד. ‏Grafana Labs לא תומכים באחסון על מערכת הקבצים ב-production; אין high availability, השרידות היא של הדיסק, ומיליוני קבצי chunk בתיקייה אחת יוצרים בעיות. [10][12]
  • מגבלות ברירת המחדל לכל tenant: קליטה של 4 MB לשנייה (6 MB ב-burst), ‏5,000 streams פעילים, ‏256 KB לשורה, 15 labels לסדרה, ורשומות ישנות משבוע נדחות. כדאי לשמור על מעט labels עם מעט ערכים. [7][15]
  • ההגדרות צרובות ב-image, ואין בו shell. כדי לשנות מעבר לדגלים בשורת הפקודה, מחברים קובץ משלכם ומפנים אליו את ‎-config.file, כמו בתיעוד ההתקנה עם Docker. [1][4][15]

אבטחה

  • ל-Loki אין אימות (auth_enabled false, ‏tenant אחד): כל מי שמגיע לפורט 3100 יכול לקרוא את כל הלוגים ולשלוח חדשים. משאירים אותו ברשת הפנימית; ‏publish-loopback ממפה אותו על 127.0.0.1 בלבד. ‏agents במארחים אחרים צריכים reverse proxy עם אימות או mTLS לפניו. [2][9]
  • לוגים מכילים לעיתים קרובות tokens, כתובות IP ומידע אישי. מי שיכול לשאול את Loki או את ה-Grafana שלו רואה אותם, ולכן מגבילים את הגישה ל-Grafana, מסננים שורות רגישות ב-agent וקובעים תקופת retention. [9][13]
  • כברירת מחדל Loki שולח סטטיסטיקות שימוש אנונימיות ל-stats.grafana.org. כדי לכבות, מוסיפים ‎-reporting.enabled=false ל-command, או מגדירים analytics.reporting_enabled: false בקובץ הגדרות משלכם. [2][7]
  • ה-image רץ כמשתמש loki שאינו root ‏(10001:10001) על בסיס distroless בלי shell. ‏named volume עובד כמו שהוא; ‏bind mount צריך להיות בבעלות 10001, או להריץ עם ‎--user. [1][4][6]

גיבוי

  • כל מה ש-Loki שומר נמצא ב-volume של ‎/loki: ‏chunks (תחת fake/ במצב tenant יחיד), אינדקס ה-TSDB, ה-WAL, קבצי ה-compactor וה-rules. מעתיקים אותו כש-Loki עצור, מ-container עזר, כי אין shell ב-image. [2][12][14]
  • כדאי להחליט אם הלוגים שווים גיבוי: לעיתים קרובות רק ההגדרות חשובות, ולוגים ישנים אפשר להסיר עם retention. את קובץ ההגדרות או הדגלים שהוספתם שומרים יחד עם קובץ ה-Compose. [4][13]

גרסה אחרונה

הגרסה האחרונה של הפרויקט
Grafana Loki 3.7.8 [27]
הפרופיל נבדק מול

Grafana Loki 3.7.8

הפרופיל נבדק מול הגרסה האחרונה.

נבדק ב-
14 באוק׳ 2026
מצב
נבדק ב-90 הימים האחרונים
איפה הגרסאות מתפרסמות
תגיות ב-Docker Hub

הגרסאות האחרונות של כל האפליקציות

גרסה

סטטוס הפרופיל
פורסם
נבדק מול גרסה
Grafana Loki 3.7.8
גרסת הפרופיל
1.0.0
המספרים אומתו
14 באוק׳ 2026
גרסת הקטלוג
2026.10.10
מדיניות sizing
2026.10.0
קובץ Compose
לא אומת
האתר הרשמי
grafana.com/oss/loki/

מקורות

  1. cmd/loki/Dockerfile at v3.7.8: distroless static:nonroot base, loki-docker-config.yaml copied to /etc/loki/local-config.yaml, /loki owned by 10001, USER 10001, EXPOSE 3100 (מאגר רשמי · נקרא 14 באוק׳ 2026)
  2. cmd/loki/loki-docker-config.yaml at v3.7.8 (the image's default config): auth_enabled false, http 3100, path_prefix /loki, filesystem chunks, tsdb v13 with 24h index (מאגר רשמי · נקרא 14 באוק׳ 2026)
  3. production/docker-compose.yaml at v3.7.8: grafana/loki:latest with 3100:3100 and the default config, no volume; Promtail and Grafana (datasource http://loki:3100) (Compose רשמי · נקרא 14 באוק׳ 2026)
  4. Loki docs at v3.7.8: Install Loki with Docker (single binary, runs as loki UID/GID 10001, -p 3100:3100, readiness at /ready) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  5. cmd/loki/health.go at v3.7.8: loki -health requests http://localhost:3100/ready with a 5 s timeout; exit 0 on HTTP 200, else 1 (מאגר רשמי · נקרא 14 באוק׳ 2026)
  6. Registry config of grafana/loki:3.7.8 (linux/amd64): User 10001, ExposedPorts 3100/tcp, no Volumes, no Healthcheck, Entrypoint /usr/bin/loki, Cmd -config.file=/etc/loki/local-config.yaml (מדידה · נקרא 14 באוק׳ 2026)
  7. Loki configuration reference at v3.7.8: grpc_listen_port 9095, retention_enabled false, retention_period 0s (-store.retention), reporting_enabled true, ingestion and chunk defaults (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  8. Loki HTTP API reference at v3.7.8: POST /loki/api/v1/push, POST /otlp/v1/logs, GET /ready (HTTP 200 when ready for traffic) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  9. Loki docs at v3.7.8: Manage authentication (no built-in authentication layer; run an authenticating reverse proxy in front) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  10. Loki docs at v3.7.8: Deployment modes (monolithic = -target=all, one process; for small read/write volumes of up to about 20 GB per day) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  11. Loki docs at v3.7.8: Size the cluster (microservices mode only; smallest tier under 3 TB/day: ingester 2 CPU and 4 Gi each) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  12. Loki docs at v3.7.8: Filesystem object store (not supported for production by Grafana Labs, no HA, no deletion by free space, chunk file count limits) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  13. Loki docs at v3.7.8: Log retention (off by default, logs live forever; compactor retention_enabled, delete_request_store, retention_period, 24h index) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  14. pkg/loki/config_wrapper.go at v3.7.8: with common.path_prefix, the WAL, compactor, rules-temp and TSDB directories default to paths under it (מאגר רשמי · נקרא 14 באוק׳ 2026)
  15. Loki docs at v3.7.8: Upgrade guide (3.6 AWS SDK v2, 3.5.8 BusyBox removed, 3.0 tsdb and v13 for structured metadata, new limits; -print-config-stderr diff) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  16. Loki v3.7 release notes (loki health command #20313; Promtail removed as of 3.7.3; breaking: parsed labels no longer override structured metadata) (Release notes · נקרא 14 באוק׳ 2026)
  17. Loki v3.6 release notes (Loki UI moved to a Grafana plugin; Promtail deprecated, commercial support ending; SSD mode deprecated before 4.0) (Release notes · נקרא 14 באוק׳ 2026)
  18. Loki docs: Promtail agent (end of life as of March 2, 2026; no further updates; migrate to Grafana Alloy) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  19. Grafana Alloy docs: Migrate from Promtail (Promtail EOL on March 2, 2026; alloy convert turns a Promtail config into an Alloy config) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  20. Grafana Alloy docs: loki.source.docker (reads container logs from a Docker daemon, unix:///var/run/docker.sock in the example) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  21. Loki docs at v3.7.8: Docker driver client (plugin installed on each Docker host; third-party support level, unlike Alloy) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  22. Loki docs at v3.7.8: Docker driver configuration (loki-url per container, in Compose logging options or as the default in daemon.json) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  23. Docker Hub tags of grafana/loki-docker-driver (3.7.8-amd64 and 3.7.8-arm64 pushed 2026-09-17) (מאגר רשמי · נקרא 14 באוק׳ 2026)
  24. Loki docs at v3.7.8: Ingesting logs using OpenTelemetry (OTLP attributes stored as structured metadata; 64 KB and 128 entries per line) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  25. Loki LICENSE at v3.7.8: GNU Affero General Public License v3 (מאגר רשמי · נקרא 14 באוק׳ 2026)
  26. Docker Hub tag grafana/loki:3.7.8 (linux/amd64): 48,003,511 B compressed; 18 layers decompressed and counted: 160,082,432 B (מדידה · נקרא 14 באוק׳ 2026)
  27. Docker Hub tags of grafana/loki (3.7.8 newest stable on 2026-10-14, pushed 2026-09-17; 3.6.17 on the older line; main-* tags are unreleased builds) (מאגר רשמי · נקרא 14 באוק׳ 2026)
  28. Docker: containerd image store is the default on fresh Engine 29+ installs and keeps images compressed and uncompressed (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  29. Grafana Cloud Logs: fully managed log aggregation by Grafana Labs, powered by Loki OSS (תיעוד רשמי · נקרא 14 באוק׳ 2026)

כל אפליקציות ה-self-hosted