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

בחירת גרסה של מאמר העזרה:

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

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

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

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

כשקובץ יומן מסתובב, קורה הדבר הבא:

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

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

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

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

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

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

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

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

כדי שיומני הגישה של סשנים ואובייקטים ייאספו בקובץ 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: "17.5.0"
  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

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