Bermigrasi dari agen Logging lama ke Fluentd upstream

Jika Anda menggunakan agen Logging lama dan memiliki konfigurasi yang sangat disesuaikan, sebaiknya lakukan migrasi ke Fluentd open source. Anda dapat mengonfigurasi Fluentd untuk mempertahankan perilaku lingkungan agen Logging Anda tanpa mengganggu pengumpulan log Anda oleh Cloud Logging. Dokumen ini menjelaskan proses migrasi.

Perbandingan fitur

Tabel berikut memberikan perbandingan kesetaraan fungsi utama antara agen Logging lama dan Fluentd upstream.

Fitur Agen Logging Lama Fluentd Upstream
Penyerapan log ke Cloud Logging Ya Ya
Log sistem standar (syslog) Ya Ya
Input aplikasi pihak ketiga yang telah dikonfigurasi sebelumnya Ya Ya †
Penanganan log terstruktur (JSON) dan tidak terstruktur (teks) Ya Ya
Penggabungan pengecualian multiline Ya Ya
Google Cloud pengayaan metadata Ya Ya
Peningkatan kualitas metadata Kubernetes Ya Ya
ID entri log unik Ya Ya
Transformasi kolom log Ya Ya
Pemetaan tingkat keparahan Ya Ya
Autentikasi (ADC dan Kunci Akun Layanan) Ya Ya
Protokol transportasi REST dan gRPC Ya Ya
Integrasi pemantauan Ya Ya

†  Meskipun paket google-fluentd-catch-all- config tidak disertakan dalam penginstalan standar plugin dan Fluentd upstream, Anda dapat mempertahankan fungsi input yang telah dikonfigurasi sebelumnya dengan mengikuti langkah-langkah migrasi yang dijelaskan dalam panduan ini.

Sebelum memulai

Sebelum memulai migrasi, pastikan Anda memiliki hal berikut:

  • Instance VM yang didukung dalam project Google Cloud .
  • Kredensial pada instance VM yang mengizinkan komunikasi dengan Cloud Logging. Instance VM Compute Engine umumnya memiliki kredensial yang benar secara default. Untuk memeriksa apakah Anda memiliki kredensial yang tepat, jalankan prosedur Mengizinkan agen Logging.

Bermigrasi ke Fluentd

Bagian ini menguraikan langkah-langkah untuk bermigrasi ke versi Fluentd upstream, dengan tetap mempertahankan fungsi utama yang disediakan oleh agen Logging lama.

Untuk memigrasikan penyiapan Anda, selesaikan langkah-langkah berikut:

  1. Matikan agen Logging lama
  2. Instal versi stabil fluentd-package
  3. Menginstal Google Cloud plugin Platform
  4. Memigrasikan file konfigurasi plugin input Anda
  5. Perbarui konfigurasi syslog
  6. Memperbarui file konfigurasi Fluentd
  7. Memvalidasi bahwa agen Fluentd berjalan dengan benar
  8. Meng-uninstal agen Logging lama

Matikan agen Logging lama

Sebelum menginstal agen Fluentd upstream, Anda harus menghentikan agen Logging lama untuk menghindari konflik. Untuk menghindari hilangnya log yang tertunda selama migrasi, pastikan Anda menghapus semua log yang di-buffer saat mematikan perangkat.

Untuk menonaktifkan agen Logging lama dengan benar, lakukan langkah berikut:

  1. Buka koneksi terminal ke instance VM Anda menggunakan SSH atau alat serupa dan pastikan Anda memiliki akses sudo.
  2. Untuk melakukan flush log yang di-buffer sebelum mematikan Agen logging lama, aktifkan opsi flush_at_shutdown:

    1. Perbarui file /etc/google-fluentd/google-fluentd.conf untuk menyetel flag flush_at_shutdown ke true:

      # Configure the agent to flush all buffer chunks on shutdown
      <match **>
        @type google_cloud
        flush_at_shutdown true
      </match>
      
    2. Mulai ulang agen untuk menerapkan perubahan konfigurasi:

      sudo service google-fluentd restart
      
  3. Hentikan agen Logging lama:

    sudo service google-fluentd stop
    

Instal versi stabil fluentd-package

Instal distribusi Fluentd yang stabil (fluentd-package) di instance VM Anda. Untuk mengetahui petunjuknya, lihat dokumentasi Fluentd Install fluent-package.

Menginstal plugin Google Cloud Platform

Untuk mengaktifkan Fluentd berinteraksi dengan Cloud Logging dan menangani format log tertentu, instal plugin berikut:

  1. Jika belum diinstal, instal alat build untuk kompilasi ekstensi:

    Debian atau Ubuntu

    Jalankan perintah berikut di Debian atau Ubuntu:

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

    CentOS atau RHEL

    Jalankan perintah berikut di CentOS atau RHEL:

    sudo yum update
    sudo yum groupinstall -y "Development Tools"
    
  2. Instal plugin fluent-plugin-google-cloud:

    sudo fluent-gem install fluent-plugin-google-cloud
    
  3. Instal plugin fluent-plugin-detect-exceptions:

    sudo fluent-gem install fluent-plugin-detect-exceptions
    
  4. Opsional: jika deployment agen Logging lama Anda mengumpulkan log dari aplikasi yang berjalan dalam cluster Kubernetes, instal plugin fluent-plugin-kubernetes_metadata_filter:

    sudo fluent-gem install fluent-plugin-kubernetes_metadata_filter
    
  5. Opsional: Jika agen Logging lama Anda mengumpulkan dan mengekspos metrik dalam format Prometheus, instal gem berikut:

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

