מדדים של סנכרון תצורות

בדף הזה מפורטים מדדי OpenTelemetry שזמינים למעקב אחרי משאבי Config Sync.

איך Config Sync אוסף מדדים

‫Config Sync משתמש ב-OpenCensus כדי ליצור ולתעד מדדים, וב-OpenTelemetry כדי לייצא את המדדים שלו אל Prometheus ו-Cloud Monitoring. במדריכים הבאים מוסבר איך לייצא מדדים:

כדי להגדיר את OpenTelemetry Collector,‏ Config Sync יוצר כברירת מחדל ConfigMap בשם otel-collector. הפריסה otel-collector פועלת במרחב השמות config-management-monitoring.

יצירת ה-ConfigMap‏ otel-collector מגדירה את כלי הייצוא prometheus, שחושף נקודת קצה של מדדים לסריקה של Prometheus.

כשמריצים את Config Sync ב-GKE או בסביבת Kubernetes אחרת שהוגדרה עם פרטי כניסה של Cloud de Confiance by S3NS ,‏ Config Sync יוצר ConfigMap בשם otel-collector-google-cloud. ההגדרה otel-collector-google-cloud מבטלת את ההגדרה ב-ConfigMap otel-collector. ‫Config Sync מחזיר את כל השינויים שבוצעו ב-ConfigMaps של otel-collector או otel-collector-google-cloud.

יצירת otel-collector-google-cloud ConfigMap מוסיפה גם את cloudmonitoring exporter, שמייצא ל-Cloud Monitoring, ואת kubernetes exporter, שמייצא לשירות המדדים הפנימי של Google. הכלי לייצוא kubernetes שולח מדדים אנונימיים נבחרים ל-Google כדי לעזור לשפר את Config Sync.

‫Cloud Monitoring מאחסן את המדדים שאתם שולחים אליו בCloud de Confiance פרויקט. הכלי לייצוא של cloudmonitoring והכלי לייצוא של kubernetes משתמשים באותו חשבון שירותCloud de Confiance by S3NS , שצריך הרשאת IAM כדי לכתוב ל-Cloud Monitoring. במאמר מתן הרשאת כתיבת מדדים ל-Cloud Monitoring מוסבר איך מגדירים את ההרשאות האלה.

מדדים של OpenTelemetry

‫Config Sync ו-Resource Group Controller אוספים את המדדים הבאים באמצעות OpenCensus ומפרסמים אותם דרך OpenTelemetry Collector . בעמודה Tags (תגים) מופיעים תגים ספציפיים ל-Config Sync שרלוונטיים לכל מדד. מדדים עם תגים מייצגים כמה מדידות, אחת לכל שילוב של ערכי תגים.

מדדים של Config Sync

שם סוג תגים תיאור
api_duration_seconds הפצה פעולה, סטטוס התפלגות זמן האחזור של קריאות לשרת API.
apply_duration_seconds הפצה סטטוס התפלגות זמן האחזור של החלת משאבים שהוגדרו ממקור האמת על אשכול.
apply_operations_total ספירה פעולה, סטטוס, בקר המספר הכולל של הפעולות שבוצעו כדי לסנכרן משאבים ממקור האמת לאשכול.
declared_resources ערך אחרון מספר המשאבים המוצהרים שנותחו מ-Git.
internal_errors_total ספירה מקור המספר הכולל של שגיאות פנימיות שנתקל בהן Config Sync. יכול להיות שהמדד לא יופיע בתוצאות השאילתה אם לא אירעה שגיאה פנימית.
last_sync_timestamp ערך אחרון סטטוס חותמת הזמן של הסנכרון האחרון מ-Git.
parser_duration_seconds הפצה status, trigger, source התפלגות זמן האחזור של שלבים שונים שקשורים לסנכרון ממקור האמת לאשכול.
pipeline_error_observed ערך אחרון name, reconciler, component הסטטוס של משאבים מותאמים אישית של RootSync ו-RepoSync. הערך 1 מציין כשל.
reconcile_duration_seconds הפצה סטטוס התפלגות זמן האחזור של אירועי התאמה שטופלו על ידי מנהל ההתאמה.
reconciler_errors ערך אחרון component, errorclass מספר השגיאות שנתקלו בהן במהלך סינכרון משאבים ממקור האמת לאשכול.
remediate_duration_seconds הפצה סטטוס התפלגות השהיות של אירועי גישור של כלי התיקון.
resource_conflicts_total ספירה המספר הכולל של התנגשויות משאבים שנובעות מחוסר התאמה בין המשאבים שבמטמון לבין משאבי האשכול. יכול להיות שהמדד לא יופיע בתוצאות השאילתה אם לא היה ניגוד משאבים.
resource_fights_total ספירה המספר הכולל של משאבים שמסונכרנים בתדירות גבוהה מדי. כל תוצאה שגבוהה מאפס מצביעה על בעיה. מידע נוסף זמין במאמר KNV2005: ResourceFightWarning. יכול להיות שהמדד לא יופיע בתוצאות השאילתה אם לא התרחש מאבק על משאבים.

