Memecahkan masalah umum forwarder Linux

Halaman ini membantu Anda mengenali dan memecahkan masalah umum yang mungkin Anda hadapi saat menggunakan forwarder Chronicle Linux.

Forwarder tidak dimulai

Forwarder gagal dimulai dan berada dalam loop mulai ulang berkelanjutan dengan error berikut di log:

F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory

Kemungkinan penyebab 1: Pemetaan salah pada file konfigurasi

Untuk mengatasi masalah ini, pastikan Anda meneruskan jalur yang benar ke file konfigurasi dan memetakannya ke folder eksternal.

Kemungkinan penyebab 2: SELinux diaktifkan

  1. Periksa file konfigurasi dengan masuk ke container tanpa memulai forwarder dan jalankan perintah berikut:

    docker run --name cfps --log-opt max-size=100m --log-opt   max-file=10 --net=host -v ~/configuration:/opt/chronicle/external --entrypoint=/bin/bash \
    -it gcr.io/chronicle-container/cf_production_
    

    Perintah ini akan menempatkan Anda di shell dari dalam container tersebut.

  2. Jalankan perintah berikut:

    ls -lrt /opt.chronicle/external/
    

    Jika Anda mendapatkan error izin ditolak, ini menunjukkan bahwa penerus tidak dapat membuka file konfigurasi dan karenanya tidak dapat memulai.

Untuk mengatasi masalah ini, lakukan langkah berikut:

  1. Periksa status SELinux dengan menjalankan perintah berikut:

      sestatus
    
  2. Jika status SELinux diaktifkan di output, jalankan perintah berikut untuk menonaktifkannya:

      setenforce 0
    

Log tidak terkirim ke tenant Chronicle

Kemungkinan penyebab 1: Resolusi DNS

Periksa apakah host tidak dapat me-resolve alamat atau menjangkau Chronicle dengan menjalankan perintah berikut:

  nslookup malachiteingestion-pa.googleapis.com

Jika perintah gagal, hubungi tim jaringan Anda untuk menyelesaikan masalah.

Kemungkinan penyebab 2: Firewall

Periksa apakah firewall lokal memblokir komunikasi antara Chronicle dan forwarder dengan menjalankan perintah berikut:

  firewall-cmd --state

Jika firewall diaktifkan, nonaktifkan dengan menjalankan perintah berikut:

  systemctl stop firewalld

Kemungkinan penyebab 3: Ukuran buffer

Periksa apakah ini masalah ukuran buffer dengan mencari error berikut di log:

Memory ceiling (1073741824) reached, freeing a batch from the backlog

Untuk mengatasi masalah ini, lakukan langkah berikut:

  1. Aktifkan kompresi di file konfigurasi penerus.

  2. Tingkatkan ukuran buffer dengan mengupdate parameter max_memory_buffer_bytes dan max_file_buffer_bytes di file konfigurasi. Parameter ini menunjukkan buffer batch backlog yang disimpan dalam memori atau disk.

Forwarder dan host tidak menerima log

Jika host dan penerusan tidak menerima log, periksa status port dengan menjalankan perintah berikut untuk setiap port:

  netstat -a | grep PORT

Ganti PORT dengan ID port yang ingin Anda periksa.

Jika perintah ini tidak memberikan output apa pun, ini menunjukkan bahwa host tidak memproses port tersebut dan Anda harus berkonsultasi dengan administrator jaringan.

Jika output dari perintah menunjukkan bahwa host sedang memproses port dan forwarder masih belum menerima log, lakukan hal berikut:

  1. Hentikan Docker dengan menjalankan perintah berikut:

    ​​docker stop cfps
    
    
  2. Jalankan salah satu perintah berikut berdasarkan penyiapan jaringan Anda.

    Untuk TCP:

    nc -l PORT
    

    Untuk UDP:

    nc -l -u PORT
    

    Ganti PORT dengan ID port yang ingin Anda pecahkan.

  3. Mulai ulang layanan eksternal Anda dan periksa apakah masalah telah teratasi. Jika masalah terus berlanjut, [hubungi dukungan Chronicle.

Forwarder tidak menerima log, tetapi host menerima log

Jika host menerima log, tetapi penerusan tidak, hal ini menunjukkan bahwa penerusan tidak memproses port yang ditentukan dalam file konfigurasi.

Untuk mengatasi masalah ini, lakukan langkah berikut:

  1. Buka dua jendela terminal di sistem, satu untuk mengonfigurasi forwarder dan satu untuk mengirim pesan pengujian ke host.

    1. Pada terminal pertama (forwarder), mulai Docker tanpa memulai forwarder dengan menjalankan perintah berikut:

      docker run \
      --name cfps \
      --log-opt max-size=100m \
      --log-opt max-file=10 \
      --net=host \
      -v ~/config:/opt/chronicle/external \
      --entrypoint=/bin/bash \
      -it gcr.io/chronicle-container/cf_production_stable
      
    2. Tentukan port yang harus didengarkan oleh penerus:

      nc -l PORT
      

      Ganti PORT dengan ID port yang ingin Anda pecahkan.

  2. Pada terminal kedua (host), kirim pesan pengujian pada port dengan menjalankan perintah berikut:

    echo "test message" | nc localhost PORT
    

    Ganti PORT dengan ID port yang ingin Anda pecahkan.

  3. Jalankan kembali perintah docker. Tentukan flag -p dengan port tempat forwarder akan memproses dengan menjalankan perintah berikut:

    docker run \
    --detach \
    –name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 --net=host \
    —v /root/config:/opt/chronicle/external \
    -p 11500:11800 \
    gcr.io/chronicle-container/cf_production_stable
    

Error umum di file log penerusan

Anda dapat melihat log penerusan dengan menjalankan perintah berikut:

  sudo docker logs cfps

Permintaan berisi argumen yang tidak valid

File log penerusan akan menampilkan pesan error berikut:

  I0912 18:04:15.187321 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
  E0912 18:04:15.410572 333 batcher.go:345] [2_syslog_CISCO_FIREWALL-tid-0] Error exporting batch: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
  I0912 18:04:15.964923 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.

