מעבר מסוכן Logging מהדור הקודם ל-Fluentd במעלה הזרם

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

השוואה בין תכונות

בטבלה הבאה מוצגת השוואת שוויון בין הפונקציות העיקריות של סוכן Logging מדור קודם לבין Fluentd upstream.

תכונות סוכן Logging מדור קודם Upstream Fluentd
הטמעת יומנים ב-Cloud Logging כן כן
יומני מערכת רגילים (syslog) כן כן
קלט של אפליקציית צד שלישי שהוגדרה מראש כן כן †
טיפול ביומנים מובנים (JSON) ולא מובנים (טקסט) כן כן
מיזוג של חריגים בכמה שורות כן כן
Google Cloud העשרת מטא-נתונים כן כן
העשרת מטא-נתונים של Kubernetes כן כן
מזהים ייחודיים של רשומות ביומן כן כן
טרנספורמציה של שדה ביומן כן כן
מיפוי של רמת החומרה כן כן
אימות (ADC ומפתחות של חשבונות שירות) כן כן
פרוטוקולי העברה של REST ו-gRPC כן כן
שילוב של מעקב כן כן

†  למרות שהחבילה google-fluentd-catch-all- config לא נכללת בהתקנה הרגילה של Fluentd ושל פלאגינים במעלה הזרם, אפשר לשמור על פונקציונליות הקלט שהוגדרה מראש על ידי ביצוע שלבי ההעברה שמפורטים במדריך הזה.

לפני שמתחילים

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

  • מכונה וירטואלית נתמכת בGoogle Cloud פרויקט.
  • פרטי הכניסה במופע של מכונה וירטואלית שמאשרים תקשורת עם Cloud Logging. בדרך כלל, למכונות וירטואליות של Compute Engine יש את פרטי הכניסה הנכונים כברירת מחדל. כדי לבדוק אם יש לכם את פרטי הכניסה המתאימים, מריצים את ההליכים של הרשאת סוכן Logging.

העברה ל-Fluentd

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

כדי להעביר את ההגדרה, פועלים לפי השלבים הבאים:

  1. השבתת סוכן הרישום ביומן מדור קודם
  2. התקנת גרסה יציבה של fluentd-package
  3. התקנה Google Cloud תוספים לפלטפורמה
  4. העברת קובצי ההגדרות של תוספי הקלט
  5. עדכון ההגדרה של syslog
  6. עדכון קובץ ההגדרות של Fluentd
  7. אימות שהסוכן Fluentd פועל בצורה תקינה
  8. הסרת סוכן ה-Logging מדור קודם

השבתה של סוכן הרישום ביומן מדור קודם

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

כדי לכבות את סוכן Logging המדור קודם בצורה מסודרת:

  1. פותחים חיבור לטרמינל של מופע המכונה הווירטואלית באמצעות SSH או כלי דומה, ומוודאים שיש לכם גישת sudo.
  2. כדי לרוקן מידע (Flush) את כל היומנים שנשמרו במאגר נתונים זמני לפני כיבוי סוכן Logging מדור קודם, מפעילים את האפשרות flush_at_shutdown:

    1. מעדכנים את הקובץ /etc/google-fluentd/google-fluentd.conf כדי להגדיר את הדגל flush_at_shutdown לערך true:

      # Configure the agent to flush all buffer chunks on shutdown
      <match **>
        @type google_cloud
        flush_at_shutdown true
      </match>
      
    2. מפעילים מחדש את הסוכן כדי להחיל את השינויים בהגדרות:

      sudo service google-fluentd restart
      
  3. עוצרים את סוכן Logging מדור קודם:

    sudo service google-fluentd stop
    

התקנה של גרסה יציבה של fluentd-package

מתקינים הפצה יציבה של Fluentd ‏ (fluentd-package) במופעי מכונות וירטואליות. הוראות מפורטות מופיעות במאמר בנושא Fluentd Install fluent-package.

התקנת Google Cloud פלאגינים של הפלטפורמה