מדדים של בקר קבוצת משאבים

ה-Resource Group Controller הוא רכיב ב-Config Sync שעוקב אחרי המשאבים המנוהלים ובודק אם כל משאב מוכן או מסונכרן. המדדים הבאים זמינים:

שם סוג תגים תיאור
rg_reconcile_duration_seconds הפצה stallreason התפלגות הזמן שנדרש לתיאום של ResourceGroup CR
resource_group_total ערך אחרון מספר ה-CR הנוכחי של ResourceGroup
resource_count ערך אחרון resourcegroup המספר הכולל של משאבים שנמצאים במעקב על ידי ResourceGroup
ready_resource_count ערך אחרון resourcegroup המספר הכולל של משאבים מוכנים ב-ResourceGroup
resource_ns_count ערך אחרון resourcegroup מספר מרחבי השמות שמשמשים משאבים ב-ResourceGroup
cluster_scoped_resource_count ערך אחרון resourcegroup מספר המשאבים בהיקף אשכול ב-ResourceGroup
crd_count ערך אחרון resourcegroup מספר ה-CRD ב-ResourceGroup
kcc_resource_count ערך אחרון resourcegroup המספר הכולל של משאבי KCC ב-ResourceGroup
pipeline_error_observed ערך אחרון name, reconciler, component הסטטוס של משאבים מותאמים אישית של RootSync ו-RepoSync. הערך 1 מציין כשל.

תוויות של מדדים בסנכרון תצורות

אפשר להשתמש בתוויות של מדדים כדי לצבור נתוני מדדים ב-Cloud Monitoring וב-Prometheus. אפשר לבחור אותם מהרשימה הנפתחת 'קיבוץ לפי' במרכז הבקרה לניטור.

מידע נוסף על תווית Cloud Monitoring ותווית מדד Prometheus זמין במאמרים רכיבים של מודל המדדים ומודל הנתונים של Prometheus.

תוויות של מדדים

התוויות הבאות משמשות למדדים של Config Sync ושל Resource Group Controller, שזמינים כשמבצעים מעקב באמצעות Cloud Monitoring ו-Prometheus.

שם ערכים תיאור
operation יצירה, תיקון, עדכון, מחיקה סוג הפעולה שבוצעה
status הצלחה, שגיאה סטטוס הביצוע של פעולה
reconciler rootsync, reposync הסוג של הכלי להשוואת נתונים
source מנתח, כלי להשוואה, כלי לתיקון מקור השגיאה הפנימית
trigger retry, watchUpdate, managementConflict, resync, reimport הטריגר של אירוע התאמה
name שם המאחד השם של הכלי להשוואת נתונים
component ניתוח, מקור, סנכרון, עיבוד, מוכנות שם הרכיב או השלב הנוכחי בתהליך ההתאמה
container ‫reconciler, ‏ git-sync שם הקונטיינר
resource מעבד (CPU), זיכרון סוג המשאב
controller applier, remediator השם של בקר ב-reconciler של שורש או מרחב שמות
type כל משאב Kubernetes, למשל ClusterRole,‏ Namespace,‏ NetworkPolicy,‏ Role וכו'. סוג ה-API של Kubernetes
commit ---- הגיבוב של הקומיט האחרון שסונכרן

תוויות משאבים

למדדים של Config Sync שנשלחים אל Prometheus ו-Cloud Monitoring מוגדרות תוויות המדדים הבאות כדי לזהות את ה-Pod של המקור:

