הגדרת החלפת יומנים ב-AlloyDB Omni

בחירת גרסת תיעוד:

במסמך הזה מוסבר איך מגדירים רוטציה של יומני אבחון של AlloyDB Omni כשמשתמשים באופרטור AlloyDB Omni Kubernetes.

קבצי היומן הבאים נמצאים בספרייה /obs/diagnostic/:

  • postgresql.audit: קובץ היומן הזה אוסף יומני ביקורת של סשנים ושל גישה לאובייקטים. כדי לאסוף יומני ביקורת, צריך להפעיל את יומני הביקורת.

  • postgresql.log: בקובץ היומן הזה נאספים יומני שרת של PostgreSQL. היומנים האלה תמיד נאספים ואין צורך להפעיל אותם.

כשמתבצעת רוטציה של קובץ יומן, קורה הדבר הבא:

  1. קובץ היומן מועתק לספרייה /obs/diagnostic/archive/. אם בספרייה הזו קיים קובץ יומן עם אותו שם, הוא יוחלף.

  2. התוכן של קובץ היומן המקורי שסובב נמחק, כך שהקובץ ריק.

  3. המידע ביומן מתחיל להיכתב מיד בקובץ היומן הריק שהועבר. המידע ביומן נכתב בקובץ היומן עד שהקובץ מגיע לגודל או לגיל מסוים, ואז הוא מועבר שוב. היומנים מועברים כדי שלא יהיו גדולים מדי.

כברירת מחדל, הגדרת הרוטציה היא שכל קובץ יומן יסתובב כשהגודל שלו יגיע ל-200 MB. הרוטציה שמוגדרת כברירת מחדל לא כוללת הגדרת גיל.

כל קובץ בארכיון דחוס בנפרד באמצעות פורמט הקובץ Gzip ‏ (.gz).

קבצים בארכיון נשמרים למשך 7 ימים. קבצים בארכיון שגילם יותר מ-7 ימים מוסרים אוטומטית, למעט הקובץ שהועבר לארכיון במהלך הרוטציה הקודמת. לדוגמה, אם log_rotation_age נוצר לפני יותר מ-7 ימים, הקובץ המועבר לארכיון יגיע לסף של 7 ימים לפני הרוטציה של הקובץ הנוכחי. במקרה כזה, הקובץ הזה בארכיון לא יוסר עד שהרוטציה הבאה תיצור קובץ חדש בארכיון.

כל שם של קובץ יומן שנשמר בארכיון הוא בפורמט הבא: postgresql-%Y-%m-%d_%H%M%S.log.gz. חותמת הזמן נקבעת בזמן רוטציית היומן והיא מוצגת לפי אזור זמן אוניברסלי מתואם (UTC). לדוגמה, אם הרוטציה של היומן מתבצעת ב-20 בדצמבר 2024 בשעה 13:01:02 (שעון UTC), שם הקובץ שנשמר בארכיון הוא postgresql-%Y-%m-%d_%H%M%S.log.gz.postgresql-2024-12-20_130102.log.gz

כדי לשמור קובץ בארכיון באופן קבוע, אפשר להעתיק אותו מקונטיינר מסד הנתונים לספרייה המקומית באמצעות kubectl cp.

הפעלה של יומני ביקורת

כדי שיומני הגישה של סשנים ואובייקטים ייאספו בקובץ postgresql.audit, צריך להפעיל את פרמטר מסד הנתונים pgaudit. כדי להפעיל את pgaudit, מוסיפים את השורה הבאה לקטע parameters בקובץ v1_dbcluster_parameters.yaml בתיקייה Secret:

alloydb.enable_pgaudit: "on"

דוגמה:

apiVersion: v1
kind: Secret
...
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
   name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.7.1"
  primarySpec:
    ...
    parameters:
      ...
      alloydb.enable_pgaudit: "on"

מידע נוסף זמין במאמר pgaudit בקטע תוספים נתמכים למסדי נתונים ובמאמר PostgreSQL Auditing Extension. יומני השרת של PostgreSQL תמיד נאספים בקובץ postgresql.log ואין צורך להפעיל את pgaudit.

הצגת הנתיב של קובץ יומן הביקורת

אפשר להשתמש בפונקציית ה-SQL‏ alloydb_audit_current_logfile כדי לראות את הנתיב של קובץ יומן הביקורת. אם הביקורת מושבתת, התוצאה היא NULL.

SELECT alloydb_audit_current_logfile();

 alloydb_audit_current_logfile
----------------------------------------------------
 /var/log/pglogs/postgresql-2025-03-28_042024.audit

הגדרת החלפת יומנים

אם רוצים לשלוט יותר טוב על מועד הרוטציה של היומנים, אפשר להגדיר גודל קובץ מקסימלי, משך זמן בין רוטציות של יומנים או את שניהם. משך הזמן בין רוטציות של יומנים נקרא גם גיל היומן. אם משתמשים בשתי ההגדרות, כל יומן עובר רוטציה כשהוא מגיע לאחד מספי הערך.

כדי להגדיר את החלפת היומנים, מגדירים פרמטר אחד או את שני הפרמטרים הבאים בקטע parameters של מניפסט DBCluster:

  • log_rotation_size: "SIZE_IN_KB"
  • log_rotation_age: "AGE_IN_MINUTES"

כדי להשבית אחת מההגדרות של החלפת יומנים, מגדירים אותה לאפס ("0"). כדי לשמור על הגדרת ברירת המחדל של החלפת יומנים כשהגודל שלהם מגיע ל-200 MB, לא מגדירים אף אחד מהפרמטרים.

דוגמה לגודל יומן ומשך זמן מקסימליים להחלפת יומנים

בדוגמה הבאה מוגדר שקובצי היומן יוחלפו כשהגודל שלהם יגיע ל-400 MB או כשהזמן בין החלפות היומן יגיע ליום אחד, לפי מה שיקרה קודם:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "400000" # 400 MB
      log_rotation_age: "1440" # 24 hours * 60 minutes = 1 day

דוגמה לגודל יומן מקסימלי להחלפת יומנים

בדוגמה הבאה מוגדרת רוטציה של יומנים כשהגודל שלהם מגיע ל-400 MB:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "400000" # 400 MB
      log_rotation_age: "0" # Set to 0 to disable

דוגמה למשך הזמן של החלפת יומנים

בדוגמה הבאה, היומנים מוגדרים להתחלף כל 24 שעות:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "0" # Set to 0 to disable
      log_rotation_age: "1440" # 24 hours * 60 minutes = 1 day

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