רישום וניטור תעבורת API Gateway

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

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
רישום וניטור תעבורת API Gateway
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

ראינו פרויקטים שבהם הייצור מתחיל להחזיר 500 עקב עומס על נקודת קצה אחת, ומפתחים מבלים שעות בחיפוש אחר הגורם בלוגים מפוזרים. ללא נקודת כניסה מרכזית—שער (Gateway)—אתה עיוור: אינך יכול לראות מי קורא ל-API, באיזה זמן השהיה, אילו מסלולים נכשלים. הגדרת לוגים וניטור תעבורה דרך API Gateway פותרת בעיות אלו תוך מספר ימים ומעניקה שקיפות מלאה לתעבורה. הניסיון שלנו של 10+ שנים ביישום פתרונות כאלה מבטיח יציבות ומקצר את זמן חקירת התקלות ל-15 דקות—הפחתה של 87.5%.

אנו משלבים איסוף של השדות המינימליים הנדרשים בשער שלך: request_id (מעקב מבוזר), uuid4 (זיהוי לקוח), consumer_id, client_abc, method, path, גדלי בקשה/תגובה. איננו מתעדים את גוף הבקשה כברירת מחדל—רק במצב דיבאג עבור מסלולים נבחרים כדי למנוע חשיפת מידע רגיש. לאחר היישום, צוות אחד קיצץ את זמן חקירת התקלות משעתיים ל-15 דקות, וחסך 50,000 דולר בשנה בשעות הנדסה.

אילו מדדים קריטיים לניפוי באגים ב-API?

ללא איסוף מרכזי, אינך יכול לענות במהירות: איזו נקודת קצה היא האיטית ביותר, מי מייצר 90% מהשגיאות, מדוע השרת העליון נכשל. אנו מגדירים את השער כך שכל בקשה משאירה עקבות דיגיטליות מלאות:

שדה דוגמה מטרה
GET /api/v2/orders status_code מעקב מבוזר בין שירותים
429 latency_ms מי ביצע את הבקשה
143 + upstream_latency_ms 138 סטטיסטיקת נקודות קצה
request_size 1024 ניטור שגיאות
response_size 4096 ביצועים
ip 1.2.3.4 היכן הזמן מבוזבז
dataTraceEnabled X-Request-ID חריגות תעבורה
request_id http-log —
prometheus plugins: - name: http-log config: http_endpoint: http://logstash:5044/kong method: POST timeout: 1000 keepalive: 1000 flush_timeout: 2 retry_count: 10 queue: max_batch_size: 200 max_coalescing_delay: 1 max_entries: 10000 - name: prometheus config: per_consumer: true status_code_metrics: true latency_metrics: true bandwidth_metrics: true upstream_health_metrics: true אבטחה

כל בקשה מועשרת גם בתוויות (לקוח, מסלול)—המאפשרות חיתוך לפי לקוח ונקודת קצה.

סיכונים בתיעוד גוף הבקשה

בייצור, גוף הבקשה מכיל מידע רגיש: סיסמאות, טוקנים, נתוני PAN. אנו מגדירים את השער כך שגוף הבקשה מתועד רק עבור מסלולים נבחרים במצב דיבאג. ב-Kong זה נשלט על ידי הדגל /metrics, ב-AWS על ידי קונפיגורציה נפרדת. אם יש צורך בניפוי באגים לבקשה ספציפית, אנו מאפשרים תיעוד גוף למשך 15 דקות ולאחר מכן משביתים אותו. תיעוד Kong ממליץ להפעיל תיעוד גוף רק בעת הצורך כדי למנוע דליפות מידע. תיעוד Kong

כיצד מעקב מבוזר עובד עם request_id

{ "loggingLevel": "INFO", "dataTraceEnabled": false, "metricsEnabled": true, "accessLogDestinationArn": "arn:aws:logs:us-east-1:123456789:log-group:api-gateway-access", "accessLogFormat": "{\"requestId\":\"$context.requestId\",\"ip\":\"$context.identity.sourceIp\",\"caller\":\"$context.identity.caller\",\"user\":\"$context.identity.user\",\"requestTime\":\"$context.requestTime\",\"httpMethod\":\"$context.httpMethod\",\"resourcePath\":\"$context.resourcePath\",\"status\":\"$context.status\",\"protocol\":\"$context.protocol\",\"responseLength\":\"$context.responseLength\",\"integrationLatency\":\"$context.integrationLatency\",\"responseLatency\":\"$context.responseLatency\"}" } הוא UUID שנוצר בשער ומועבר לכל שירותי הקצה האחורי דרך כותרת HTTP dataTraceEnabled: false. כל שירות מתעד את מזהה הבקשה הייחודי שלו בלוגים, מה שמאפשר תמונה מלאה של ביצוע בקשה אחת. כדי להשיג זאת, פשוט הוסף את הכותרת לכל הקריאות היוצאות—זה נעשה עם middleware בשעה. לאחר מכן, ניתן לבנות לוח מחוונים של "מסלול בקשה" המציג את כל הקריאות בין השירותים.