שם תיאור
k8s.node.name השם של הצומת שמארח Pod של Kubernetes
k8s.pod.namespace מרחב השמות של ה-Pod
k8s.pod.uid מזהה ה-UID של ה-Pod
k8s.pod.ip כתובת ה-IP של ה-Pod
k8s.deployment.name השם של הפריסה שבבעלותה נמצא ה-Pod

למדדים של Config Sync שנשלחים אל Prometheus ו-Cloud Monitoring מ-Pods של reconciler מוגדרות גם תוויות המדדים הבאות, כדי לזהות את RootSync או RepoSync ששימשו להגדרת ה-reconciler:

שם תיאור
configsync.sync.kind סוג המשאב שמגדיר את כלי ההתאמה הזה: RootSync או RepoSync
configsync.sync.name השם של RootSync או RepoSync שמגדיר את הכלי הזה להשוואת נתונים
configsync.sync.namespace מרחב השמות של RootSync או RepoSync שמגדיר את כלי ההתאמה הזה

תוויות משאבים ב-Cloud Monitoring

תוויות משאבים ב-Cloud Monitoring משמשות לאינדוקס מדדים באחסון, ולכן ההשפעה שלהן על העוצמה (cardinality) זניחה, בניגוד לתוויות מדדים, שבהן העוצמה היא בעיה משמעותית שמשפיעה על הביצועים. מידע נוסף מופיע במאמר סוגי המשאבים במעקב.

סוג המשאב k8s_container מגדיר את תוויות המשאב הבאות כדי לזהות את מאגר התגים של המקור:

שם תיאור
container_name שם הקונטיינר
pod_name שם ה-Pod
namespace_name מרחב השמות של ה-Pod
location האזור או התחום של האשכול שמארח את הצומת
cluster_name השם של האשכול שמארח את הצומת
project מזהה הפרויקט שמארח את האשכול

הגדרת סינון של מדדים מותאמים אישית

אתם יכולים לשנות את המדדים המותאמים אישית ש-Config Sync מייצא ל-Prometheus, ל-Cloud Monitoring ולשירות המעקב הפנימי של Google. אפשר לשנות את המדדים המותאמים אישית כדי לכוונן את המדדים הכלולים או להגדיר מערכות בק-אנד שונות.

כדי לשנות מדדים מותאמים אישית, יוצרים ConfigMap בשם otel-collector-custom ואז עורכים אותו. השימוש ב-ConfigMap הזה מבטיח ש-Config Sync לא יבטל את השינויים שביצעתם. אם משנים את ה-ConfigMaps של otel-collector או otel-collector-google-cloud, ‏ Config Sync מחזיר את השינויים למצב הקודם.

דוגמאות לאופן ההתאמה של ConfigMap מופיעות במאמר Custom Metric Filtering במסמכי התיעוד של Config Sync בקוד פתוח.

הסבר על המדד pipeline_error_observed

המדד pipeline_error_observed עוזר לכם לזהות במהירות CR של RepoSync או RootSync שלא מסונכרנים או שמכילים משאבים שלא הותאמו למצב הרצוי.

  • כדי שהסנכרון באמצעות RootSync או RepoSync יצליח, המדדים עם כל הרכיבים (rendering, ‏ source, ‏ sync, ‏ readiness) צריכים להיות עם הערך 0.

    צילום מסך של המדד pipeline_error_observed עם כל הרכיבים שנצפו עם הערך 0

  • אם הקומיט האחרון נכשל בעיבוד האוטומטי, המדד עם הרכיב rendering יקבל את הערך 1.

  • אם מתרחשת שגיאה במהלך הוצאת הקומיט האחרון או אם הקומיט האחרון מכיל הגדרה לא חוקית, המדד עם הרכיב source יקבל את הערך 1.

  • אם לא ניתן להחיל משאב על האשכול, המדד עם הרכיב sync יקבל את הערך 1.

  • כשמחילים משאב, אבל הוא לא מגיע למצב הרצוי, המדד עם הרכיב readiness נצפה עם הערך 1. לדוגמה, פריסה מוחלת על האשכול, אבל ה-Pods התואמים לא נוצרים בהצלחה.

המאמרים הבאים