הדף הזה רלוונטי ל-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 בפרויקט Google Cloudשל ארגון Apigee. | 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 Cloud. | 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.
-
השם של Service Account מוצג בקטע Deployments.
-
מבצעים את הקריאה הבאה ל-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: שם ה-proxy. לדוגמה,
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 והמשתמש הרצוי לא מופיעים בפלט, צריך לפעול לפי השלבים שבקטע פתרון כדי להעניק את התפקידים הנכונים.
רזולוציה
כדי להקצות לחשבון השירות של שרת ה-proxy את התפקיד iam.serviceAccountTokenCreator לחשבון השירות של זמן הריצה, מריצים את
הפקודה הבאה של 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. למידע נוסף, אפשר לעיין במאמר מגבלות השימוש ב-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 (בקשה). לוחצים על הבא.
- ממלאים את הטופס בחלונית פרטי יצירת קשר ולוחצים על שליחת בקשה.
מידע נוסף זמין במאמר מכסות ומגבלות .
צריך לאסוף פרטי אבחון
אם הבעיה נמשכת גם אחרי שמבצעים את ההוראות שלמעלה, צריך לאסוף את נתוני האבחון הבאים ואז לפנות אל Cloud Customer Care של Google:
- ארגון Apigee.
- הסביבה וה-proxy ל-API שבהם נתקלתם בבעיה.
- סשן ניפוי באגים שהורד (הוא יכלול את כל המידע שלמעלה).
- השם הספציפי של כלל המדיניות ב-proxy ל-API ששולח יומנים אל Cloud Logging.
- ב-Apigee Hybrid: הקובץ
overrides.yaml.