בדף הזה מוסבר איך לשלוח מדדים מ-סנכרון תצורות אל Prometheus.
בדף הזה מוסבר איך משתמשים ב-Prometheus כדי לראות את המדדים של סנכרון תצורות. מומלץ להשתמש ב-Prometheus (בדף הזה) או ב-Cloud Monitoring כדי לייצא מדדים. אפשר גם להשתמש במדדים מותאמים אישית.
סנכרון תצורות אוסף ומייצא מדדים באופן אוטומטי אל Prometheus. אפשר להגדיר את Cloud Monitoring כך שימשוך מדדים מותאמים אישית מ-Prometheus. אחרי זה תוכלו לראות את המדדים המותאמים אישית גם ב-Prometheus וגם ב-Monitoring. מידע נוסף זמין במאמר שימוש ב-Prometheus במסמכי התיעוד של GKE.
גירוד המדדים
כל מדדי Prometheus זמינים לגירוד ביציאה 8675. כדי שתוכלו לגרד מדדים, אתם צריכים להגדיר את האשכול שלכם ל-Prometheus באחת משתי דרכים. אחת מהאפשרויות:
פועלים לפי המסמכים של Prometheus כדי להגדיר את האשכול לגירוד, או
משתמשים ב-Prometheus Operator יחד עם המניפסטים הבאים, שסורקים את כל המדדים של סנכרון תצורות כל 10 שניות.
יוצרים ספרייה זמנית להחזקת קובצי המניפסט.
mkdir config-sync-monitor cd config-sync-monitor
מורידים את מניפסט Prometheus Operator ממאגר CoreOS באמצעות הפקודה
curl:curl -o bundle.yaml https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
קובץ המניפסט הזה מוגדר לשימוש במרחב השמות
default, שלא מומלץ לשימוש. בשלב הבא משנים את ההגדרה כך שישתמשו במרחב שמות בשםmonitoring. כדי להשתמש במרחב שמות אחר, מחליפים אותו במקוםmonitoringבשלבים הבאים.יוצרים קובץ כדי לעדכן את מרחב השמות של ClusterRoleBinding בחבילה שלמעלה.
# patch-crb.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-operator subjects: - kind: ServiceAccount name: prometheus-operator namespace: monitoring # we are patching from default namespaceיוצרים קובץ
kustomization.yamlשמחיל את התיקון ומשנה את מרחב השמות של משאבים אחרים במניפסט.# kustomization.yaml resources: - bundle.yaml namespace: monitoring patchesStrategicMerge: - patch-crb.yamlיוצרים את מרחב השמות
monitoringאם הוא לא קיים. אפשר להשתמש בשם אחר למרחב השמות, אבל אם עושים את זה, צריך לשנות גם את הערך שלnamespaceבמניפסטים של YAML מהשלבים הקודמים.kubectl create namespace monitoring
מחילים את מניפסט Kustomize באמצעות הפקודות הבאות:
kubectl apply -k . until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com ; \ do date; sleep 1; echo ""; done
הפקודה השנייה נחסמת עד שמשאבי ה-CRD יהיו זמינים באשכול.
יוצרים את קובץ המניפסט של המשאבים שנדרשים להגדרת שרת Prometheus שסורק מדדים מ-Config Sync.
# config-sync-monitoring.yaml apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-config-sync namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus-config-sync rules: - apiGroups: [""] resources: - nodes - services - endpoints - pods verbs: ["get", "list", "watch"] - apiGroups: [""] resources: - configmaps verbs: ["get"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-config-sync roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus-config-sync subjects: - kind: ServiceAccount name: prometheus-config-sync namespace: monitoring --- apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: config-sync namespace: monitoring labels: prometheus: config-sync spec: replicas: 2 serviceAccountName: prometheus-config-sync serviceMonitorSelector: matchLabels: prometheus: config-management alerting: alertmanagers: - namespace: default name: alertmanager port: web resources: requests: memory: 400Mi --- apiVersion: v1 kind: Service metadata: name: prometheus-config-sync namespace: monitoring labels: prometheus: config-sync spec: type: NodePort ports: - name: web nodePort: 31900 port: 9190 protocol: TCP targetPort: web selector: prometheus: config-sync --- ---מחילים את המניפסט באמצעות הפקודות הבאות:
kubectl apply -f config-sync.yaml until kubectl rollout status statefulset/prometheus-config-sync -n monitoring; \ do sleep 1; done
הפקודה השנייה נחסמת עד שה-Pods פועלים.
כדי לוודא שההתקנה בוצעה, אפשר להעביר את יציאת האינטרנט של שרת Prometheus למחשב המקומי.
kubectl -n monitoring port-forward svc/prometheus-config-sync 9190
עכשיו אפשר לגשת לממשק המשתמש של Prometheus באינטרנט בכתובת
http://localhost:9190.מסירים את הספרייה הזמנית.
cd .. rm -rf config-sync-monitor
מדדים זמינים של Prometheus
סנכרון תצורות אוסף את המדדים הבאים ומעמיד אותם לרשות Prometheus. בעמודה תוויות מפורטות כל התוויות שרלוונטיות לכל מדד. מדדים ללא תוויות מייצגים מדידה אחת לאורך זמן, ומדדים עם תוויות מייצגים כמה מדידות, אחת לכל שילוב של ערכי תוויות.
אם הטבלה הזו לא מסונכרנת, אפשר לסנן את המדדים לפי קידומת בממשק המשתמש של Prometheus. כל המדדים מתחילים בתחילית config_sync_.
| שם | סוג | תוויות | תיאור |
|---|---|---|---|
config_sync_api_duration_seconds_bucket |
היסטוגרמה | status, operation | התפלגות זמן האחזור של קריאות לשרת API (מחולקת לקטגוריות לפי משך כל מחזור) |
config_sync_api_duration_seconds_count |
היסטוגרמה | status, operation | התפלגות זמן האחזור של קריאות לשרת API (ללא התייחסות למשך) |
config_sync_api_duration_seconds_sum |
היסטוגרמה | status, operation | סכום משכי הזמן של כל הקריאות לשרת API |
config_sync_apply_duration_seconds_bucket |
היסטוגרמה | commit, status | התפלגות זמן האחזור של החלת משאבים שהוצהרו ממקור האמת על אשכול (מחולק לדליים לפי משך כל מחזור) |
config_sync_apply_duration_seconds_count |
היסטוגרמה | commit, status | התפלגות זמן האחזור של החלת משאבים שהוגדרו ממקור מהימן על אשכול (תוך התעלמות מהמשך) |
config_sync_apply_duration_seconds_sum |
היסטוגרמה | commit, status | סכום משכי הזמן של כל זמני האחזור של החלת משאבים שהוגדרו ממקור האמת על אשכול |
config_sync_apply_operations_total |
הצעה נגדית | פעולה, סטטוס, בקר | מספר הפעולות שבוצעו כדי לסנכרן משאבים ממקור האמת לאשכול |
config_sync_cluster_scoped_resource_count |
מד | resourcegroup | מספר המשאבים בהיקף אשכול ב-ResourceGroup |
config_sync_crd_count |
מד | resourcegroup | מספר ה-CRD בקבוצת משאבים |
config_sync_declared_resources |
מד | להוריד לביצוע (Commit) | מספר המשאבים שהוצהרו שנותחו מ-Git |
config_sync_internal_errors_total |
הצעה נגדית | מקור | מספר השגיאות הפנימיות שהופעלו על ידי סנכרון תצורות. יכול להיות שהמדד לא יופיע אם לא קרתה שגיאה פנימית |
config_sync_kcc_resource_count |
מד | resourcegroup | מספר המשאבים של Config Connector ב-ResourceGroup |
config_sync_last_apply_timestamp |
מד | commit, status | חותמת הזמן של פעולת ההחלה האחרונה |
config_sync_last_sync_timestamp |
מד | commit, status | חותמת זמן של הסנכרון האחרון מ-Git |
config_sync_parser_duration_seconds_bucket |
היסטוגרמה | סטטוס, טריגר, מקור | התפלגות זמן האחזור של שלבים שונים שקשורים לסנכרון ממקור האמת לאשכול |
config_sync_parser_duration_seconds_count |
היסטוגרמה | סטטוס, טריגר, מקור | התפלגות זמן האחזור של שלבים שונים שקשורים לסנכרון ממקור האמת לאשכול (ללא התייחסות למשך הזמן) |
config_sync_parser_duration_seconds_sum |
היסטוגרמה | סטטוס, טריגר, מקור | סכום זמני האחזור של שלבים שונים שקשורים לסנכרון ממקור האמת לאשכול |
config_sync_pipeline_error_observed |
מד | name, reconciler, component | הסטטוס של משאבים מותאמים אישית של RootSync ו-RepoSync. הערך 1 מציין כשל |
config_sync_ready_resource_count |
מד | resourcegroup | המספר הכולל של משאבים מוכנים ב-ResourceGroup |
config_sync_reconcile_duration_seconds_bucket |
היסטוגרמה | סטטוס | התפלגות זמן האחזור של אירועי התאמה שטופלו על ידי מנהל ההתאמה (מחולק לקטגוריות לפי משך כל שיחה) |
config_sync_reconcile_duration_seconds_count |
היסטוגרמה | סטטוס | התפלגות זמן האחזור של אירועי התאמה שטופלו על ידי מנהל ההתאמה (בלי להתייחס למשך) |
config_sync_reconcile_duration_seconds_sum |
היסטוגרמה | סטטוס | סכום משכי הזמן של כל אירועי השהיה של התאמה שטופלו על ידי מנהל ההתאמה |
config_sync_reconciler_errors |
מד | component, errorclass | מספר השגיאות שנתקלו בהן במהלך סינכרון המשאבים ממקור האמת לאשכול |
config_sync_remediate_duration_seconds_bucket |
היסטוגרמה | סטטוס | התפלגות השהיות של אירועי סנכרון של כלי התיקון (מחולקת לקטגוריות לפי משך) |
config_sync_remediate_duration_seconds_count |
היסטוגרמה | סטטוס | חלוקת זמן האחזור של אירועי סנכרון של כלי התיקון (ללא התייחסות למשך הזמן) |
config_sync_remediate_duration_seconds_sum |
היסטוגרמה | סטטוס | סכום משכי הזמן של כל אירועי ההשהיה של תהליך התיקון |
config_sync_resource_count |
מד | resourcegroup | מספר המשאבים שנמצאים במעקב על ידי ResourceGroup |
config_sync_resource_conflicts_total |
הצעה נגדית | להוריד לביצוע (Commit) | מספר ההתנגשויות של משאבים שנובעות מחוסר התאמה בין המשאבים שבמטמון לבין משאבי האשכול. יכול להיות שהמדד לא יופיע אם לא היה ניגוד משאבים |
config_sync_resource_fights_total |
הצעה נגדית | מספר המשאבים שמסונכרנים בתדירות גבוהה מדי. יכול להיות שהמדד לא יופיע אם לא הייתה תחרות על משאבים | |
config_sync_resource_group_total |
מד | מספר משאבי ResourceGroup CR | |
config_sync_resource_ns_count |
מד | resourcegroup | מספר מרחבי השמות שמשמשים משאבים ב-ResourceGroup |
config_sync_rg_reconcile_duration_seconds_bucket. |
היסטוגרמה | stallreason | התפלגות הזמן של תהליך ההתאמה של CR מסוג ResourceGroup (מחולק לדליים לפי משך) |
config_sync_rg_reconcile_duration_seconds_count |
היסטוגרמה | stallreason | חלוקת הזמן של תהליך ההתאמה של ResourceGroup CR (ללא התחשבות במשך הזמן) |
config_sync_rg_reconcile_duration_seconds_sum |
היסטוגרמה | stallreason | סכום כל הזמן של התאמת CR של ResourceGroup |
config_sync_kustomize_build_latency_bucket |
היסטוגרמה | התפלגות זמן האחזור של kustomize build זמן הביצוע (מחולק לקטגוריות לפי משך כל פעולה) |
|
config_sync_kustomize_build_latency_count |
היסטוגרמה | התפלגות השהייה של זמן הביצוע של kustomize build (ללא משך) |
|
config_sync_kustomize_build_latency_sum |
היסטוגרמה | סכום של כל זמן ההפעלה של kustomize build |
|
config_sync_kustomize_ordered_top_tier_metrics |
מד | top_tier_field | שימוש במשאבים, ב-Generators, ב-SecretGenerator, ב-ConfigMapGenerator, ב-Transformers וב-Validators |
config_sync_kustomize_builtin_transformers |
מד | k8s_builtin_transformer | שימוש בטרנספורמציות מובנות שקשורות למטא-נתונים של אובייקטים ב-Kubernetes |
config_sync_kustomize_resource_count |
מד | מספר המשאבים שמוצגים על ידי kustomize build |
|
config_sync_kustomize_field_count |
מד | field_name | מספר הפעמים שנעשה שימוש בשדה מסוים בקובצי ההתאמה האישית |
config_sync_kustomize_patch_count |
מד | patch_field | מספר הטלאים בשדות patches, patchesStrategicMerge ו-patchesJson6902 |
config_sync_kustomize_base_count |
מד | base_source | מספר בסיסים מרוחקים ומקומיים |
kustomize_deprecating_field_count |
מד | deprecating_field | שימוש בשדות שעשויים לצאת משימוש |
kustomize_simplification_adoption_count |
מד | simplification_field | שימוש בתמונות, בעותקים ובהחלפות של טרנספורמציות פשוטות |
kustomize_helm_inflator_count |
מד | helm_inflator | השימוש ב-Helm ב-Kustomize, באמצעות השדות המובנים או הפונקציה המותאמת אישית |
דוגמאות לתהליכי ניפוי באגים ב-Prometheus
בדוגמאות הבאות מוצגים כמה דפוסים לשימוש במדדים של Prometheus, בשדות סטטוס של אובייקטים ובאנוטציות של אובייקטים כדי לזהות ולנתח בעיות שקשורות לסנכרון תצורות. בדוגמאות האלה אפשר לראות איך מתחילים במעקב ברמה גבוהה שמזהה בעיה, ואז מצמצמים בהדרגה את החיפוש כדי להתעמק בנתונים ולאבחן את שורש הבעיה.
הגדרות שאילתה לפי סטטוס
reconciler התהליך מספק מדדים ברמה גבוהה שנותנים תובנות שימושיות לגבי תצוגה כוללת של אופן הפעולה של סנכרון תצורות באשכול. תוכלו לראות אם אירעו שגיאות, ואפילו להגדיר התראות לגביהן.
config_sync_reconciler_errors
שאילתת מדדים לפי כלי ההתאמה
אם אתם משתמשים בממשקי ה-API של סנכרון תצורות RootSync ו-RepoSync, אתם יכולים לעקוב אחרי אובייקטים של RootSync ו-RepoSync. אובייקטים של RootSync ו-RepoSync מצוידים במדדים ברמה גבוהה, שנותנים תובנות שימושיות לגבי אופן הפעולה של סנכרון תצורות באשכול. כמעט כל המדדים מתויגים לפי שם הכלי לאימות נתונים, כך שאפשר לראות אם התרחשו שגיאות ולהגדיר התראות לגביהן ב-Prometheus.
כאן אפשר לראות את הרשימה המלאה של תוויות המדדים הזמינות לסינון.
ב-Prometheus, אפשר להשתמש במסננים הבאים עבור RootSyncs או RepoSyncs:
# Querying RootSync
config_sync_reconciler_errors{configsync_sync_name=ROOT_SYNC_NAME}
# Querying RepoSync
config_sync_reconciler_errors{configsync_sync_name=REPO_SYNC_NAME}
שאילתות על פעולות ייבוא וסנכרון לפי סטטוס
ב-Prometheus, אפשר להשתמש בשאילתות הבאות:
# Check for errors that occurred when sourcing configs.
config_sync_reconciler_errors{component="source"}
# Check for errors that occurred when syncing configs to the cluster.
config_sync_reconciler_errors{component="sync"}
אפשר גם לבדוק את המדדים של תהליכי המקור והסנכרון עצמם:
config_sync_parser_duration_seconds{status="error"}
config_sync_apply_duration_seconds{status="error"}
config_sync_remediate_duration_seconds{status="error"}
מעקב אחרי משאבים באמצעות Cloud de Confiance by S3NS שירות מנוהל ל-Prometheus
השירות המנוהל של Google Cloud ל-Prometheus הוא פתרון מנוהל מלא לריבוי עננים למדדים של Prometheus. Cloud de Confiance by S3NSהוא תומך בשני מצבים לאיסוף נתונים: איסוף מנוהל (המצב המומלץ) או איסוף נתונים בהטמעה עצמית. כדי להגדיר את סנכרון תצורות לניטור באמצעות השירות המנוהל של Google Cloud ל-Prometheus במצב איסוף מנוהל, פועלים לפי השלבים הבאים.
מפעילים את Managed Prometheus באשכול לפי ההוראות שבמאמר הגדרת איסוף מנוהל.
שומרים את קובץ המניפסט לדוגמה הבא בשם
pod-monitoring-config-sync-monitoring.yaml. במניפסט הזה מוגדר משאב PodMonitoring לגירוד המדדים של סנכרון תצורות ביציאה8675של ה-Podotel-collector-*במרחב השמותconfig-management-monitoring. המשאב PodMonitoring משתמש בבורר תוויות של Kubernetes כדי למצוא אתotel-collector-*ה-Pod.apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: config-sync-monitoring namespace: config-management-monitoring spec: selector: matchLabels: app: opentelemetry component: otel-collector endpoints: - port: 8675 interval: 10sמחילים את המניפסט על האשכול:
kubectl apply -f pod-monitoring-config-sync-monitoring.yaml
כדי לוודא שהנתונים שלכם ב-Prometheus מיוצאים, פועלים לפי ההוראות במאמר נתונים של שירות מנוהל ל-Prometheus ב-Cloud Monitoring כדי להשתמש בדף Metrics Explorer במסוף Cloud de Confiance .