Penyelesaian:

Error ini dapat terjadi jika jenis log yang tidak valid ditambahkan. Pastikan hanya jenis log valid yang ditambahkan. Dalam contoh pesan error, CISCO\_FIREWALL bukan jenis log yang valid. Untuk mengetahui daftar jenis log yang valid, buka Jenis log dan parser default yang didukung.

Tidak dapat menemukan server

File log penerusan akan menampilkan pesan error berikut:

{"log":"Failure: Unable to find the server at accounts.google.com.\n","stream":"stderr","time":"2019-06-12T18:26:53.858804303Z"}`

{"log":"+ [[ 1 -ne 0 ]]\n","stream":"stderr","time":"2019-06-12T18:26:53.919837669Z"}

{"log":"+ err 'ERROR: Problem accessing the Chronicle bundle.'\n","stream":"stderr","time":"2019-06-12T18:26:53.919877852Z"}

Penyelesaian:

Hubungi tim jejaring Anda untuk memastikan bahwa jaringan berfungsi.

Tanda tangan JWT tidak valid

File log penerusan akan menampilkan pesan error berikut:

    E0330 17:05:28.728021 162 stats_manager.go:85] send(): rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
    E0404 17:05:28.729012 474 memory.go:483] [1_syslog_FORTINET_FIREWAL-tid-0] Error exporting batch: rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}

Penyelesaian:

Error ini dapat terjadi saat file konfigurasi penerusan memiliki detail kunci rahasia yang salah. Hubungi dukungan Chronicle untuk membantu menyelesaikan masalah ini.

Token harus berupa token berumur singkat

File log penerusan akan menampilkan pesan error berikut:

      token: 400 Bad Request Response:
      {"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
      short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim."} I0412 05:14:16.539060 480
      malachite.go:212] Sent batch error: rpc error: code = Unauthenticated desc =
      transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response:
      {"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
      short-lived token (60 minutes)

Penyelesaian:

Error ini dapat terjadi jika host dan jam sistem server tidak sinkron. Sesuaikan waktu di host atau coba gunakan NTP untuk menyinkronkan jam.

Tidak ada file atau direktori tersebut

File log penerusan akan menampilkan pesan error berikut:

    ++ cat '/opt/chronicle/external/*.conf'
    cat: '/opt/chronicle/external/*.conf': No such file or directory

Penyelesaian:

Error ini dapat terjadi saat penerusan dimulai dengan pemetaan drive yang salah. Gunakan jalur direktori lengkap dalam file konfigurasi (Anda dapat memperoleh jalur dengan menjalankan perintah pwd).

Gagal mengambil ID pelanggan dari file konfigurasi

File log penerusan akan menampilkan pesan error berikut:

    + err 'ERROR: Failed to retrieve customer ID from configuration file.'
    ++ date +%Y-%m-%dT%H:%M:%S%z
    + echo '[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.'
    [2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.
    + err '==> Please contact the Chronicle support team.'

Penyelesaian:

Error ini disebabkan oleh pemetaan yang salah atau jika file konfigurasi tidak ada dalam direktori. Gunakan jalur direktori lengkap dalam file konfigurasi (Anda dapat memperoleh jalur dengan menjalankan perintah pwd). Pastikan perintah docker run yang benar dijalankan dan file konfigurasi ada di lokasi berikut:

    gcr.io/chronicle-container/cf_production_stable

Contoh kode berikut menunjukkan perintah docker run:

    ​​docker run \
    --detach \
    --name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    gcr.io/chronicle-container/cf_production_stable