אתם יכולים להשתמש במדדים מותאמים אישית באופרטור AlloyDB Omni Kubernetes כדי להגדיר ולאסוף מדדים ספציפיים לאפליקציה על ידי הפעלת שאילתות SQL במסדי הנתונים.
מדדים מותאמים אישית משתמשים ב-ObservabilityConfig Custom Resource (CR) כדי להגדיר את כללי איסוף המדדים.
הגדרת מדדים מותאמים אישית באמצעות ObservabilityConfig
ה-CR ObservabilityConfig מורכב משני חלקים עיקריים, dbClusterRefs ו-customMetrics.
dbClusterRefs
הקטע הזה מכיל רשימה של הפניות למשאבי DBCluster שההגדרה הזו חלה עליהם. כל DBCluster צריך להיות מכוון למשאב DBCluster אחד באותו מרחב שמות.ObservabilityConfig
customMetrics
בקטע הזה מוגדרת ההגדרה הבסיסית של איסוף מדדים מותאמים אישית, כולל מגבלות משאבים והגדרות של שאילתות.
מגבלות משאבים (resourceLimits)
כדי להגן על מסד הנתונים, המערכת אוכפת מגבלות על שאילתות מותאמות אישית. אם לא מציינים את המגבלות האלה בקובץ המניפסט, המערכת משתמשת בערכי ברירת המחדל שמפורטים בטבלה הבאה.
| פרמטר | תיאור | ברירת מחדל | מקסימום | יחידות |
|---|---|---|---|---|
workMemory |
מציינים את work_mem לחיבור הספציפי למסד הנתונים שסוכן המעקב משתמש בו כדי לאסוף את המדדים האלה. ההגדרה הזו היא מקומית לתהליך איסוף המדדים, והיא לא משפיעה על הפרמטר הגלובלי work_mem שהוגדר במפרט DBCluster. |
4MB |
לא רלוונטי | KB, MB (ברירת מחדל: KB) |
maxParallelWorkers |
הפרמטר הזה מציין את max_parallel_workers_per_gather לחיבור הספציפי למסד הנתונים שבו נעשה שימוש על ידי סוכן המעקב. מגדירים את הערך שלו ל-0 כדי להשבית את ההפעלה המקבילה של השאילתות ולמזער את ההשפעה על המעבד. ההגדרה הזו היא מקומית לתהליך איסוף המדדים, והיא לא משפיעה על ההגדרה הגלובלית של מסד הנתונים. | 0 |
לא רלוונטי | מספר שלם |
statementTimeout |
המאפיין הזה מציין את statement_timeout לחיבור הספציפי למסד הנתונים שבו נעשה שימוש על ידי סוכן המעקב. ההגדרה הזו מגבילה את הזמן המקסימלי שמוקצב להרצת שאילתת מדד יחידה. ההגדרה הזו היא מקומית לתהליך איסוף המדדים, והיא לא משפיעה על ההגדרה הגלובלית של מסד הנתונים. | 2s |
30s |
ms, s (ברירת מחדל: ms) |
הגדרות של מדדים מותאמים אישית (definitions)
כל ערך ברשימה definitions מגדיר שאילתה ומתאר איך לפרש את התוצאות שלה.
-
metricGroup: שם ייחודי (אותיות קטנות, מספרים, קווים תחתונים) שמשמש למתן שמות למדדים. -
database: שם מסד הנתונים של היעד של השאילתה. הסוכן של Cloud Monitoring יוצר חיבור למסד הנתונים הספציפי הזה כדי להריץ את השאילתה, ולכן הסכימה שנשאלת צריכה להיות קיימת בו. -
query: הצהרתSELECTSQL תקינה. מותרות רק שאילתותSELECT. -
metrics: רשימה של מיפוי עמודות של תוצאות SQL לסוגי Prometheus:-
usage: label: משתמש בערך העמודה כתווית Prometheus. -
usage: gauge: מייצא את הערך כמדד prometheus gauge. -
usage: counter: מייצא את הערך כמדד prometheus counter.
-
אבטחה והרשאות
האופרטור AlloyDB Omni משתמש בalloydbmonitor user
כדי לאסוף מדדים. כברירת מחדל, האופרטור AlloyDB Omni יוצר את המשתמש הזה
עם המאפיין LOGIN
ומקצה לו את התפקיד pg_monitor
במסד הנתונים postgres.
כשמוסיפים מדדים מותאמים אישית, צריך לוודא שלמשתמש הזה יש את ההרשאות הנוספות המתאימות:
- אחריות המשתמש: מנהלי מסדי נתונים צריכים להעניק באופן ידני הרשאות
SELECTלמשתמשalloydbmonitorלכל הטבלאות, התצוגות או הסכימות הספציפיות של האפליקציה שמשמשות בשאילתות המותאמות אישית. - בדיקת בטיחות של הרשאות כתיבה: כדי לוודא את תקינות המערכת ולמנוע שינוי נתונים בטעות, האופרטור של AlloyDB Omni מבצע בדיקת בטיחות. אם המערכת מוצאת שלמשתמש
alloydbmonitorיש הרשאות כתיבה כלשהן – לדוגמה,INSERT,UPDATEו-DELETE– במסד נתונים יעד, המערכת רושמת שגיאה ומסרבת לאסוף מדדים בהתאמה אישית ממסד הנתונים הזה.
דוגמה למתן הרשאות
כדי להעניק הרשאת קריאה בלבד לכל הטבלאות בסכימה public של מסד נתונים בשם warehousedb, צריך להריץ את הפקודה הבאה:
psql -h <var>DB_CLUSTER_ENDPOINT</var> -U <var>DB_ADMIN_USER</var> -d warehousedb
warehousedb=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO alloydbmonitor;
מניפסט לדוגמה
בקובץ המניפסט לדוגמה הבא מוגדר סוכן המעקב להתחבר למסד הנתונים postgres ולעקוב אחרי נתונים סטטיסטיים של טרנזקציות באמצעות תצוגת המערכת pg_stat_database.
apiVersion: alloydbomni.dbadmin.goog/v1
kind: ObservabilityConfig
metadata:
name: obs-metrics
spec:
dbClusterRefs:
- dbcluster-sample
customMetrics:
resourceLimits:
workMemory: "4MB"
maxParallelWorkers: 0
definitions:
- metricGroup: database
database: "postgres"
query: |
SELECT
curr_db, xact_commit, xact_rollback
FROM pg_stat_database WHERE datname IS NOT NULL
metrics:
- name: curr_db
desc: "Database name"
usage: label
- name: xact_commit
desc: "Transactions committed"
usage: counter
- name: xact_rollback
desc: "Transactions rolled back"
usage: counter
הפניה למדדים
בקטע הזה מפורטים המדדים שנוצרים באמצעות התכונה 'מדדים מותאמים אישית'.
פלט של מדדים שנוצר באמצעות AI
קובץ המניפסט לדוגמה הזה מייצא מדדים בפורמט Prometheus הבא:
# HELP alloydb_omni_custom_database_xact_commit_total Transactions committed
# TYPE alloydb_omni_custom_database_xact_commit_total counter
alloydb_omni_custom_database_xact_commit_total{database="postgres",curr_db="testdb1",dbcluster="dbcluster-sample",dbcluster_type="Primary",dbinstance="n/a",dbinstance_type="n/a",dbnamespace="mc",dbnode="76d3-dbcluster-sample",dbnode_type="Primary"} 382069 1774388549568
# HELP alloydb_omni_custom_database_xact_rollback_total Transactions rolled back
# TYPE alloydb_omni_custom_database_xact_rollback_total counter
alloydb_omni_custom_database_xact_rollback_total{database="postgres",curr_db="testdb1",dbcluster="dbcluster-sample",dbcluster_type="Primary",dbinstance="n/a",dbinstance_type="n/a",dbnamespace="mc",dbnode="76d3-dbcluster-sample",dbnode_type="Primary"} 4364 1774388549568
תוויות רגילות
כל מדד מותאם אישית כולל באופן אוטומטי את התוויות הרגילות הבאות: database, dbcluster, dbcluster_type, dbinstance, dbinstance_type, dbnamespace, dbnode ו-dbnode_type. מידע נוסף על התוויות האלה זמין במאמר תוויות של מדדים ב-AlloyDB Omni.
מדדים של אוסף מדדים
המדדים האלה מציינים את הסטטוס של כל מחזור איסוף מדדים. ביומנים של מאגר הסוכנים לניטור אפשר למצוא הודעות שגיאה מפורטות, כולל שאילתות ספציפיות שהזמן הקצוב לתגובה שלהן הסתיים או שהן נכשלו.
# HELP alloydb_omni_monitor_custom_metrics_errors_total Total number of errors encountered during execution of the custom query
# TYPE alloydb_omni_monitor_custom_metrics_errors_total counter
alloydb_omni_monitor_custom_metrics_errors_total{metricGroup="database",dbcluster="dbcluster-sample",dbnode="...",...} 0 1773703411350
לפני שמשתמשים במדדים מותאמים אישית, חשוב לקחת בחשבון את הנקודות הבאות:
- מותרות רק הצהרות של
SELECT. המערכת דוחה הצהרות שמנסות לשנות נתונים. צריך להריץ את השאילתות באופן ידני ולבדוק את התוצאות והביצועים שלהן לפני שכוללים אותן בהגדרות של המדדים בהתאמה אישית. - חשוב לתכנן כל שאילתת SQL כך שתחזיר מספר מינימלי של שורות תוצאות. מומלץ לציין פחות מחמש שורות ושורה אחת. כך מוודאים שהמדדים והתוויות שנגזרים מתוצאות השאילתה לא יובילו לקרדינליות מוגזמת, שעלולה להשפיע לרעה על הביצועים של מערכת המעקב.
- מבצעים אופטימיזציה של השאילתות ומוודאים שהן לא דורשות משאבים מוגזמים. כדאי להשתמש ב-
resourceLimitsכדי להגן על מסד הנתונים. - כל שאילתה צריכה להחזיר שורות עם שילוב ייחודי של ערכי תוויות.