כדי לאפשר ל-Fluentd לבצע אינטראקציה עם Cloud Logging ולטפל בפורמטים ספציפיים של יומנים, צריך להתקין את הפלאגינים הבאים:

  1. אם עדיין לא התקנתם את כלי ה-build להרכבת התוסף, אתם צריכים להתקין אותם:

    ‫Debian או Ubuntu

    מריצים את הפקודה הבאה ב-Debian או ב-Ubuntu:

    sudo apt-get update
    sudo apt-get install -y build-essential
    

    ‫CentOS או RHEL

    מריצים את הפקודה הבאה ב-CentOS או ב-RHEL:

    sudo yum update
    sudo yum groupinstall -y "Development Tools"
    
  2. מתקינים את הפלאגין fluent-plugin-google-cloud:

    sudo fluent-gem install fluent-plugin-google-cloud
    
  3. מתקינים את הפלאגין fluent-plugin-detect-exceptions:

    sudo fluent-gem install fluent-plugin-detect-exceptions
    
  4. אופציונלי: אם הפריסה של סוכן ה-Logging מדור קודם אוספת יומנים מאפליקציות שפועלות באשכול Kubernetes, צריך להתקין את הפלאגין fluent-plugin-kubernetes_metadata_filter:

    sudo fluent-gem install fluent-plugin-kubernetes_metadata_filter
    
  5. אופציונלי: אם סוכן Logging מדור קודם אוסף ומציג מדדים בפורמט Prometheus, צריך להתקין את אבני ה-gem הבאות:

    sudo fluent-gem install prometheus-client -v 0.9.0
    sudo fluent-gem install fluent-plugin-prometheus -v 1.4.0
    

העברה של קובצי ההגדרות האישיות של פלאגין הקלט

