אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
תיאור הבעיה
נתוני Analytics חסרים בממשק המשתמש של Edge כי שרת Qpidd לא מעביר הודעות Analytics אל PostgreSQL. ב-Edge, הרכיב edge-qpid-server תואם לשרת Qpidd.
מערכת Qpidd מתחזקת שני תורים לכל קבוצת ניתוח נתונים:
ax-q-axgroup001-consumer-group-001
בתור הזה נמצאות הודעות ניתוח שנשלחות ממעבדי ההודעות ומנתבי ההודעות. ההודעות נמשכות מכאן על ידי
edge-qpid-serverשמנתח את ההודעות ומוסיף אותן ל-PostgreSQL. אחרי שההודעות עוברות עיבוד, הן מוסרות מהתור.ax-q-axgroup001-consumer-group-001-dl
התור הזה הוא תור של הודעות שלא ניתן להעביר. הוא משמש כיעד להודעות ש
edge-qpid-serverלא הצליח לעבד ולכן הוא לא רוצה יותר לקבל. השדה הזה מתמלא בדרך כלל כשחורגים ממספר המשלוחים המקסימלי, או אם PostgreSQL דחה הוספה של נתונים חדשים בגלל שגיאות בזמן ריצה.
הודעת השגיאה
יכול להיות שמקור הבעיה הוא שגיאות שונות בזמן ריצה ברכיב edge-qpid-server. בדרך כלל, אם edge-qpid-server מקבל שגיאת זמן ריצה מ-PostgreSQL, הוא יוצר את תור ההודעות שלא נמסרו אם הוא עדיין לא קיים, ואז שולח אליו את ההודעה הבאה:
yyyy-MM-dd HH:mm:ss,SSS ax-q-axgroup001-consumer-group-001-persistpool-thread-6 WARN c.a.a.m.MessageConsumer - MessageConsumer.process() : Sending message batch to the DLQ.
סיבות אפשריות
| סיבה | תיאור | הוראות לפתרון בעיות שרלוונטיות ל |
|---|---|---|
| הודעות תקועות בתור של הודעות שלא ניתן להעביר (dead letter queue) של qpidd | edge-qpid-server לא הצליח להבין הודעות שהוא קרא מ-Qpidd broker או שלא הצליח לשמור הודעות ב-PostgreSQL.
|
משתמשים ב-Edge Private Cloud |
שלבים נפוצים לאבחון
מריצים את הפקודה הבאה כדי לראות את הנתונים הסטטיסטיים של תור Qpidd:
qpid-stat -q
הפלט מחזיר את קבוצת התורים שרשומים בברוקר. אם התור עם השם שמסתיים ב-dl מכיל הודעות, סימן שיש הודעות תקועות בתור של הודעות שלא ניתן להעביר.
Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ======================================================================================================================== ax-q-axgroup-001-consumer-group-001 Y 0 185 185 0 13.8m 13.8m 6 2 ax-q-axgroup-001-consumer-group-001-dl Y 0 70 70 0 3.9m 3.9m 0 2
הסיבה: הודעות תקועות בתור של הודעות שלא ניתן למסור ב-qpidd
אבחון
המצב הזה יכול לקרות בתרחישים הבאים:
- בעבר בוצע שדרוג, שבמהלכו PostgreSQL לא היה זמין.
- השבתה זמנית של PostgreSQL בגלל בעיות ברשת.
- הכלי
edge-qpid-serverניסה לשלוח הודעה ל-PostgreSQL, אבל PostgreSQL החזיר שגיאת זמן ריצה.
רזולוציה
רושמים את השמות של התורים מתוך שלבי האבחון הנפוצים. לדוגמה:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
מריצים את הפקודה
qpid-toolכדי להיכנס להנחיה אינטראקטיבית שלqpid:qpid-tool
הפקודה הזו מחזירה את הפלט הבא:
Management Tool for QPID qpid:
מריצים את הפקודה
list brokerכדי לקבל רשימה של ברוקרים פעילים:list broker
הפקודה הזו מחזירה את הפלט הבא:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
בעמודה
IDמצוין המזהה של הברוקר.חשוב לזכור את המזהה של הברוקר. בדוגמה, הערך הוא 125.
מריצים את הפקודה הבאה כדי להעביר את ההודעות מתור ההודעות שלא נמסרו חזרה לתור בפועל:
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}הפקודה הזו מחזירה את הפלט הבא:
OK (0) - {}אם לא מוצגת פלט, לא היה מה לעשות, כלומר לא היו הודעות להעברה. אם לא רואים את
OK(0), צריך לפנות אל התמיכה של Apigee Edge.יוצאים מהטרמינל של qpid-tool.
quit
ממתינים 5 דקות ואז מריצים שוב את שלבי האבחון שמפורטים במאמר שלבי אבחון נפוצים. מוודאים שההודעות בתור בפועל עוברות עיבוד, ושהמספר של הודעות ה-dead letter נשאר 0.
אם הבעיה נמשכת, עוברים לקטע הבא.
איסוף חובה של נתוני אבחון
אם הבעיה נמשכת גם אחרי שמבצעים את ההוראות שלמעלה, צריך לאסוף את פרטי האבחון הבאים. צריך ליצור קשר עם התמיכה של Apigee Edge ולשתף איתם את הפרטים:
- יומני Qpidd:
/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log - יומני Postgresql:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log - יומנים של שרת Edge-qpid:
/opt/apigee/var/log/edge-qpid-server/logs/system.log - יומני שרת Edge-postgres:
/opt/apigee/var/log/edge-postgres-server/logs/system.log נתונים סטטיסטיים של תור Qpidd:
qpid-stat -q
קבוצת Analytics שמוחזרת על ידי פקודת ה-curl הבאה:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax