אם אתם משתמשים בסוכן 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 המדור קודם.
כדי להעביר את ההגדרה, פועלים לפי השלבים הבאים:
- השבתת סוכן הרישום ביומן מדור קודם
- התקנת גרסה יציבה של fluentd-package
- התקנה Google Cloud תוספים לפלטפורמה
- העברת קובצי ההגדרות של תוספי הקלט
- עדכון ההגדרה של syslog
- עדכון קובץ ההגדרות של Fluentd
- אימות שהסוכן Fluentd פועל בצורה תקינה
- הסרת סוכן ה-Logging מדור קודם
השבתה של סוכן הרישום ביומן מדור קודם
לפני שמתקינים את סוכן Fluentd של upstream, צריך להפסיק את סוכן Logging מדור קודם כדי למנוע התנגשויות. כדי למנוע אובדן של יומנים בהמתנה במהלך ההעברה, חשוב לוודא שכל היומנים שנמצאים במאגר הזמני יועברו לפני כיבוי המערכת.
כדי לכבות את סוכן Logging המדור קודם בצורה מסודרת:
- פותחים חיבור לטרמינל של מופע המכונה הווירטואלית באמצעות SSH או כלי דומה, ומוודאים שיש לכם גישת sudo.
כדי לרוקן מידע (Flush) את כל היומנים שנשמרו במאגר נתונים זמני לפני כיבוי סוכן Logging מדור קודם, מפעילים את האפשרות
flush_at_shutdown:מעדכנים את הקובץ
/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>מפעילים מחדש את הסוכן כדי להחיל את השינויים בהגדרות:
sudo service google-fluentd restart
עוצרים את סוכן Logging מדור קודם:
sudo service google-fluentd stop
התקנה של גרסה יציבה של fluentd-package
מתקינים הפצה יציבה של Fluentd (fluentd-package) במופעי מכונות וירטואליות. הוראות מפורטות מופיעות במאמר בנושא Fluentd Install
fluent-package.
התקנת Google Cloud פלאגינים של הפלטפורמה
כדי לאפשר ל-Fluentd לבצע אינטראקציה עם Cloud Logging ולטפל בפורמטים ספציפיים של יומנים, צריך להתקין את הפלאגינים הבאים:
אם עדיין לא התקנתם את כלי ה-build להרכבת התוסף, אתם צריכים להתקין אותם:
Debian או Ubuntu
מריצים את הפקודה הבאה ב-Debian או ב-Ubuntu:
sudo apt-get update sudo apt-get install -y build-essentialCentOS או RHEL
מריצים את הפקודה הבאה ב-CentOS או ב-RHEL:
sudo yum update sudo yum groupinstall -y "Development Tools"מתקינים את הפלאגין
fluent-plugin-google-cloud:sudo fluent-gem install fluent-plugin-google-cloudמתקינים את הפלאגין
fluent-plugin-detect-exceptions:sudo fluent-gem install fluent-plugin-detect-exceptionsאופציונלי: אם הפריסה של סוכן ה-Logging מדור קודם אוספת יומנים מאפליקציות שפועלות באשכול Kubernetes, צריך להתקין את הפלאגין
fluent-plugin-kubernetes_metadata_filter:sudo fluent-gem install fluent-plugin-kubernetes_metadata_filterאופציונלי: אם סוכן 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, מבצעים את השלבים הבאים:
יוצרים ספריות לקובצי התצורה והמיקום של 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מעתיקים את קובצי ההגדרות
google-fluentdלתיקיית ההגדרות של Fluentd:sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/מעתיקים את כל הקבצים של המיקום (
.pos) שמשמשים אתgoogle-fluentdלספרייה של קובצי המיקום ב-Fluentd:sudo cp /var/lib/google-fluentd/pos/*.pos /var/lib/fluent/pos/קובצי המיקום משמשים למעקב אחרי מיקומי קריאה בקובצי יומן. העברה שלהם מאפשרת ל-Fluentd להתחיל באותה נקודה שבה google-fluentd השתמש.
מעדכנים את הנתיב
pos_fileבקובצי התצורה החדשים של Fluentd כך שיצביע על ספריית קובצי המיקום החדשה:sudo sed -i 's#/var/lib/google-fluentd#/var/lib/fluent#g' /etc/fluent/config.d/*.confנותנים למשתמש השירות של Fluentd ,
_fluentd, גישת קריאה וכתיבה לספרייה/var/lib/fluent/:sudo chown -R _fluentd:_fluentd /var/lib/fluent/נותנים למשתמש
_fluentdהרשאת קריאה לקבצי syslog:sudo usermod -a -G adm _fluentd
עדכון ההגדרה של syslog
התהליך של Fluentd במעלה הזרם פועל כמשתמש ללא הרשאות, שלא יכול להתחבר ליציאות עם הרשאות שמספרן קטן מ-1024. אם ההגדרה של סוכן Logging מדור קודם כוללת איסוף של syslog מבוסס-רשת באמצעות @type syslog ב-port 514, צריך לשנות את ההגדרה.
כדי לעדכן את הגדרת היציאה:
מחליפים את כל התוכן של הקובץ
/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יוצרים או משנים את הקובץ
/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מפעילים מחדש את השירות
rsyslogכדי להחיל את השינויים:sudo systemctl restart rsyslog.service
עדכון קובץ ההגדרה הראשי של Fluentd
כדי להגדיר את סוכן Fluentd במעלה הזרם, משכפלים את ההגדרות מקובץ ההגדרות של הסוכן, google-fluentd.conf, לקובץ ההגדרות הראשי של Fluentd, שנמצא ב-/etc/fluent/fluentd.conf.
כדי להגדיר סוכן Fluentd במעלה הזרם, מבצעים את השלבים הבאים:
מעתיקים את כל התוכן של הקובץ
google-fluentd.confכדי להחליף את קובץ התצורה של Fluentd שמוגדר כברירת מחדל:sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.confמעדכנים את
buffer_pathבקובצי ההגדרות של Fluentd כך שיצביעו על ספריית Fluentd החדשה:sudo sed -i 's#/var/log/google-fluentd#/var/log/fluent#g' /etc/fluent/fluentd.confבודקים את הקובץ
fluentd.confכדי לוודא שההגדרות כוללות את הפרטים הבאים:-
@include config.d/*.confקיים כדי לייבא את כל ההגדרות של תוסף הקלט. - הבלוק
<match **> @type google_cloudמוגדר להזרמת יומנים אל Cloud Logging. - ה-
buffer_pathבתוך פלאגין הפלט מצביע עכשיו על/var/lib/fluent/. - כל הנחיית
pos_fileבתוספי קלט מצביעה על/var/lib/fluent/.
-
מריצים בדיקה כדי לוודא שההגדרה של Fluentd תקינה:
sudo fluentd -c /etc/fluent/fluentd.conf --dry-runבודקים אם יש בפלט התראות
errorאוwarn. כדי להמשיך, צריך לפתור את הבעיות שזוהו. פרטים על שינויים בתחביר מופיעים במאמר תאימות ההגדרות ל-Fluentd במעלה הזרם.מפעילים מחדש את סוכן Fluentd:
sudo service fluentd restart
אימות הפעולה התקינה של סוכן Fluentd
אחרי שמפעילים את Fluentd, מוודאים שהיומנים נשלחים בהצלחה אל Cloud Logging:
מוודאים ש-Fluentd פועל ללא שגיאות:
$ sudo service fluentd statusסטטוס השירות צריך להיות פעיל (פועל).
בודקים את היומנים של Fluentd ומוודאים שאין שגיאות או אזהרות:
sudo tail -n 100 /var/log/fluent/fluentd.log | grep -iE "error|warn|failed|exception" || trueלא אמורות להופיע שגיאות או אזהרות.
בודקים ב-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