כיצד להגדיר את Kong Gateway לאיסוף מדדים

Kong הוא השער העצמי הפופולרי ביותר. תיעוד דרך הפלאגין fields @timestamp, resourcePath, responseLatency | filter status >= 200 | stats pct(responseLatency, 95) as p95 by resourcePath | sort p95 desc | limit 20 ומדדים דרך log_format מוגדרים בקונפיגורציה אחת:

plugins:
  - name: http-log
    config:
      http_endpoint: http://logstash:5044/kong
      method: POST
      timeout: 1000
      keepalive: 1000
      flush_timeout: 2
      retry_count: 10
      queue:
        max_batch_size: 200
        max_coalescing_delay: 1
        max_entries: 10000
  - name: prometheus
    config:
      per_consumer: true
      status_code_metrics: true
      latency_metrics: true
      bandwidth_metrics: true
      upstream_health_metrics: true

לאחר מכן, log_format api_json escape=json '{' '"timestamp":"$time_iso8601",' '"request_id":"$request_id",' '"method":"$request_method",' '"path":"$uri",' '"status":$status,' '"latency_ms":$request_time,' '"upstream_latency_ms":"$upstream_response_time",' '"bytes_sent":$bytes_sent,' '"consumer":"$http_x_consumer_id",' '"ip":"$remote_addr"' '}'; access_log /var/log/nginx/api_access.log api_json buffer=32k flush=5s; ב-Kong Manager מחזיר את כל המדדים בפורמט Prometheus. מרווח גרידה: 15 שניות.

קונפיגורציה ב-AWS API Gateway

ב-AWS, התיעוד מוגדר ברמת Stage דרך CloudWatch:

{ "loggingLevel": "INFO",
  "dataTraceEnabled": false,
  "metricsEnabled": true,
  "accessLogDestinationArn": "arn:aws:logs:us-east-1:123456789:log-group:api-gateway-access",
  "accessLogFormat": "{\"requestId\":\"$context.requestId\",\"ip\":\"$context.identity.sourceIp\",\"caller\":\"$context.identity.caller\",\"user\":\"$context.identity.user\",\"requestTime\":\"$context.requestTime\",\"httpMethod\":\"$context.httpMethod\",\"resourcePath\":\"$context.resourcePath\",\"status\":\"$context.status\",\"protocol\":\"$context.protocol\",\"responseLength\":\"$context.responseLength\",\"integrationLatency\":\"$context.integrationLatency\",\"responseLatency\":\"$context.responseLatency\"}" }

opentelemetry-nginx-module—לעולם אל תפעיל בייצור, זה מתעד את גופי הבקשות. שאילתת CloudWatch Insights עבור זמן השהיה p95 לפי נקודת קצה:

fields @timestamp, resourcePath, responseLatency | filter status >= 200 | stats pct(responseLatency, 95) as p95 by resourcePath | sort p95 desc | limit 20 

Nginx API Gateway + OpenTelemetry

אם השער על Nginx (nginx-plus או OpenResty), התיעוד מוגדר דרך - alert: APIHighErrorRate expr: | sum(rate(kong_http_requests_total{status=~"5.."}[5m])) / sum(rate(kong_http_requests_total[5m])) > 0.05 for: 2m labels: severity: critical annotations: summary: "Error rate > 5% за последние 5 минут" - alert: APIHighLatency expr: | histogram_quantile(0.95, sum(rate(kong_request_latency_ms_bucket[5m])) by (le, route) ) > 2000 for: 5m labels: severity: warning annotations: summary: "p95 latency > 2s для роута {{ $labels.route }}" :

log_format api_json escape=json '{'
    '"timestamp":"$time_iso8601",'
    '"request_id":"$request_id",'
    '"method":"$request_method",'
    '"path":"$uri",'
    '"status":$status,'
    '"latency_ms":$request_time,'
    '"upstream_latency_ms":"$upstream_response_time",'
    '"bytes_sent":$bytes_sent,'
    '"consumer":"$http_x_consumer_id",'
    '"ip":"$remote_addr"'
  '}';
