נתוני Analytics תקועים בתור של מכתבים מתים ב-Kpidd

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

תיאור הבעיה

נתוני Analytics חסרים בממשק המשתמש של Edge בגלל ששרת ה-Qpidd לא מעביר הודעות ניתוח נתונים ל-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.

סיבות אפשריות

סיבה התיאור הוראות לפתרון בעיות הרלוונטיות
הודעות תקועות בתור של אותיות לא פעילות ב-qpidd ל-edge-qpid-server לא הייתה אפשרות להבין הודעות שנקראו מהמתווך Qpidd, או שלא הייתה לו אפשרות לשמור הודעות ב-PostgreSQL. משתמשי ענן פרטי של Edge

שלבים נפוצים לאבחון

מריצים את הפקודה הבאה כדי להציג את הנתונים הסטטיסטיים של תור 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

אבחון

התנאי הזה יכול להתרחש במקרים הבאים:

  1. שדרוג בוצע בעבר, ובמהלך הזמן הזה PostgreSQL היה מושבת.
  2. הפסקה זמנית בשירות של PostgreSQL עקב בעיות ברשת.
  3. edge-qpid-server ניסה לשלוח הודעה ל-PostgreSQL אבל ה-PostgreSQL החזיר שגיאת זמן ריצה.

רזולוציה

  1. רושמים את שמות התורים בשלבים הנפוצים לאבחון בעיות. לדוגמה:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. מריצים את הפקודה qpid-tool כדי להזין הנחיה qpid אינטראקטיבית:

    qpid-tool

    הפקודה הזו מחזירה את הפקודה הבאה:

    Management Tool for QPID
    qpid:
  3. מריצים את הפקודה list broker כדי לקבל רשימה של המתווכים הפעילים:

    list broker

    הפקודה הזו מחזירה את הפקודה הבאה:

    Object Summary:
    ID   Created   Destroyed  Index
    =======================================
    125  21:00:00  -          amqp-broker

    כאשר העמודה ID מציינת את המזהה של המתווך.

  4. חשוב לשים לב למזהה של המתווך. בדוגמה הבאה הוא 125.

  5. מריצים את הפקודה הבאה כדי להעביר את ההודעות מתור האותיות המתות בחזרה לתור בפועל:

    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.

  6. יוצאים מהטרמינל של qpid-tool.

    quit
  7. ממתינים 5 דקות ואז מפעילים שוב את שלבי האבחון מהשלבים הנפוצים לאבחון. ודאו שההודעות שבתור בפועל מעובדות ושהמספר של ההודעות המתות נותר 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