אחסון לטווח ארוך של Prometheus עם Thanos

כאשר Prometheus שומר מדדים ל-15 ימים בלבד, ההיסטוריה הדרושה לניתוח מגמות ותכנון קיבולת אובדת. אנו מגדירים את Thanos לאחסון ארוך טווח באחסון אובייקטים, תוך שמירה על Prometheus הקיים שלך וזמינותו הגבוהה. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת ארכיטקטורה ועד יישום ותמיכה שוטפת—ומבטיח ניטור רב-אשכולות אמין.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

Prometheus מאחסן מדדים מקומית למשך 15 ימים בלבד — זו נקודת מכשול כשצריך אנליטיקה רבעונית, עונתיות, או תכנון קיבולת. דמיינו: תקלת ייצור בערב שישי, אבל המדדים משבועות קודמים כבר לא זמינים. Thanos פותר זאת דרך אחסון אובייקטים (S3, GCS), שכבת שאילתות גלובלית, ו-deduplication. יישמנו את Thanos ביותר מ-50 פרויקטים, מסטארטאפים ועד ארגונים, ואנחנו מבטיחים שתשכחו מחוסר היסטוריה תוך 3–5 ימים. קבלו ייעוץ — המהנדסים המוסמכים שלנו יעזרו בבחירת הארכיטקטורה.

למה Thanos במקום remote_write?

Remote_write (VictoriaMetrics, Cortex) דורש החלפת Prometheus, יוצר נקודת כשל יחידה, וחסר deduplication. Thanos רץ כ-sidecar לצד Prometheus הקיים, שומר על ה-HA שלו, ומאפשר פדרציה מרובת-אשכולות דרך bucket S3 משותף. דוגמה: בפרויקט שלנו עם 20 אשכולות, Thanos Querier משרת שאילתות על פני 90 ימים ללא שינוי ב-PromQL — מהירות התגובה יורדת רק ב-10% בהשוואה לנתונים מקומיים.

קריטריון Thanos Remote_write (VictoriaMetrics)
ארכיטקטורה Sidecar, ללא החלפת Prometheus החלפה מלאה של Prometheus
Deduplication כן (דרך תווית replica) אין מובנה
ריבוי אשכולות פדרציה טבעית דרך S3 דורש הגדרה נפרדת
נקודת כשל יחידה לא כן (backend יחיד)

איך Thanos עובד

רכיב פונקציה
Sidecar מעלה בלוקים לאחסון אובייקטים, משרת נתונים טריים דרך gRPC
Store Gateway קורא נתונים היסטוריים מ-S3
Querier שאילתה מאוחדת: Sidecar + Store Gateway
Compactor דוחס ומבצע downsampling לבלוקים
Query Frontend מטמון PromQL (cache), פיצול שאילתות טווח לחלקים

תובנה מרכזית: Sidecar מתחבר ל-Prometheus המקומי דרך gRPC ומשרת נתונים טריים (בתוך תקופת השמירה) ישירות ל-Querier. Store Gateway משרת נתונים היסטוריים מ-S3. Querier ממזג את שני המקורות בשקיפות — שאילתה ל-90 הימים האחרונים עובדת ללא שינויים.

איך לפרוס את Thanos תוך 3–5 ימים?

תהליך היישום כולל:

  1. ביקורת על הניטור הנוכחי: הערכת נפח מדדים, תקופת שמירה, עלויות אחסון.
  2. עיצוב ארכיטקטורה: בחירת אחסון ענן, סכמת שכפול, גודל Store Gateway.
  3. פריסת Sidecar לצד Prometheus ב-Kubernetes באמצעות manifests.
  4. הגדרת Store Gateway ו-Querier עם גילוי מבוסס DNS לריבוי אשכולות.
  5. הגדרת Compactor עם downsampling ומדיניות שמירה.
  6. אינטגרציה עם Grafana: חיבור Thanos Querier כמקור נתונים והגדרת דשבורדים.

מה זה downsampling ואיך הוא מפחית עלויות?

Downsampling מפחית רזולוציה: נתונים גולמיים (15 שניות) נשמרים ל-30 ימים, מצטברים של 5 דקות ל-90 ימים, שעתיים לשנה. זה מקצץ את נפח האחסון פי 5–10 ללא אובדן מגמות. דחיסה ממזגת בלוקים קטנים לגדולים, מפחיתה את מספר הקבצים ומאיצה קריאות.

פריסה ב-Kubernetes

Sidecar לצד Prometheus

---
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: prometheus
spec:
  replicas: 2
  thanos:
    image: quay.io/thanos/thanos:v0.35.0
    objectStorageConfig:
      key: thanos.yaml
      name: thanos-objstore-config
    externalLabels:
      cluster: prod-eu-west
      replica: $(POD_NAME)

apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: replicas: 2 thanos: image: quay.io/thanos/thanos:v0.35.0 objectStorageConfig: key: thanos.yaml name: thanos-objstore-config externalLabels: cluster: prod-eu-west replica: $(POD_NAME) הם קריטיים: הם מאפשרים ל-Thanos Querier לבצע deduplication בין רפליקות. עבור S3, השתמשו ב-bucket externalLabels עם תפקיד IAM דרך IRSA (ללא מפתחות סטטיים).

Store Gateway ו-Querier

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: thanos-store-gateway
spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: thanos-store
          image: quay.io/thanos/thanos:v0.35.0
          args:
            - store
            - --data-dir=/var/thanos/store
            - --objstore.config-file=/etc/thanos/objstore.yaml
            - --index-cache-size=500MB
            - --chunk-pool-size=2GB
          volumeMounts:
            - name: data
              mountPath: /var/thanos/store
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: [ReadWriteOnce]
        resources:
          requests:
            storage: 100Gi
---

apiVersion: apps/v1 kind: StatefulSet metadata: name: thanos-store-gateway spec: replicas: 2 template: spec: containers: - name: thanos-store image: quay.io/thanos/thanos:v0.35.0 args: - store - --data-dir=/var/thanos/store - --objstore.config-file=/etc/thanos/objstore.yaml - --index-cache-size=500MB - --chunk-pool-size=2GB volumeMounts: - name: data mountPath: /var/thanos/store volumeClaimTemplates: - metadata: name: data spec: accessModes: [ReadWriteOnce] resources: requests: storage: 100Gi ו---index-cache-size הם פרמטרי ביצועים מרכזיים. באשכול עם 1TB של נתונים, אנו ממליצים להגדיל ל-2GB ו-8GB בהתאמה.

הגדרת Querier:

---
containers:
  - name: thanos-query
    image: quay.io/thanos/thanos:v0.35.0
    args:
      - query
      - --http-address=0.0.0.0:9090
      - --endpoint=dnssrv+_grpc._tcp.prometheus-operated.monitoring.svc.cluster.local
      - --endpoint=dnssrv+_grpc._tcp.thanos-store-gateway.monitoring.svc.cluster.local
      - --query.replica-label=replica
      - --query.auto-downsampling
---

--chunk-pool-size מאפשר deduplication לפי תווית זו.

Compactor: שמירה ו-downsampling

Compactor הוא הרכיב היחיד שרץ כמופע יחיד. הוא דוחס בלוקים ומבצע downsampling:

args:
  - compact
  - --wait
  - --wait-interval=5m
  - --objstore.config-file=/etc/thanos/objstore.yaml
  - --data-dir=/var/thanos/compact
  - --retention.resolution-raw=30d
  - --retention.resolution-5m=90d
  - --retention.resolution-1h=1y
  - --compact.concurrency=1
  - --delete-delay=48h

Downsampling: נתונים גולמיים (15 שניות) 30 ימים → מצטברים של 5 דקות 90 ימים → שעתיים שנה. בעת שאילתה לשנה האחרונה, Thanos בוחר אוטומטית את הרזולוציה המתאימה דרך containers: - name: thanos-query image: quay.io/thanos/thanos:v0.35.0 args: - query - --http-address=0.0.0.0:9090 - --endpoint=dnssrv+_grpc._tcp.prometheus-operated.monitoring.svc.cluster.local - --endpoint=dnssrv+_grpc._tcp.thanos-store-gateway.monitoring.svc.cluster.local - --query.replica-label=replica - --query.auto-downsampling .

איך להקים ניטור מרובה-אשכולות?

הוסיפו נקודות קצה של כל ה-sidecars ל-Querier:

--endpoint=sidecar.prod-eu.example.com:10901
--endpoint=sidecar.prod-us.example.com:10901
--endpoint=store-gateway.thanos.svc:10901

שאילתה --query.replica-label=replica מחזירה נתונים מכל האשכולות בתוצאה אחת.

מה כלול בשירות יישום Thanos

אנו מציעים מחזור מלא: ביקורת על מערכת הניטור הנוכחית, עיצוב ארכיטקטורה, פריסת רכיבים ב-Kubernetes (sidecar, Store Gateway, Querier, Compactor), הגדרת IAM ו-S3, אינטגרציה עם Grafana, תיעוד והדרכת צוות. התוצאה: אחסון מדדים אמין לטווח ארוך עם שכבת שאילתות גלובלית. הניסיון שלנו של עשר שנים עם פרויקטים בכל היקף מבטיח איכות. קבלו ייעוץ — נדון בתרחיש שלכם.

לוחות זמנים: 3–5 ימים לאשכול עם HA ופדרציה מרובת-אשכולות. העלות מחושבת באופן אישי לאחר הערכת נפח נתונים. צרו קשר כדי להתחיל.

תיעוד רשמי של Thanos