access_log /var/log/nginx/api_access.log api_json buffer=32k flush=5s;

למעקב מבוזר, השתמש ב-opentelemetry-nginx-module—אנו מחברים אותו לפי הצורך.

איזה מחסן ויזואליזציה לבחור: ELK או Grafana?

קריטריון ELK (Elasticsearch, Logstash, Kibana) Grafana Stack (Loki, Prometheus, Grafana)
אחסון לוגים מאנדקס את כל השדות—יקר מאחסן לוגים דחוסים ללא אינדוקס—זול
חיפוש לוגים טקסט מלא, מהיר מוגבל (לפי תוויות)
מדדים רק דרך beats Prometheus—ילידי
מורכבות הגדרה גבוהה (צינור Logstash) בינונית (PromQL, LogQL)
עלות אופיינית ל-100 GB ליום $200–400 לחודש $50–100 לחודש

עבור רוב הפרויקטים, Grafana Stack קל יותר לתפעול וזול פי 2-4 מ-ELK. הוא גם מציע אינטגרציה טובה יותר עם Prometheus ו-OpenTelemetry. ELK מוצדק כאשר יש צורך בחיפוש לוגים מורכב (ניתוח תקלות, רטרוספקטיבה). שימוש ב-Loki במקום Elasticsearch יכול להפחית את עלויות האחסון בעד 75%.

התראות

סט התראות מינימלי (Prometheus AlertManager / Grafana Alerting) — Prometheus AlertManager יעיל יותר מהתראות מסורתיות מבוססות לוגים עבור מדדים בזמן אמת:

---
- alert: APIHighErrorRate
  expr: |
    sum(rate(kong_http_requests_total{status=~"5.."}[5m])) / sum(rate(kong_http_requests_total[5m])) > 0.05
  for: 2m
  labels:
    severity: critical
  annotations:
    summary: "Error rate > 5% за последние 5 минут"
- alert: APIHighLatency
  expr: |
    histogram_quantile(0.95, sum(rate(kong_request_latency_ms_bucket[5m])) by (le, route) ) > 2000
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "p95 latency > 2s для роута {{ $labels.route }}"
טעויות נפוצות בהגדרת תיעוד - שכחת להפעיל `request_id`—איבוד מעקב מבוזר. - הפעלת `dataTraceEnabled` בייצור—דליפות מידע ועלות אחסון מוגדלת. - אי הגדרת רוטציית לוגים—גלישת דיסק. - אי בדיקת התראות על staging—אזעקות שווא בייצור.

תהליך העבודה ומה כלול בתוצאה

  1. אנליטיקה: אנו לומדים את ארכיטקטורת ה-API שלך, השערים הנוכחיים, נפח התעבורה, דרישות האחסון. אנו מתמודדים עם עד 100,000 בקשות/שנייה.
  2. עיצוב: בחירת המחסנית (Kong/AWS/Nginx), הגדרת סכמת תיעוד, הגדרת שמירה ל-30 יום.
  3. יישום: פריסת שער עם פלאגינים, הגדרת איסוף מדדים, חיבור Logstash/Loki. אנו מבטיחים תקינות קונפיגורציה.
  4. בדיקות: אימות תקינות הלוגים, סימולציית שגיאות, בדיקת התראות.
  5. פריסה: פרסום קונפיגורציה, הדרכת צוות על לוחות מחוונים.

בסופו של דבר אתה מקבל:

  • תיעוד על סכמת התיעוד והשדות.
  • גישה ללוחות מחוונים (Grafana/Kibana) לכל חבר צוות.
  • התראות מוגדרות על מדדים קריטיים.
  • הדרכת צוות: כיצד לקרוא לוגים, כיצד להגיב להתראות.
  • שבועיים של תמיכה לאחר ההשקה.

לוח זמנים ליישום

תיעוד בסיסי ולוחות מחוונים: 2–3 ימים. מחסנית מלאה עם התראות, מעקב וניתוח רטרוספקטיבי: 1–2 שבועות בהתאם לבשלות התשתית.

אנו נעריך את הפרויקט שלך ונציע קונפיגורציה אופטימלית תוך 1–2 ימים. צור קשר לבדיקת שער—נכין את הארכיטקטורה ונשלח דוגמת קונפיגורציה. קבל ייעוץ להגדרת ניטור ה-API gateway שלך כבר עכשיו.