如果您使用舊版 Logging 代理程式,且有高度自訂的設定,建議遷移至開放原始碼的 Fluentd。您可以設定 Fluentd,保留 Logging 代理程式 環境的行為,同時不中斷 Cloud Logging 收集記錄。本文說明遷移程序。
功能比較
下表比較舊版 Logging 代理程式和上游 Fluentd 的主要功能。
| 功能與特色 | 舊版 Logging 代理程式 | 上游 Fluentd |
|---|---|---|
| 將記錄擷取至 Cloud Logging | 是 | 是 |
| 標準系統記錄 (syslog) | 是 | 是 |
| 預先設定的第三方應用程式輸入內容 | 是 | 是 † |
| 處理結構化 (JSON) 和非結構化 (文字) 記錄 | 是 | 是 |
| 合併多行例外狀況 | 是 | 是 |
| Google Cloud 中繼資料充實 | 是 | 是 |
| Kubernetes 中繼資料擴充功能 | 是 | 是 |
| 不重複的記錄項目 ID | 是 | 是 |
| 記錄檔欄位轉換 | 是 | 是 |
| 嚴重性對應 | 是 | 是 |
| 驗證 (ADC 和服務帳戶金鑰) | 是 | 是 |
| REST 和 gRPC 傳輸通訊協定 | 是 | 是 |
| 監控整合 | 是 | 是 |
† 雖然上游 Fluentd 和外掛程式的標準安裝中未包含 google-fluentd-catch-all- config 套件,但您可以按照本指南詳述的遷移步驟,維持預先設定的輸入功能。
事前準備
開始遷移前,請確認您具備以下項目:
- 支援的 VM 執行個體,位於Google Cloud 專案中。
- VM 執行個體上的憑證,可授權與 Cloud Logging 通訊。根據預設,Compute Engine VM 執行個體通常已配置正確憑證。如要確認您是否具備適當的憑證,請執行「授權記錄代理程式」程序。
遷移至 Fluentd
本節將說明如何遷移至上游 Fluentd 版本,同時維持舊版 Logging 代理程式提供的主要功能。
如要遷移設定,請完成下列步驟:
- 關閉舊版 Logging 代理程式
- 安裝穩定版 fluentd-package
- 安裝 Google Cloud 平台外掛程式
- 遷移輸入外掛程式設定檔
- 更新系統記錄設定
- 更新 Fluentd 設定檔
- 確認 Fluentd 代理程式是否正常運作
- 解除安裝舊版 Logging 代理程式
關閉舊版 Logging 代理程式
安裝上游 Fluentd 代理程式前,請務必停止舊版 Logging 代理程式,以免發生衝突。為避免在遷移期間遺失任何待處理的記錄,請務必在關機時清除所有緩衝記錄。
如要正常關閉舊版 Logging 代理程式,請按照下列步驟操作:
- 使用 SSH 或類似工具開啟 VM 執行個體的終端機連線,並確認您擁有 sudo 存取權。
如要在關閉舊版 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
在 VM 執行個體中安裝穩定版本的 Fluentd (fluentd-package)。如需操作說明,請參閱 Fluentd 安裝 fluent-package 說明文件。
安裝 Google Cloud 平台外掛程式
如要讓 Fluentd 與 Cloud Logging 互動,並處理特定記錄格式,請安裝下列外掛程式:
如果尚未安裝,請安裝擴充功能編譯的建構工具:
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/將
google-fluentd使用的所有位置 (.pos) 檔案複製到 Fluentd 的 position-file 目錄:sudo cp /var/lib/google-fluentd/pos/*.pos /var/lib/fluent/pos/位置檔案用於追蹤記錄檔中的讀取位置。遷移這些檔案後,Fluentd 就能從 google-fluentd 使用的相同位置開始。
更新新 Fluentd 設定檔中的
pos_file路徑,指向新的位置檔案目錄: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
更新系統記錄設定
上游 Fluentd 會以無權限使用者身分執行,無法繫結至編號小於 1024 的權限通訊埠。如果舊版 Logging 代理程式設定包含使用 @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檔案,將系統記錄訊息轉送至新的 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 設定檔
從代理程式的設定檔 google-fluentd.conf 複製設定,然後貼到位於 /etc/fluent/fluentd.conf 的主要 Fluentd 設定檔,即可設定上游 Fluentd 代理程式。
如要設定上游 Fluentd 代理程式,請完成下列步驟:
複製
google-fluentd.conf檔案的完整內容,覆寫預設上游 Fluentd 設定檔:sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.conf更新 Fluentd 設定檔中的
buffer_path,指向新的 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