אתם צופים במסמכי התיעוד של Apigee ושל Apigee Hybrid.
אין מאמרי עזרה מקבילים בנושא הזה ב-
Apigee Edge.
תיאור הבעיה
תרחיש נפוץ הוא שליחת יומנים של Apigee API אל Cloud Logging. בדרך כלל, זה נעשה באמצעות מדיניות MessageLogging או מדיניות ServiceCallout. בשני המקרים, Apigee משתמש ב-Cloud Logging API כדי לכתוב את היומנים.
במקרים מסוימים, יכול להיות שלא תראו את יומני ה-API של Apigee ב-Cloud Logging.
הודעת השגיאה
לא מוצגת הודעת שגיאה.
סיבות אפשריות
| מטרה | תיאור | הוראות לפתרון בעיות שרלוונטיות ל |
|---|---|---|
| Cloud Logging API לא מופעל | מוודאים שהפעלתם את Cloud Logging API בפרויקט של הארגון שלכם ב-Apigee. Google Cloud | Apigee ו-Apigee Hybrid |
| IAM Service Account Credentials API לא מופעל | מוודאים שהפעלתם את IAM Service Account Credentials API בפרויקט של ארגון Apigee. Google Cloud | Apigee ו-Apigee Hybrid |
| חשבון שירות של שרת proxy שהוגדר בצורה שגויה | יכול להיות שחשבון השירות שבו נעשה שימוש בזמן הפריסה (Apigee) או בהגדרת זמן הריצה (Apigee Hybrid) נמחק או הוגדר בצורה שגויה. | Apigee ו-Apigee Hybrid |
| שם פרויקט שגוי בהגדרת המדיניות | שם הפרויקט בהגדרת המדיניות לא זהה לשם שמשויך לארגון Apigee. | Apigee ו-Apigee Hybrid |
| חסרים תפקידים או הרשאות לחשבון השירות של זמן הריצה | ב-Apigee hybrid, מוודאים שלחשבון השירות של זמן הריצה יש את התפקיד Service Account Token Creator. הפעולה הזו נדרשת כדי להשתמש באימות של Google. | Apigee Hybrid |
| גודל רשומה ביומן חורג מהמגבלה המותרת של Cloud Logging | ב-Cloud Logging יש מגבלה על גודל הרשומה של 256KB, ואי אפשר לשנות אותה. | Apigee ו-Apigee Hybrid |
| מיצוי המכסה של בקשות כתיבה לדקה ל-Cloud Logging API | חשוב לוודא שלא חורגים מהמכסה של בקשות כתיבה לדקה עבור Cloud Logging API בפרויקט בענן של Google. | Apigee ו-Apigee Hybrid |
הסיבה: Cloud Logging API לא מופעל
אבחון
מוודאים ש-Cloud Logging API מופעל. הוראות להצגת רשימת ממשקי ה-API והשירותים המופעלים במסוף Google Cloud מופיעות במאמר בנושא הצגת רשימת השירותים המופעלים.
רזולוציה
אם Cloud Logging API לא מופעל, צריך להפעיל אותו באמצעות השלבים שמפורטים במאמר הפעלת שירותים. יכול להיות שיחלפו כמה דקות עד שה-API יופעל.
אם לא הצלחתם לפתור את הבעיה שבה היומנים לא מוצגים ב-Cloud Logging כי Cloud Logging API לא הופעל, כדאי לעיין במאמר בנושא איסוף מידע לאבחון.
הגורם: לא הופעל IAM Service Account Credentials API
אבחון
מוודאים ש-IAM Service Account Credentials API מופעל. הוראות להצגת רשימת ממשקי ה-API והשירותים המופעלים במסוף Google Cloud מופיעות במאמר בנושא הצגת רשימת השירותים המופעלים.
רזולוציה
אם IAM Service Account Credentials API לא מופעל, מפעילים אותו באמצעות השלבים שמפורטים במאמר הפעלת שירותים. יכול להיות שיחלפו כמה דקות עד שה-API יופעל.
אם לא הצלחתם לפתור את הבעיה שבה לא רואים יומנים ב-Cloud Logging כי IAM Service Account Credentials API לא מופעל, כדאי לעיין במאמר מידע אבחוני שצריך לאסוף.
הסיבה: חשבון השירות של ה-proxy לא מוגדר בצורה נכונה
אבחון
Apigee
- מוצאים את השם של חשבון השירות.
- באמצעות ממשק המשתמש של Apigee:
- לוחצים על Develop > API Proxies (פיתוח > שרתי proxy של API) ואז לוחצים על שם של שרת proxy. לדוגמה, TurboBooks.
-
השם של חשבון השירות מוצג בקטע פריסות.
-
מבצעים את הקריאה הבאה ל-Apigee API:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/PROXY_NAME/revisions/REVISION_NUMBER/deployments"
מחליפים את מה שכתוב בשדות הבאים:
- ORG_NAME: שם הארגון. לדוגמה,
apigee-example-org. - ENV_NAME: שם הסביבה. לדוגמה,
myenv. - PROXY_NAME: שם השרת הפרוקסי. לדוגמה,
TurboBooks. - REVISION_NUMBER: מספר הגרסה. לדוגמה,
4.
לדוגמה:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/apigee-example-org/environments/myenv/apis/TurboBooks/revisions/4/deployments"
מוחזרת תשובה שדומה לדוגמה הבאה:
{ "environment": "myenv", "apiProxy": "TurboBooks", "revision": "4", "deployStartTime": "1687408163394", "state": "READY", "instances": [ { "instance": "apiginstance", "deployedRevisions": [ { "revision": "4", "percentage": 100 } . . . . "serviceAccount": "projects/-/serviceAccounts/envsa-79@apigee-example-org.iam.gserviceaccount.com" }
כאשר
serviceAccountהוא חשבון השירות שמשויך ל-proxy ל-API. - ORG_NAME: שם הארגון. לדוגמה,
- באמצעות ממשק המשתמש של Apigee:
- בודקים את הפרטים הבאים לגבי חשבון השירות של ה-proxy:
-
חשבון השירות הזה צריך להיות באותו פרויקט Google Cloud שבו השתמשתם כדי ליצור את הארגון שלכם ב-Apigee. לדוגמה,
apigee-example-org. -
למשתמש שמבצע את הפריסה של ה-proxy יש את ההרשאה
iam.serviceAccounts.actAsבחשבון השירות הזה.- רשימת התפקידים מופיעה במאמר תפקידים של חשבונות שירות.
- הוראות לצפייה בתפקידים של משתמש ספציפי מפורטות במאמר בנושא צפייה בגישה הנוכחית.
-
לחשבון השירות של ה-proxy יש את ההרשאות הנדרשות כדי להפעיל את שירות Cloud Logging.
- רשימת התפקידים מופיעה במאמר תפקידים ב-Logging.
- הוראות להצגת ההרשאות של חשבון השירות של ה-proxy מופיעות במאמר הצגת הגישה הנוכחית.
-
חשבון השירות הזה צריך להיות באותו פרויקט Google Cloud שבו השתמשתם כדי ליצור את הארגון שלכם ב-Apigee. לדוגמה,
Apigee Hybrid
ב-Apigee hybrid, בנוסף לשלבים שמפורטים בApigee, פותחים את הקובץ overrides.yaml ומוודאים שצוין חשבון שירות בכל סביבה שנדרש בה אימות של Google.
לדוגמה:
envs:
- name: "ENVIRONMENT_NAME"
serviceAccountPaths:
runtime: "KEY_FILE_PATH"מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: שם הסביבה. לדוגמה:
myenv. - KEY_FILE_PATH: הנתיב לקובץ המפתח של חשבון השירות של זמן הריצה. בדרך כלל יוצרים את חשבון השירות במהלך ההתקנה, כמו שמוסבר במאמר יצירת חשבונות שירות.
רזולוציה
- אם חשבון השירות לא נמצא באותו Google Cloud פרויקט שבו השתמשתם כדי ליצור את הארגון שלכם ב-Apigee, צריך ליצור חשבון שירות באותו Google Cloud פרויקט ולהשתמש בו. המידע הזה מופיע גם במאמר שימוש באימות של Google.
-
אם למשתמש שמבצע את הפריסה של ה-proxy אין את ההרשאה
iam.serviceAccounts.actAsבחשבון השירות הזה, אפשר לעיין במאמר בנושא הקצאת תפקיד יחיד. - אם לחשבון השירות של ה-proxy אין את ההרשאות הנדרשות לקריאה לשירות Cloud Logging, כדאי לעיין במאמר בנושא הקצאת תפקיד יחיד.
אם השלבים במאמר הזה לא פותרים את הבעיה שבה חשבון השירות של ה-proxy מוגדר בצורה לא נכונה ב-Apigee וב-Apigee Hybrid, אפשר לעיין במאמר בנושא איסוף מידע לצורך אבחון.
הסיבה: שם הפרויקט בהגדרות המדיניות שגוי
אבחון
אם אתם משתמשים ב מדיניות MessageLogging כדי לשלוח יומנים ל-Cloud Logging:
- בממשק המשתמש של Apigee, לוחצים על Develop (פיתוח) > API Proxies (proxy ל-API) > API proxy name (שם ה-proxy ל-API) > Develop (פיתוח).
-
בחלונית Code, מאתרים את הרכיב
<CloudLogging>. -
מוודאים שהערך
<LogName>הוא שם הפרויקט הנכון:<CloudLogging> <LogName>projects/PROJECT_ID/logs/LOG_ID</LogName> </CloudLogging>
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . לדוגמה:
apigee-example-org. - LOG_ID: מזהה היומן ב-Cloud Logging. לדוגמה:
apigee-logs.
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . לדוגמה:
רזולוציה
אם הערך ברכיב <LogName> לא נכון, צריך לעדכן אותו לערך הנכון.
אם השלבים במאמר הזה לא פותרים את הבעיה, אפשר לעיין במאמר בנושא איסוף מידע לצורך אבחון.
הסיבה: חסרים תפקידים או הרשאות לחשבון השירות של זמן הריצה
אבחון
מוודאים שסביבת זמן הריצה יכולה להתחזות לחשבון השירות של ה-proxy.
מריצים את הפקודה הבאה של gcloud כדי לוודא שלחשבון השירות של זמן הריצה יש את התפקיד iam.serviceAccountTokenCreator בחשבון השירות של ה-proxy:
gcloud iam service-accounts get-iam-policy PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
- PROXY_SA_NAME: השם של חשבון השירות של ה-proxy.
לדוגמה,
envsa-79. - PROJECT_ID: מזהה הפרויקט ב- Google Cloud . לדוגמה:
apigee-example-org.
מוחזרת תשובה שדומה לדוגמה הבאה:
- members: - serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com role: roles/iam.serviceAccountTokenCreator
מחליפים את מה שכתוב בשדות הבאים:
RUNTIME_SA_NAME: המזהה של חשבון השירות של זמן הריצה.
לדוגמה, apigee-runtime.
לדוגמה:
gcloud iam service-accounts get-iam-policy envsa-79@apigee-example-org.iam.gserviceaccount.com
bindings:
- members:
- user:222larabrown@gmail.com
role: roles/iam.serviceAccountAdmin
- members:
- serviceAccount:apigee-runtime@apigee-example-org.iam.gserviceaccount.com
role: roles/iam.serviceAccountTokenCreator
- members:
- user:222larabrown@gmail.com
role: roles/iam.serviceAccountUser
etag: BwX-shcrL3o=
version: 1אם התפקיד iam.serviceAccountTokenCreator והחבר הצפוי לא מופיעים בפלט, צריך לפעול לפי השלבים שבקטע פתרון כדי להעניק את התפקידים הנכונים.
רזולוציה
כדי להקצות לחשבון השירות של זמן הריצה את התפקיד iam.serviceAccountTokenCreator לחשבון השירות של שירות ה-proxy, מריצים את
הפקודה הבאה של gcloud:
gcloud iam service-accounts add-iam-policy-binding \ PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
מחליפים את מה שכתוב בשדות הבאים:
-
PROXY_SA_NAME: השם של חשבון השירות של ה-proxy. לדוגמה,
envsa-79. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . לדוגמה,
apigee-example-org. -
RUNTIME_SA_NAME: המזהה של חשבון השירות של זמן הריצה. לדוגמה,
apigee-runtime.
אם השלבים במאמר הזה לא פותרים את הבעיה, אפשר לעיין במאמר בנושא איסוף מידע לצורך אבחון.
הסיבה: גודל רשומת היומן חורג ממגבלת הרישום המותרת
אבחון
אם לא רואים חלק מהיומנים ב-Cloud Logging אחרי שמוודאים שהסיבות האחרות שמתוארות במסמך הזה לא רלוונטיות, יכול להיות שהגודל של חלק מרישומי היומן שנשלחים מ-Apigee חורג מ-256KB, שהיא המגבלה הקשיחה לגודל של רישום ביומן ב-Cloud Logging. מידע נוסף זמין במאמר בנושא רישום מגבלות השימוש.
רזולוציה
זוהי מגבלה שלא ניתן להגדיר ב-Cloud Logging, והפתרון היחיד שזמין כרגע הוא לשמור על גודל רשומת היומן שנשלחת מ-Apigee מתחת ל-256KB. אם אתם רושמים מטען ייעודי (payload) שיש לו פוטנציאל לחרוג מהמגבלה הזו, אל תרשמו את המטען הייעודי הזה, או שתבינו שחלק מהעסקאות לא יירשמו כשהמגבלה תושג.
אם השלבים במאמר הזה לא פותרים את הבעיה, אפשר לעיין במאמר בנושא איסוף מידע לצורך אבחון.
הסיבה: חריגה ממכסת בקשות הכתיבה לדקה ל-Cloud Logging API
אבחון
לפעמים לקוחות רואים את הבקשה בסשן הניפוי באגים, אבל באותו הזמן הבקשה לא נרשמת בכלי לבדיקת יומנים, למרות שהיא מופיעה ביומני איזון העומסים.
יכול להיות שהסיבה לאובדן ההודעות היא שמיציתם את מכסת ההודעות בפרויקט. ב-Cloud Logging API יש מגבלת קצב של 120,000 בקשות כתיבה לדקה. חריגה מהמכסה הזו עלולה לגרום להודעות לא להגיע ליעד.מידע נוסף זמין במאמר איך רואים ומנהלים את המכסות.
אפשר להגדיל את המכסות האלה בתוך Google Cloud console . הלקוח יכול לעשות זאת בעצמו על ידי ביצוע ההוראות לשינוי המכסות.
רזולוציה
כדי להגדיל את המכסה, פועלים לפי השלבים הבאים:
- בדף Quotas מסמנים את תיבת הסימון לצד Cloud Logging API ולוחצים על Edit quotas.
אם מופיעה השגיאה
Edit is not allowed for this quota, אפשר לפנות אל Google Cloud Customer Care כדי לבקש שינויים במכסה. שימו לב גם שצריך להפעיל את החיוב בפרויקט בענן ב-Google Cloud כדי לסמן את תיבות הסימון. - בחלונית Quota changes, בוחרים את השירות כדי להרחיב את התצוגה, ואז ממלאים את השדות New limit ו-Request description. לוחצים על הבא.
- ממלאים את הטופס בחלונית פרטי יצירת קשר ולוחצים על שליחת בקשה.
מידע נוסף זמין במאמר מכסות ומגבלות .
צריך לאסוף נתוני אבחון
אם הבעיה נמשכת גם אחרי שמבצעים את ההוראות שלמעלה, צריך לאסוף את נתוני האבחון הבאים ואז לפנות אל שירות Customer Care של Google Cloud:
- ארגון Apigee.
- הסביבה וה-proxy ל-API שבהם נתקלתם בבעיה.
- סשן ניפוי באגים שהורד (הוא יכלול את כל המידע שלמעלה).
- השם הספציפי של כלל המדיניות ב-proxy ל-API ששולח יומנים אל Cloud Logging.
- ב-Apigee Hybrid: הקובץ
overrides.yaml.