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

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

תיאור הבעיה

חסרים נתוני Analytics בממשק המשתמש של Edge כי שרת ה-Qpidd לא מעביר הודעות של ניתוח נתונים ל-PostgreSQL. ב-Edge, הרכיב edge-qpid-server תואם לשרת ה-Qpidd.

ב-Qpidd נשמרים שני תורים לכל קבוצה ב-Analytics:

  • 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.

    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-server: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • יומני Edge-postgres-server:/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