Memigrasikan file konfigurasi input-plugin

Untuk memigrasikan file posisi dan konfigurasi yang ada untuk penginstalan Fluentd, selesaikan langkah-langkah berikut:

  1. Buat direktori untuk file konfigurasi dan posisi 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. Salin file konfigurasi google-fluentd Anda ke direktori konfigurasi untuk Fluentd:

    sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/
    
  3. Salin semua file posisi (.pos) yang digunakan oleh google-fluentd ke direktori position-file untuk Fluentd:

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

    File posisi digunakan untuk melacak posisi baca dalam file log. Memigrasikan file tersebut memungkinkan Fluentd dimulai pada titik yang sama dengan yang digunakan google-fluentd.

  4. Perbarui jalur pos_file di file konfigurasi Fluentd baru untuk mengarah ke direktori file posisi yang baru:

    sudo sed -i 's#/var/lib/google-fluentd#/var/lib/fluent#g' /etc/fluent/config.d/*.conf
    
  5. Berikan akses baca dan tulis kepada pengguna layanan Fluentd ,_fluentd, ke direktori /var/lib/fluent/:

    sudo chown -R _fluentd:_fluentd /var/lib/fluent/
    
  6. Memberi pengguna _fluentd akses baca ke file syslog:

    sudo usermod -a -G adm _fluentd
    

Memperbarui konfigurasi syslog

Fluentd upstream berjalan sebagai pengguna tanpa hak istimewa, yang tidak dapat terikat ke port dengan hak istimewa yang bernomor kurang dari 1024. Jika penyiapan agen Logging lama Anda mencakup pengumpulan syslog berbasis jaringan menggunakan @type syslog di port 514, Anda harus menyesuaikan konfigurasi.

Untuk memperbarui konfigurasi port, lakukan hal berikut:

  1. Ganti seluruh konten file /etc/fluent/config.d/syslog_endpoint.conf dengan konfigurasi berikut:

    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. Buat atau ubah file /etc/rsyslog.d/40-fluentd-forward.conf untuk meneruskan pesan syslog ke port Fluentd baru:

    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. Mulai ulang layanan rsyslog untuk menerapkan perubahan:

    sudo systemctl restart rsyslog.service
    

Perbarui file konfigurasi Fluentd utama

Konfigurasi agen Fluentd upstream dengan mereplikasi setelan Anda dari file konfigurasi agen, google-fluentd.conf, ke file konfigurasi Fluentd utama, yang berada di /etc/fluent/fluentd.conf.

Untuk mengonfigurasi agen Fluentd upstream, selesaikan langkah-langkah berikut:

  1. Salin seluruh konten file google-fluentd.conf untuk menggantikan file konfigurasi Fluentd upstream default:

    sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.conf
    
  2. Perbarui buffer_path di file konfigurasi Fluentd Anda agar mengarah ke direktori Fluentd baru:

    sudo sed -i 's#/var/log/google-fluentd#/var/log/fluent#g' /etc/fluent/fluentd.conf
    
  3. Periksa file fluentd.conf untuk mengonfirmasi bahwa konfigurasi mencakup hal berikut:

    • @include config.d/*.conf ada untuk mengimpor semua konfigurasi plugin input Anda.
    • Blok <match **> @type google_cloud dikonfigurasi untuk melakukan streaming log ke Cloud Logging.
    • buffer_path dalam plugin output kini mengarah ke /var/lib/fluent/.
    • Semua perintah pos_file dalam plugin input mengarah ke /var/lib/fluent/.
  4. Jalankan uji coba untuk memverifikasi konfigurasi Fluentd Anda:

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

    Periksa output yang dihasilkan untuk melihat apakah ada pemberitahuan error atau warn. Anda harus menyelesaikan masalah yang teridentifikasi sebelum melanjutkan. Untuk mengetahui detail perubahan sintaksis, lihat Kompatibilitas konfigurasi untuk Fluentd upstream.

  5. Mulai ulang agen Fluentd:

    sudo service fluentd restart
    

Memastikan bahwa agen Fluentd berjalan dengan benar

Setelah memulai Fluentd, pastikan log berhasil dikirim ke Cloud Logging:

  1. Pastikan Fluentd berjalan tanpa error:

    $ sudo service fluentd status
    

    Status layanan harus aktif (berjalan).

  2. Periksa log Fluentd dan pastikan tidak ada error atau peringatan:

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

    Tidak ada error atau peringatan yang tercantum.

  3. Periksa Cloud Logging untuk mengonfirmasi bahwa log diterima dari instance VM Anda. Untuk mengetahui informasi tentang cara melihat log, lihat Menggunakan Logs Explorer.

Menghapus instalan agen Logging lama

Hanya setelah Anda memvalidasi bahwa Fluentd baru berhasil mengirim log ke Cloud Logging, hapus agen Logging lama dan file konfigurasi:

Debian atau Ubuntu

  sudo apt-get remove --purge google-fluentd

CentOS atau RHEL

  sudo yum remove google-fluentd