כדי להעביר את קובצי המיקום וההגדרות הקיימים של התקנת Fluentd, מבצעים את השלבים הבאים:

  1. יוצרים ספריות לקובצי התצורה והמיקום של Fluentd:

    # Create the destination directory for Fluentd configuration files
    sudo mkdir -p /etc/fluent/config.d
    
    # Create the destination directory for position files
    sudo mkdir -p /var/lib/fluent/pos
    
  2. מעתיקים את קובצי ההגדרות google-fluentd לתיקיית ההגדרות של Fluentd:

    sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/
    
  3. מעתיקים את כל הקבצים של המיקום (.pos) שמשמשים את google-fluentd לספרייה של קובצי המיקום ב-Fluentd:

    sudo cp /var/lib/google-fluentd/pos/*.pos /var/lib/fluent/pos/
    

    קובצי המיקום משמשים למעקב אחרי מיקומי קריאה בקובצי יומן. העברה שלהם מאפשרת ל-Fluentd להתחיל באותה נקודה שבה google-fluentd השתמש.

  4. מעדכנים את הנתיב pos_file בקובצי התצורה החדשים של Fluentd כך שיצביע על ספריית קובצי המיקום החדשה:

    sudo sed -i 's#/var/lib/google-fluentd#/var/lib/fluent#g' /etc/fluent/config.d/*.conf
    
  5. נותנים למשתמש השירות של Fluentd‏ ,_fluentd, גישת קריאה וכתיבה לספרייה /var/lib/fluent/:

    sudo chown -R _fluentd:_fluentd /var/lib/fluent/
    
  6. נותנים למשתמש _fluentd הרשאת קריאה לקבצי syslog:

    sudo usermod -a -G adm _fluentd
    

עדכון ההגדרה של syslog

התהליך של Fluentd במעלה הזרם פועל כמשתמש ללא הרשאות, שלא יכול להתחבר ליציאות עם הרשאות שמספרן קטן מ-1024. אם ההגדרה של סוכן Logging מדור קודם כוללת איסוף של syslog מבוסס-רשת באמצעות @type syslog ב-port 514, צריך לשנות את ההגדרה.

כדי לעדכן את הגדרת היציאה:

  1. מחליפים את כל התוכן של הקובץ /etc/fluent/config.d/syslog_endpoint.conf בהגדרה הבאה:

    sudo tee /etc/fluent/config.d/syslog_endpoint.conf > /dev/null <<EOF
    <source>
      @type syslog
      port 5140
      <transport tcp>
      </transport>
      bind 127.0.0.1
      tag syslog
    </source>
    EOF
    
  2. יוצרים או משנים את הקובץ /etc/rsyslog.d/40-fluentd-forward.conf כדי להעביר הודעות syslog ליציאה החדשה של Fluentd:

    sudo tee /etc/rsyslog.d/40-fluentd-forward.conf > /dev/null <<EOF
    # Forward all syslog messages to Fluentd on localhost:5140 via TCP
    *.* @@127.0.0.1:5140
    EOF
    
  3. מפעילים מחדש את השירות rsyslog כדי להחיל את השינויים:

    sudo systemctl restart rsyslog.service
    

עדכון קובץ ההגדרה הראשי של Fluentd

כדי להגדיר את סוכן Fluentd במעלה הזרם, משכפלים את ההגדרות מקובץ ההגדרות של הסוכן, google-fluentd.conf, לקובץ ההגדרות הראשי של Fluentd, שנמצא ב-/etc/fluent/fluentd.conf.

כדי להגדיר סוכן Fluentd במעלה הזרם, מבצעים את השלבים הבאים:

  1. מעתיקים את כל התוכן של הקובץ google-fluentd.conf כדי להחליף את קובץ התצורה של Fluentd שמוגדר כברירת מחדל:

    sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.conf
    
  2. מעדכנים את buffer_path בקובצי ההגדרות של Fluentd כך שיצביעו על ספריית Fluentd החדשה:

    sudo sed -i 's#/var/log/google-fluentd#/var/log/fluent#g' /etc/fluent/fluentd.conf
    
  3. בודקים את הקובץ fluentd.conf כדי לוודא שההגדרות כוללות את הפרטים הבאים:

    • ‫@include config.d/*.conf קיים כדי לייבא את כל ההגדרות של תוסף הקלט.
    • הבלוק <match **> @type google_cloud מוגדר להזרמת יומנים אל Cloud Logging.
    • ה-buffer_path בתוך פלאגין הפלט מצביע עכשיו על /var/lib/fluent/.
    • כל הנחיית pos_file בתוספי קלט מצביעה על /var/lib/fluent/.
  4. מריצים בדיקה כדי לוודא שההגדרה של Fluentd תקינה:

    sudo fluentd -c /etc/fluent/fluentd.conf --dry-run
    

    בודקים אם יש בפלט התראות error או warn. כדי להמשיך, צריך לפתור את הבעיות שזוהו. פרטים על שינויים בתחביר מופיעים במאמר תאימות ההגדרות ל-Fluentd במעלה הזרם.

  5. מפעילים מחדש את סוכן Fluentd:

    sudo service fluentd restart
    

אימות הפעולה התקינה של סוכן Fluentd

אחרי שמפעילים את Fluentd, מוודאים שהיומנים נשלחים בהצלחה אל Cloud Logging:

  1. מוודאים ש-Fluentd פועל ללא שגיאות:

    $ sudo service fluentd status
    

    סטטוס השירות צריך להיות פעיל (פועל).

  2. בודקים את היומנים של Fluentd ומוודאים שאין שגיאות או אזהרות:

    sudo tail -n 100 /var/log/fluent/fluentd.log | grep -iE "error|warn|failed|exception" || true
    

    לא אמורות להופיע שגיאות או אזהרות.

  3. בודקים ב-Cloud Logging כדי לוודא שהיומנים מתקבלים ממופע מכונת ה-VM. מידע על צפייה ביומנים זמין במאמר שימוש ב-Logs Explorer.

הסרת סוכן Logging מדור קודם

רק אחרי שמוודאים ש-Fluentd החדש שולח יומנים ל-Cloud Logging, מסירים את סוכן Logging מדור קודם ואת קובצי ההגדרות שלו:

‫Debian או Ubuntu

  sudo apt-get remove --purge google-fluentd

‫CentOS או RHEL

  sudo yum remove google-fluentd