לאחר המעבר מ-REST ל-GraphQL, צוותים לעיתים קרובות מאבדים שליטה על הביצועים. תמונה טיפוסית: בקשה מאטה, אבל לא ברור איזה resolver אשם. שאילתות N+1 מתחזות לתגובות רגילות, ושינוי סכמה לא תואם שובר אפליקציית מובייל. עם ניסיון של 5+ שנים, יישמנו נראות GraphQL עבור 50+ פרויקטים — מסטארטאפים ועד ארגונים — ואנחנו יודעים אילו כלים באמת עובדים בייצור. במקרה אחד, אחזור p95 של פעולות עלה מ-200 ל-800 אלפיות השנייה בשבוע. רק מעקב resolver הראה שהבעיה הייתה handler חדש של user.orders שביצע 50 בקשות מסד נתונים נפרדות. נראות עזרה לזהות זאת בשעה, וצמצמה את זמן האבחון משעות לדקות, ולאחר תיקון שאילתות N+1, האחזור ירד ב-60%.
הפתרון שלנו לניטור GraphQL משלב את Apollo Studio, GraphQL Hive, או OpenTelemetry למעקב resolver, עם מדדים של Prometheus המוצגים בלוחות מחוונים של Grafana. הגדרה זו מספקת ניטור מקיף של API GraphQL, כולל זיהוי שאילתות N+1 ומעקב אחר מדדי Core Web Vitals.
בעיות שאנחנו פותרים
- שימוש בלתי נראה בשדות: Apollo Studio מראה אילו שדות לקוחות מבקשים בפועל. זה עוזר להסיר שדות מושבתים ללא חשש.
- handlers איטיים ללא מעקב: OpenTelemetry עם Jaeger/Tempo מאפשר לראות בדיוק איזה handler מאט את העניינים — עד לרמת הארגומנט.
- שינויי סכמה שוברים: בדיקות תאימות לאחור אוטומטיות בכל deploy מונעות תקלות בייצור.
איך אנחנו עושים את זה: מחסנית ותצורות
Apollo Studio (GraphOS)
// Установка npm install @apollo/server @apollo/server/plugin/usageReporting
import { ApolloServer } from '@apollo/server'
import { ApolloServerPluginUsageReporting } from '@apollo/server/plugin/usageReporting'
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
ApolloServerPluginUsageReporting({
// APOLLO_KEY из переменных среды
sendVariableValues: {
// Не отправлять чувствительные переменные
exceptNames: ['password', 'token', 'secret']
},
sendHeaders: {
exceptNames: ['Authorization', 'Cookie']
},
// Выборка трассировок (100% дорого, 10% достаточно для анализа)
fieldLevelInstrumentation: 0.1
})
]
})לפי מסמכים רשמיים של Apollo's GraphOS, הפלטפורמה מספקת: פילוח אחזור p50/p95/p99 לפי פעולה, שימוש בשדות, בדיקות סכמה עם שאילתות לקוח אמיתיות, התראות על ירידה בביצועים.
GraphQL Hive (פלטפורמה מתארחת עצמית)
# Docker Compose для GraphQL Hive docker run -d \
-e HIVE_TOKEN=your-token \
-e TARGET=your-org/your-project/production \
ghcr.io/kamilkisiela/graphql-hive/cli:latest import { useHive } from '@graphql-hive/client'
import { envelop, useSchema } from '@envelop/core'
const getEnveloped = envelop({
plugins: [
useSchema(schema),
useHive({
enabled: true,
token: process.env.HIVE_TOKEN,
usage: {
sampleRate: 1.0,
exclude: ['IntrospectionQuery']
},
reporting: {
author: 'CI Pipeline',
commit: process.env.GIT_SHA
}
})
]
}) מעקב OpenTelemetry Handler
לנראות מתארחת עצמית עם Jaeger/Tempo, אנו משתמשים בתוסף שיוצר span עבור כל handler. זה מספק תמונה מלאה של הבקשה, כולל קריאות למסד נתונים. OpenTelemetry הוא חינמי וקוד פתוח; רק עלויות אירוח עבור הקולטן (~$30-50 לחודש).
השוואה: Apollo Studio לעומת GraphQL Hive
| קריטריון | Apollo Studio | GraphQL Hive |
|---|---|---|
| אירוח | ענן (SaaS) | מתארח עצמית (Docker) |
| שימוש בשדות | כן, פירוט לפי לקוח | כן, דרך דיווח שימוש |
| בדיקות סכמה | כן, אינטגרציית CI | כן, דרך @graphql-inspector |
| שמירת נתונים | 90 יום כברירת מחדל | ניתן להגדרה (עד שנתיים) |
| עלות | חינם לקטן, בתשלום לארגונים ($99 לחודש) | קוד פתוח, אירוח בתשלום אופציונלי |
| מיקום נתונים | אזורי AWS | שליטה מלאה |
הפתרון הענני של Apollo מהיר פי 5 להקמה מאשר בניית ניטור מותאם אישית, בעוד Hive מציע חיסכון בעלויות פי 2 עבור צוותים גדולים. שילוב של OpenTelemetry ו-Apollo Studio מספק מעקב מקיף פי 2 מאשר Apollo Studio לבדו.
מדדי ניטור טיפוסיים
| מדד | ערך יעד | מקור |
|---|---|---|
| אחזור p95 | < 500 אלפיות השנייה | Apollo/Hive |
| שיעור שגיאות | < 1% | Apollo/Hive |
| שאילתות N+1 | 0 | OpenTelemetry |
| תאימות סכמה | 100% | בדיקות סכמה |
עם ניטור במקום, אתה מקבל התראות על שינויי סכמה וניטור מלא של API GraphQL, כולל מעקב אחר אחזור p95.
איך לבחור בין Apollo Studio ו-GraphQL Hive?
אם אתה צריך פתרון ענן מהיר ללא תקורה ניהולית — בחר בפלטפורמת Apollo Studio. אם יש לך דרישות מיקום נתונים או תקציב גדול — בחר ב-Hive. אנחנו עוזרים בבחירה בשלב הבדיקה.
למה להוסיף OpenTelemetry בנפרד?
OpenTelemetry מספק מעקב מלא של בקשות, כולל קריאות ל-API של צד שלישי ומסדי נתונים. Apollo Studio/Hive רואים רק את שכבת ה-GraphQL. שילוב של שניהם נותן נראות של 100%. זה גם עוזר לזהות השפעה על Core Web Vitals על ידי אופטימיזציה של TTFB.
דוגמה: איך OpenTelemetry הציל ייצור
לקוח התלונן על תגובות איטיות, אבל מדדי Apollo Studio לא הראו בעיות. OpenTelemetry גילה ש-handler אחד ביצע 200 בקשות MongoDB במקום אחת בגלל dataloader חסר. תיקון זה הפחית את האחזור פי 4.
טעויות נפוצות בהגדרה
- שיעור דגימה נמוך מדי (מתחת ל-1%) — p99 לא אמין סטטיסטית.
- אין סינון של נתונים רגישים — דליפת אישורים דרך מדדים.
- התעלמות מהתראות על שינויי סכמה במהלך deploy — סיכון לשינויים שוברים.
תהליך ההגדרה שלנו
- ניתוח: בדיקת סכמה נוכחית, זיהוי צווארי בקבוק באמצעות
// Установка npm install @apollo/server @apollo/server/plugin/usageReporting import { ApolloServer } from '@apollo/server' import { ApolloServerPluginUsageReporting } from '@apollo/server/plugin/usageReporting' const server = new ApolloServer({ typeDefs, resolvers, plugins: [ ApolloServerPluginUsageReporting({ // APOLLO_KEY из переменных среды sendVariableValues: { // Не отправлять чувствительные переменные exceptNames: ['password', 'token', 'secret'] }, sendHeaders: { exceptNames: ['Authorization', 'Cookie'] }, // Выборка трассировок (100% дорого, 10% достаточно для анализа) fieldLevelInstrumentation: 0.1 }) ] })או# Docker Compose для GraphQL Hive docker run -d \ -e HIVE_TOKEN=your-token \ -e TARGET=your-org/your-project/production \ ghcr.io/kamilkisiela/graphql-hive/cli:latest. - עיצוב: בחירת כלי (Apollo Studio, Hive, או OpenTelemetry), עיצוב מדדים (p50/p95/p99, שיעור שגיאות, מדדי Prometheus).
- יישום: אינטגרציית תוסף, הגדרת מעקב resolver, פרסום סכמה.
- בדיקה: אימות על staging, השוואת מדדים לפני/אחרי. בפרויקט אחד, הפחתנו את האחזור באחוזון ה-95 מ-2 שניות ל-300 אלפיות השנייה.
- Deploy והתראות: הגדרת הודעות ב-Slack/Telegram לירידה בביצועים (לדוגמה, אחזור p95 > 500 אלפיות השנייה), כולל לוחות מחוונים של Grafana.
המהנדסים המוסמכים שלנו מבטיחים פתרון חזק.
מה כלול וציר זמן
הגדרת ניטור GraphQL אורכת 2 עד 5 ימי עסקים בהתאם למורכבות הסכמה והפתרון הנבחר. כולל: חיבור Apollo Studio או GraphQL Hive עם פרסום סכמה, מעקב resolver דרך OpenTelemetry (Jaeger/Tempo), מדדי Prometheus + לוח מחוונים של Grafana עם פאנלים "הפעולות האיטיות ביותר", "שיעור שגיאות", "ה-resolvers האיטיים ביותר", הגדרת התראות ובדיקות תאימות לאחור אוטומטיות, ותיעוד תפעולי.
עלות ההגדרה מתחילה ב-$2,000, ולקוחות בדרך כלל חוסכים $500–$1,000 בחודש בעלויות תפעול. חיסכון שנתי יכול להגיע ל-$12,000. השקעה בניטור מחזירה את עצמה בממוצע תוך 2-3 חודשים — צמצום זמן מציאת בעיות ומניעת תקלות חוסך תקציבים. השירות שלנו עולה $2,000 ובדרך כלל חוסך $500-$1,000 בחודש, ומשיג ROI תוך 2-3 חודשים. צור קשר כדי להגדיר ניטור לפרויקט שלך. קבל ייעוץ על בחירת כלים ואינטגרציה מהירה.







