אתם צופים במסמכי התיעוד של Apigee ושל Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge.
כשמספקים מידע מפורט ונדרש בבקשת התמיכה, קל יותר לצוות התמיכה של Google Cloud להגיב במהירות וביעילות. כשחסרים פרטים חיוניים בבקשת התמיכה, אנחנו צריכים לבקש עוד מידע, ולפעמים זה כרוך בהתכתבות הלוך ושוב כמה פעמים. התהליך הזה לוקח יותר זמן ועלול לגרום לעיכובים בפתרון הבעיות. במדריך הזה לשיטות מומלצות נסביר איזה מידע דרוש לנו כדי שנוכל לטפל במהירות בבקשות לתמיכה טכנית.
תיאור הבעיה
בתיאור הבעיה צריך להסביר מה קרה לעומת מה שציפיתם שיקרה, וגם מתי ואיך זה קרה. בקשת תמיכה טובה צריכה לכלול את הפרטים החשובים הבאים לגבי כל אחד ממוצרי Apigee:
| Key information | תיאור | Apigee ב-Google Cloud | Apigee Hybrid |
|---|---|---|---|
| מוצר | המוצר הספציפי של Apigee שבו נצפתה הבעיה, כולל פרטי הגרסה אם רלוונטי. |
|
|
| פרטי הבעיה | תיאור ברור ומפורט של הבעיה, כולל הודעת השגיאה המלאה, אם יש כזו. |
|
|
| שעה | חותמת הזמן הספציפית שבה הבעיה התחילה וכמה זמן היא נמשכה. |
|
|
| הגדרה | מידע מפורט על המקום שבו הבעיה מתרחשת. |
|
|
בחלקים הבאים נרחיב על כך בפירוט.
מוצר
יש מוצרים שונים של Apigee, Apigee ב-Google Cloud ו-Apigee hybrid, ולכן אנחנו צריכים מידע ספציפי לגבי המוצר שבו הייתה הבעיה.
בטבלה הבאה מופיעות כמה דוגמאות למידע מלא בעמודה DOs ולמידע חלקי בעמודה DON'Ts:
| DOs | מה לא לעשות |
|---|---|
הפריסה של ה-proxy ל-API OAuth2 נכשלה בארגון Apigee on Google Cloud ... |
הפריסה של proxy ל-API נכשלה (אנחנו צריכים לדעת באיזה מוצר של Apigee נתקלת בבעיה). |
קיבלנו את השגיאה הבאה כשניסינו לגשת ל-Cassandra באמצעות
cqlsh ב-Apigee hybrid גרסה 1.3 ... |
אין לנו גישה ל-Cassandra באמצעות (חסרים פרטי הגרסה ההיברידית) |
פרטי הבעיה
צריך לספק מידע מדויק על הבעיה, כולל הודעת השגיאה (אם יש כזו) וההתנהגות הצפויה וההתנהגות בפועל.
בטבלה הבאה מופיעות כמה דוגמאות למידע מלא בעמודה DOs ולמידע חלקי בעמודה DON'Ts:
| DOs | מה לא לעשות |
|---|---|
|
שרת ה-proxy החדש |
שרת proxy חדש של (שם ה-proxy לא ידוע. לא ברור אם ה-proxy מחזיר שגיאה או תגובה לא צפויה כלשהי). |
|
הלקוחות שלנו מקבלים שגיאות |
הלקוחות שלנו מקבלים שגיאות
(העברת |
שעה
הזמן הוא נתון חשוב מאוד. חשוב שמהנדס התמיכה ידע מתי הבחנת בבעיה בפעם הראשונה, כמה זמן היא נמשכה ואם היא עדיין מתרחשת.
יכול להיות שמהנדס התמיכה שיטפל בבעיה יהיה באזור זמן שונה משלכם, לכן אמירות יחסיות לגבי זמן יקשו עליו לאבחן את הבעיה. לכן, מומלץ להשתמש בפורמט ISO 8601 לחותמת התאריך והשעה כדי לספק את פרטי הזמן המדויקים שבהם נצפתה הבעיה.
בטבלה הבאה מופיעות דוגמאות לזמן ולמשך מדויקים שבהם הבעיה התרחשה בעמודה מה כן, ודוגמאות למידע מעורפל או לא ברור לגבי הזמן שבו הבעיה התרחשה בעמודה מה לא:
| DOs | מה לא לעשות |
|---|---|
נצפה מספר גדול של 503s אתמול בין
2020-11-06 17:30 PDT לבין 2020-11-06 17:35 PDT... |
מספר עצום של (אנחנו נאלצים להשתמש בתאריך המשתמע, וגם לא ברור באיזו אזור זמן הבעיה הזו נצפתה). |
| נצפו זמני אחזור ארוכים בשרתי proxy של ה-API הבאים מ-2020-11-09 15:30 IST עד 2020-11-09 18:10 IST ... |
בשבוע שעבר נצפו זמני אחזור ארוכים בחלק משרתי ה-API Proxy. (לא ברור באיזה יום ובמשך כמה זמן הבעיה הזו נצפתה בשבוע האחרון). |
הגדרה
אנחנו צריכים לדעת פרטים על המקום המדויק שבו הבעיה מופיעה. בהתאם למוצר שבו אתם משתמשים, אנחנו צריכים את הפרטים הבאים:
- אם אתם משתמשים ב-Apigee ב-Google Cloud, יכול להיות שיש לכם יותר מארגון אחד, ולכן אנחנו צריכים לדעת את הארגון הספציפי ופרטים נוספים שקשורים לבעיה שזיהיתם:
- שמות הארגון והסביבה
- שם ה-proxy ל-API ומספרי הגרסאות (לגבי כשלים בבקשות ל-API)
- אם אתם משתמשים בהגדרה היברידית, יכול להיות שאתם משתמשים באחת מ פלטפורמות היברידיות רבות נתמכות ובטופולוגיות התקנה. לכן אנחנו צריכים לדעת באיזו פלטפורמה היברידית ובאיזו טופולוגיה אתם משתמשים, כולל פרטים כמו מספר מרכזי הנתונים והצמתים.
בטבלה הבאה מופיעות דוגמאות למידע מלא בעמודה DOs ולמידע חלקי בעמודה DON'Ts:
| DOs | מה לא לעשות |
|---|---|
|
פרטי ההגדרה של Apigee:
פרטי ה-API שנכשל:
שגיאה: |
מספר השגיאות עלה. (היא לא מספקת מידע על המוצר שבו נעשה שימוש, על התקופה שבה הבעיה נצפתה או על פרטי ההגדרה). |
ניפוי הבאגים נכשל עם השגיאה הבאה ב-Apigee Hybrid גרסה 1.3 שגיאה:
פרטי ההגדרה של Apigee Hybrid:
| ניפוי הבאגים נכשל ב-Apigee Hybrid. |
קבצים נלווים
כל קובץ נוסף שתוכלו לספק לנו וקשור לבעיה יעזור לנו לפתור אותה מהר יותר, כי נוכל להבין את ההתנהגות המדויקת שאתם רואים ולקבל תובנות נוספות לגביה.
בקטע הזה מתוארים כמה ארטיפקטים שימושיים שרלוונטיים לכל מוצרי Apigee:
פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) משותפים לכל מוצרי Apigee
הארטיפקטים הבאים שימושיים לכל מוצרי Apigee: Apigee ב-Google Cloud ו-Apigee hybrid:
| פריט מידע שנוצר בתהליך | תיאור |
|---|---|
| פלט של כלי לניפוי באגים | הפלט של כלי הניפוי מכיל מידע מפורט על בקשות ה-API שמועברות דרך מוצרי Apigee. האפשרות הזו שימושית לכל שגיאות זמן הריצה, כמו 4XX, 5XX ובעיות בזמן האחזור. |
| צילומי מסך | צילומי מסך עוזרים להעביר את ההקשר של ההתנהגות או השגיאה בפועל שנצפו. הוא יכול לעזור לכם לפתור שגיאות או בעיות שזיהיתם, למשל בממשק המשתמש או ב-Analytics. |
| HAR (Http ARchive) | קובץ HAR הוא קובץ שמתועד על ידי כלים של סשנים ב-HTTP לצורך ניפוי באגים שקשורים לממשק המשתמש. אפשר לצלם את המסך באמצעות דפדפנים כמו Chrome, Firefox או Internet Explorer. |
tcpdumps |
הכלי tcpdump מתעד חבילות TCP/IP שהועברו או התקבלו ברשת. האפשרות הזו שימושית לפתרון בעיות שקשורות לרשת, כמו כשלים בתהליך הלחיצה של TLS, שגיאות 502 ובעיות של זמן אחזור וכו'. |
פריטי מידע נוספים שנוצרו בתהליך פיתוח (Artifact) עבור סביבה היברידית
במקרה של פריסה היברידית, יכול להיות שנצטרך עוד קבצים שיעזרו לנו לאבחן את הבעיות מהר יותר.
| פריט מידע שנוצר בתהליך | תיאור |
|---|---|
| פלטפורמת Apigee Hybrid | מציינים את אחת מ
פלטפורמות ההיברידיות הנתמכות שבהן נעשה שימוש:
|
| גרסאות של Apigee Hybrid ושל רכיבים תלויים |
|
| הטופולוגיה של הרשת | תרשים טופולוגיית ההתקנה של Apigee שמתאר את ההגדרה ההיברידית, כולל כל מרכזי הנתונים, אשכולות Kubernetes, מרחבי השמות וה-Pods. |
| קובץ YAML של שינויים מברירת המחדל | קובץ overrides.yaml שמשמש בכל מרכז נתונים להתקנת מישור זמן הריצה של Apigee Hybrid.
|
| הסטטוס של הפריסה של Apigee Hybrid |
הפלט של הפקודות הבאות בכל מרכז נתונים או אשכול Kubernetes:
|
| יומני רכיבים של Apigee Hybrid |
צריך לספק קישורים ליומנים של Cloud Operations (StackDriver) עבור הרכיבים ההיברידיים או אפשר לאחזר את יומני הרכיבים של Apigee hybrid באמצעות הפקודות הבאות בכל מרכז נתונים או אשכול Kubernetes ולשתף אותם איתנו:
|
| תיאור של יומנים |
מידע מפורט על הפוד. זה שימושי במיוחד אם אתם נתקלים בבעיות כמו פודים שנתקעים במצב
|
| Cloud Monitoring |
|
Apigee Hybrid must-gather
אפשר גם להריץ את סקריפט Must-Gather על סמך הפקודות שמפורטות בהמשך.
###--- "kubectl config" commands to get the config details of the whole Apigee Hybrid cluster ---#### kubectl config get-clusters 2>&1 | tee /tmp/k_config_get_clusters_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl config get-contexts 2>&1 | tee /tmp/k_config_get_contexts_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl config get-users 2>&1 | tee /tmp/k_config_get_users_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl config view 2>&1 | tee /tmp/k_config_view_$(date +%Y.%m.%d_%H.%M.%S).txt ### --- Collect all details of all nodes in the Kubernetes cluster.---### kubectl describe node 2>&1 | tee /tmp/k_describe_node_$(date +%Y.%m.%d_%H.%M.%S).txt ###--- "kubectl get -A " commands to get CRD details for the whole Apigee Hybrid setup ---#### kubectl get clusterissuers -A -o wide 2>&1 | tee /tmp/k_get_clusterissuers_all$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get certificate -A -o wide 2>&1 | tee /tmp/k_get_certificate_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get certificaterequest -A -o wide 2>&1 | tee /tmp/k_get_certificaterequest_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get crd -A -o yaml 2>&1 | tee /tmp/k_get_crd_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ConfigMap -A 2>&1 | tee /tmp/k_get_ConfigMap_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ClusterRole -A -o wide 2>&1 | tee /tmp/k_get_clusterrole_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ClusterRoleBinding -A -o wide 2>&1 | tee /tmp/k_get_clusterrole_binding_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get Deployments -A -o wide >&1 | tee /tmp/k_get_deployments_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get events -A -o wide 2>&1 | tee /tmp/k_get_events_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get endpoints -A 2>&1 | tee /tmp/k_get_endpoints_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get issuers -A -o wide 2>&1 | tee /tmp/k_get_issuers_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get mutatingwebhookconfigurations 2>&1 | tee /tmp/k_get_mutatingwebhookconfigurations_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get nodes -o wide --show-labels 2>&1 | tee /tmp/k_get_nodes_labels_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ns 2>&1 | tee /tmp/k_get_namespace_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get PriorityClass -A -o wide 2>&1 | tee /tmp/k_get_PriorityClass_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get pv -A -o wide 2>&1 | tee /tmp/k_get_pv_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get pvc -A -o wide 2>&1 | tee /tmp/k_get_pvc_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get Role -A -o wide 2>&1 | tee /tmp/k_get_role_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get RoleBinding -A -o wide 2>&1 | tee /tmp/k_get_Role_Binding_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get replicaset -A -o wide 2>&1 | tee /tmp/k_get_replicaset_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get sa -A -o wide 2>&1 | tee /tmp/k_get_service_accounts_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get services -A -o wide 2>&1 | tee /tmp/k_get_services_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get svc -A 2>&1 | tee /tmp/k_get_svc_all$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get secrets -A 2>&1 | tee /tmp/k_get_secrets_all_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get validatingwebhookconfigurations -A 2>&1 | tee /tmp/k_get_validatingwebhookconfigurations_all$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get validatingwebhookconfigurations apigee-validating-webhook-configuration 2>&1 | tee /tmp/k_get_apigee-validating-webhook-configuration_$(date +%Y.%m.%d_%H.%M.%S).txt ### --- List top resource consuming nodes and pods ---#### kubectl top nodes 2>&1 | tee /tmp/k_top_nodes_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl top pod -A --containers 2>&1 | tee /tmp/k_top_pod_all_containers_$(date +%Y.%m.%d_%H.%M.%S).txt ###----- "kubectl get" commands to fetch list of all CRD for "apigee" namespace ----- ##### kubectl get all -n apigee -o wide 2>&1 | tee /tmp/k_get_all_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ad -n apigee 2>&1 | tee /tmp/k_get_ad_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get apigeeorganization -n apigee 2>&1 | tee /tmp/k_get_apigeeorganization_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get apigeeenv -n apigee 2>&1 | tee /tmp/k_get_apigeeenv_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get apigeeds -n apigee 2>&1 | tee /tmp/k_get_apigeeds_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get apigeedatastore -n apigee 2>&1 | tee /tmp/k_get_apigeedatastore_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ApigeeDeployment -n apigee 2>&1 | tee /tmp/k_get_apigeedeployment_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ApigeeRedis -n apigee 2>&1 | tee /tmp/k_get_ApigeeRedis_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ApigeeRoute -n apigee 2>&1 | tee /tmp/k_get_ApigeeRoute_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ApigeeRouteConfig -n apigee 2>&1 | tee /tmp/k_get_ApigeeRoutesconfig_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get Apigeetelemetry -n apigee 2>&1 | tee /tmp/k_get_Apigeetelemetry_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get apigeeissues -n apigee 2>&1 | tee /tmp/k_get_apigeeissues_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get ControllerRevision -n apigee -o wide 2>&1 | tee /tmp/k_get_ControllerRevision_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get cronjob -n apigee -o wide 2>&1 | tee /tmp/k_get_cronjob_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get gateway -n apigee 2>&1 | tee /tmp/k_get_gateway_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get PodDisruptionBudget -n apigee -o wide 2>&1 | tee /tmp/k_get_PodDisruptionBudget_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get sc -n apigee -o wide 2>&1 | tee /tmp/k_get_storageclass_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get sr -n apigee -o wide 2>&1 | tee /tmp/k_get_sr_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get sts -n apigee 2>&1 | tee /tmp/k_get_sts_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get volumesnapshot -n apigee -o wide 2>&1 | tee /tmp/k_get_volumesnapshot_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt ###----- "kubectl describe" commands to fetch details of all CRD for "apigee" namespace ----- ##### for p in $(kubectl -n apigee get apigeeorganization --no-headers -o custom-columns=":metadata.name") ; do kubectl describe apigeeorganization ${p} -n apigee 2>&1 | tee /tmp/k_desc_apigeeorganization_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get apigeeenv --no-headers -o custom-columns=":metadata.name") ; do kubectl describe apigeeenv ${p} -n apigee 2>&1 | tee /tmp/k_desc_apigeeenv_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get apigeeds --no-headers -o custom-columns=":metadata.name") ; do kubectl describe apigeeds ${p} -n apigee 2>&1 | tee /tmp/k_desc_apigeeds_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get apigeedatastore --no-headers -o custom-columns=":metadata.name") ; do kubectl describe apigeedatastore ${p} -n apigee 2>&1 | tee /tmp/k_desc_apigeedatastore_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get ApigeeDeployment --no-headers -o custom-columns=":metadata.name") ; do kubectl describe ApigeeDeployment ${p} -n apigee 2>&1 | tee /tmp/k_desc_ApigeeDeployment_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get ApigeeRedis --no-headers -o custom-columns=":metadata.name") ; do kubectl describe ApigeeRedis ${p} -n apigee 2>&1 | tee /tmp/k_desc_ApigeeRedis_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get ApigeeRoute --no-headers -o custom-columns=":metadata.name") ; do kubectl describe ApigeeRoute ${p} -n apigee 2>&1 | tee /tmp/k_desc_ApigeeRoute_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get ApigeeRouteConfig --no-headers -o custom-columns=":metadata.name") ; do kubectl describe ApigeeRouteConfig ${p} -n apigee 2>&1 | tee /tmp/k_desc_ApigeeRouteConfig_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get Apigeetelemetry --no-headers -o custom-columns=":metadata.name") ; do kubectl describe Apigeetelemetry ${p} -n apigee 2>&1 | tee /tmp/k_desc_Apigeetelemetry_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get apigeeissues --no-headers -o custom-columns=":metadata.name") ; do kubectl describe apigeeissues ${p} -n apigee 2>&1 | tee /tmp/k_desc_apigeeissues_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get ControllerRevision --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe ControllerRevision ${p} 2>&1 | tee /tmp/k_desc_ControllerRevision_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get certificate --no-headers -o custom-columns=":metadata.name") ; do kubectl describe certificate ${p} -n apigee 2>&1 | tee /tmp/k_desc_certificate_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get cronjob --no-headers -o custom-columns=":metadata.name") ; do kubectl describe cronjob ${p} -n apigee 2>&1 | tee /tmp/k_desc_cronjob_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get daemonset --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe daemonset ${p} 2>&1 | tee /tmp/k_desc_daemonset_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get deployments --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe deployments ${p} 2>&1 | tee /tmp/k_desc_deployment_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get hpa --no-headers -o custom-columns=":metadata.name") ; do kubectl describe hpa ${p} -n apigee 2>&1 | tee /tmp/k_desc_hpa_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get jobs --no-headers -o custom-columns=":metadata.name") ; do kubectl describe jobs ${p} -n apigee 2>&1 | tee /tmp/k_desc_jobs_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get po --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe po ${p} 2>&1 | tee /tmp/k_desc_pod_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get PodDisruptionBudget --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe PodDisruptionBudget ${p} 2>&1 | tee /tmp/k_desc_PodDisruptionBudget_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get pv --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe pv ${p} 2>&1 | tee /tmp/k_desc_pv_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt; done for p in $(kubectl -n apigee get pvc --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe pvc ${p} 2>&1 | tee /tmp/k_desc_pvc_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt; done for p in $(kubectl -n apigee get rs --no-headers -o custom-columns=":metadata.name") ; do kubectl describe rs ${p} -n apigee 2>&1 | tee /tmp/k_desc_replicaset_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get sc --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe sc ${p} 2>&1 | tee /tmp/k_desc_storageclass_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt; done for p in $(kubectl -n apigee get sts --no-headers -o custom-columns=":metadata.name") ; do kubectl describe sts ${p} -n apigee 2>&1 | tee /tmp/k_desc_sts_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get secrets --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee describe secrets ${p} 2>&1 | tee /tmp/k_desc_secrets_n_apigee${p}_$(date +%Y.%m.%d_%H.%M.%S).txt; done for p in $(kubectl -n apigee get services --no-headers -o custom-columns=":metadata.name") ; do kubectl describe service ${p} -n apigee 2>&1 | tee /tmp/k_desc_services_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get sa --no-headers -o custom-columns=":metadata.name") ; do kubectl describe sa ${p} -n apigee 2>&1 | tee /tmp/k_desc_service_account_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee get svc --no-headers -o custom-columns=":metadata.name") ; do kubectl describe svc ${p} -n apigee 2>&1 | tee /tmp/k_desc_svc_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done ###----- "kubectl logs" command to fetch logs of all containers in the "apigee" namespace ----- ##### for p in $(kubectl -n apigee get po --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee logs ${p} --all-containers 2>&1 | tee /tmp/k_logs_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).log ; done ###----- "kubectl get" commands for "apigee-system" namespace ----- ##### kubectl get all -n apigee-system -o wide 2>&1 | tee /tmp/k_get_all_n_apigee_system_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get jobs -o wide -n apigee-system 2>&1 | tee /tmp/k_get_jobs_n_apigee_system_$(date +%Y.%m.%d_%H.%M.%S).txt ###----- "kubectl describe" commands for "apigee-system" namespace ----- ##### for p in $(kubectl -n apigee-system get certificate --no-headers -o custom-columns=":metadata.name") ; do kubectl describe certificate ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_certificate_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get deployment --no-headers -o custom-columns=":metadata.name") ; do kubectl describe deployment ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_deployment_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get jobs --no-headers -o custom-columns=":metadata.name") ; do kubectl describe jobs ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_jobs_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get po --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee-system describe po ${p} 2>&1 | tee /tmp/k_desc_pod_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get rs --no-headers -o custom-columns=":metadata.name") ; do kubectl describe rs ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_replicaset_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get rolebinding --no-headers -o custom-columns=":metadata.name") ; do kubectl describe rolebinding ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_rolebinding_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get services --no-headers -o custom-columns=":metadata.name") ; do kubectl describe service ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_services_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get sa --no-headers -o custom-columns=":metadata.name") ; do kubectl describe sa ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_serviceaccount_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n apigee-system get secrets --no-headers -o custom-columns=":metadata.name") ; do kubectl describe secrets ${p} -n apigee-system 2>&1 | tee /tmp/k_desc_secrets_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done ###----- "kubectl logs" command for "apigee-system" namespace ----- ##### for p in $(kubectl -n apigee-system get po --no-headers -o custom-columns=":metadata.name") ; do kubectl -n apigee-system logs ${p} --all-containers 2>&1 | tee /tmp/k_logs_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).log ; done ###----- "kubectl get" command for "cert-manager" namespace ----- ##### kubectl get all -n cert-manager -o wide 2>&1 | tee /tmp/k_get_all_n_cert_manager_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl get crd -n cert-manager 2>&1 | tee /tmp/k_get_crd_n_cert_manager_$(date +%Y.%m.%d_%H.%M.%S).txt ###----- "kubectl describe" command for "cert-manager" namespace ----- ##### for p in $(kubectl -n cert-manager get deployment --no-headers -o custom-columns=":metadata.name") ; do kubectl -n cert-manager describe deployment $(p) 2>&1 | tee /tmp/k_desc_deployment_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n cert-manager get endpoints --no-headers -o custom-columns=":metadata.name") ; do kubectl describe endpoints ${p} -n cert-manager 2>&1 | tee /tmp/k_desc_endpoints_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n cert-manager get po --no-headers -o custom-columns=":metadata.name") ; do kubectl -n cert-manager describe po ${p} 2>&1 | tee /tmp/k_desc_po_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n cert-manager get rs --no-headers -o custom-columns=":metadata.name") ; do kubectl describe rs ${p} -n cert-manager 2>&1 | tee /tmp/k_desc_replicaset_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n cert-manager get sa --no-headers -o custom-columns=":metadata.name") ; do kubectl describe sa ${p} -n cert-manager 2>&1 | tee /tmp/k_desc_serviceaccount_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n cert-manager get secrets --no-headers -o custom-columns=":metadata.name") ; do kubectl describe secrets ${p} -n cert-manager 2>&1 | tee /tmp/k_desc_secrets_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n cert-manager get services --no-headers -o custom-columns=":metadata.name") ; do kubectl describe service ${p} -n cert-manager 2>&1 | tee /tmp/k_desc_service_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done for p in $(kubectl -n cert-manager get svc --no-headers -o custom-columns=":metadata.name") ; do kubectl describe svc ${p} -n cert-manager 2>&1 | tee /tmp/k_desc_svc_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt ; done ###----- "kubectl logs" command for "cert-manager" namespace ----- ##### for p in $(kubectl -n cert-manager get po --no-headers -o custom-columns=":metadata.name") ; do kubectl -n cert-manager logs ${p} --all-containers 2>&1 | tee /tmp/k_logs_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).log ; done
# tar -cvzf /tmp/apigee_hybrid_logs_$(date +%Y.%m.%d_%H.%M).tar.gz /tmp/k_*
אם גודל קובץ ה-TAR גדול מ-25MB, אפשר להעלות אותו ל-Google Drive ולשתף איתנו את הקישור. אפשר גם להשתמש בפקודה split כדי לפצל את הקבצים הגדולים לחלקים של 25MB שאפשר להעלות לפורטל התמיכה.
# split -b 25M diagnostic.tar.gz "diagnostic.tar.gz.part"
Apigee hybrid Cassandra must-gather
איסוף נתונים בסיסיים
עליך לספק את הפרטים הבאים:
- פלטפורמת Apigee Hybrid (GKE, GKE בארגון, AKS, EKS וכו')
- גרסת Apigee Hybrid
- מזהה פרויקט בענן של Google
- ארגון Apigee Hybrid
- סביבת Apigee Hybrid
- האם מדובר בפריסה באזור אחד או בכמה אזורים?
- קובץ
overrides.yaml(אחד לכל אשכול) - כמה ארגונים ב-Apigee Hybrid מותקנים באותו אשכול?
- האם נעשו שינויים לאחרונה?
איסוף מידע על תוצאות ניפוי הבאגים ב-Cassandra
Run the below script to capture Cassandra debugging information from an Apigee hybrid cluster: # Create a temporary directory to store the Cassandra debugging information. mkdir /tmp/apigee-cassandra-debug-info/ # Loop through all Cassandra pods for APIGEE_CASSANDRA_POD in $(kubectl -n apigee get pods -l app=apigee-cassandra --no-headers -o custom-columns=":metadata.name") ; do # Get Cassandra version kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD version' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_version_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get Cassandra datacenter status kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD status' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_status_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get Cassandra cluster information kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD describecluster' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_describecluster_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get current ring/token status across the datacenter kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD ring' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_ring_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get more information about heap usage, uptime, exceptions, etc kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD info' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_info_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get gossip info kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD gossipinfo' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_gossipinfo_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get Cassandra compaction details kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD compactionstats' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_compactionstats_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD compactionhistory' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_compactionhistory_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD getcompactionthroughput' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_getcompactionthroughput_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD getconcurrentcompactors' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_getconcurrentcompactors_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get status of current Cassandra operations kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD tablestats' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_tablestats_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD tpstats' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_tpstats_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD netstats' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_netstat_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD tablestats' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_tablestats_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD gcstats' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_gcstats_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt # Get proxy histograms (shows the full request latency recorded by the coordinator) kubectl -n apigee exec $APIGEE_CASSANDRA_POD -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD proxyhistograms' 2>&1 | tee /tmp/apigee-cassandra-debug-info/nodetool_proxyhistograms_$APIGEE_CASSANDRA_POD-$(date +%Y.%m.%d_%H.%M.%S).txt done # compress all collected data tar -czvf apigee-cassandra-debug-info-$(date +%Y.%m.%d_%H.%M.%S).tar.gz -C /tmp apigee-cassandra-debug-info
תבניות של בקשות תמיכה ובקשות תמיכה לדוגמה
בסעיף הזה מפורטות תבניות של פניות ותבניות לדוגמה של פניות למוצרים שונים, על סמך השיטות המומלצות שמתוארות במסמך הזה:
Apigee Cloud
תבנית
בקטע הזה מופיעה תבנית לדוגמה של Apigee ב-Google Cloud.
הבעיה:
<כאן צריך לספק תיאור מפורט של הבעיה או של ההתנהגות שנצפית בצד שלך. צריך לכלול את שם המוצר והגרסה שלו, אם רלוונטי.>
הודעת שגיאה:
<Include the complete error message observed (if any)>
שעת ההתחלה של הבעיה (בפורמט ISO 8601):
שעת הסיום של הבעיה (בפורמט ISO 8601):
פרטי ההגדרה של Apigee:
שמות הארגונים:
שמות הסביבות:
שמות ה-proxy ל-API:
מספרי הגרסאות:
צעדים לשחזור:
<כאן צריך לציין את השלבים לשחזור הבעיה, אם אפשר>
מידע אבחוני:
<רשימת הקבצים המצורפים>
דוגמה לבקשת תמיכה
בקטע הזה מופיעה דוגמה לבקשת תמיכה ב-Apigee ב-Google Cloud.
הבעיה:
אנחנו רואים מספר גבוה של שגיאות מסוג 503 (השירות לא זמין) בארגון Public Cloud שלנו. אפשר לבדוק את הבעיה ולפתור אותה או להסביר לנו איך לפתור אותה?
הודעת שגיאה:
{"fault":{"faultstring":"The Service is temporarily available", "detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable"}}}
שעת ההתחלה של הבעיה (בפורמט ISO 8601): 2020-10-04 06:30 IST
שעת סיום הבעיה (בפורמט ISO 8601): הבעיה עדיין מתרחשת.
פרטים על ההגדרה של Apigee Cloud:
שמות הארגונים: myorg
שמות הסביבות: dev
שמות ה-proxy ל-API: myproxy
מספרי הגרסאות: 3
צעדים לשחזור:
מריצים את הפקודה הבאה curl כדי לשחזר את הבעיה:
curl -X GET 'https://myorg-dev.apigee.net/v1/myproxy'
מידע אבחוני:
פלט של כלי לניפוי באגים (trace-503.xml)
היברידי
תבנית
בקטע הזה מופיעה תבנית לדוגמה ל-Apigee Hybrid.
הבעיה:
<כאן צריך לספק תיאור מפורט של הבעיה או של ההתנהגות שנצפית בצד שלך. צריך לכלול את שם המוצר והגרסה שלו, אם רלוונטי.>
הודעת שגיאה:
<Include the complete error message observed (if any)>
שעת ההתחלה של הבעיה (בפורמט ISO 8601):
שעת הסיום של הבעיה (בפורמט ISO 8601):
פרטי ההגדרה של Apigee Hybrid:
- פלטפורמת Apigee Hybrid:
<כאן צריך לספק מידע על הפלטפורמה שבה התקנת את הגרסה ההיברידית ואת הגרסה שלה.>
- פרויקט Google Cloud, ארגון וסביבה היברידיים:
מזהה פרויקט Google Cloud:
<אם אתם משתמשים ב-Google Kubernetes Engine (GKE), חשוב לציין את מזהה הפרויקט שבו נמצאים האשכולות. אם אתם משתמשים ב-GKE On-Prem, ב-Azure Kubernetes Service או ב-Amazon EKS, עליכם לציין את מזהה הפרויקט שאליו אתם שולחים את היומנים.>
Apigee hybrid org:
Apigee hybrid env: - Apigee Hybrid וגרסאות אחרות של CLI:
גרסת Apigee Hybrid CLI (apigeectl):
גרסת Kubectl: - פרטים על שם אשכול Kubernetes:
k8sCluster:
name:
region: - טופולוגיית הרשת:
<Attach the network topology describing the setup of your Apigee hybrid including data centers, Kubernetes clusters, namespaces, and pods.> - קובץ YAML של שינויים:
<Attach the Overrides YAML file.>
שלבים לשחזור
<כאן צריך לציין את השלבים לשחזור הבעיה, אם אפשר>
מידע אבחוני:
<רשימת הקבצים המצורפים>
דוגמה לבקשת תמיכה
בקטע הזה מופיעה דוגמה לתרחיש שימוש ב-Apigee Hybrid.
הבעיה:
אנחנו מקבלים שגיאות כשמבצעים ממשקי API לניהול ב-Apigee hybrid version 1.3.
הודעת שגיאה:
[ERROR] 400 Bad Request
{
"error": {
"code": 400,
"message": "Error processing MART request: INTERNAL_ERROR",
"errors": [
{
"message": "Error processing MART request: INTERNAL_ERROR",
"domain": "global",
"reason": "failedPrecondition"
}
],
"status": "FAILED_PRECONDITION"
}
}
שעת ההתחלה של הבעיה (בפורמט ISO 8601): מאז 2020-10-24 10:30 PDT
שעת סיום הבעיה (בפורמט ISO 8601): הבעיה עדיין מתרחשת.
פרטי ההגדרה של Apigee Hybrid:
- פלטפורמת Apigee Hybrid
גרסת GKE 1.15.1 - פרויקט ב-Google Cloud, ארגון וסביבה היברידיים
מזהה הפרויקט ב-Google Cloud: apigee-hybrid-123456
הערה: זהו מזהה הפרויקט שבו נמצאים האשכולות.
הארגון ב-Apigee Hybrid:apigee-hybrid-123456
הסביבה ב-Apigee Hybrid:dev - גרסאות של Apigee Hybrid ושל CLI אחרים:
גרסת Apigee Hybrid CLI (apigeectl):
גרסה:1.2.0
Commit:ac09109
מזהה Build: 214
זמן Build: 2020-03-30T20:23:36Z
גרסת Go: go1.12
גרסת Kubectl:
גרסת לקוח: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"darwin/amd64"}
גרסת השרת:version.Info{Major:"1", Minor:"14+", GitVersion:"v1.14.10-gke.36", GitCommit:"34a615f32e9a0c9e97cdb9f749adb392758349a6", GitTreeState:"clean", - פרטים על שם אשכול Kubernetes:
k8sCluster:
name:user-cluster-1
region:us-east1 - טופולוגיה של הרשת
הקובץnetwork-topology.pngצורף - קובץ YAML של שינוי ברירת המחדל
קובץ מצורףoverrides.yaml
צעדים לשחזור:
מריצים את Management API הבא כדי לראות את השגיאה:
curl -X GET --header "Authorization: Bearer <TOKEN>" "https://apigee.googleapis.com/v1/organizations/apigee-hybrid-123456/environments/dev/keyvaluemaps"
מידע אבחוני:
הקבצים הבאים צורפו:
network-topology.pngoverrides.yaml file- יומני MART
- יומני סנכרון