• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang
Home » Cara Menggunakan filter dengan Fluentd

Cara Menggunakan filter dengan Fluentd

Last Updated on 14 April 2022 By tommy Leave a Comment

Agar mudah dipahami dan dicoba, kita akan belajar menggunakan filter di fluentd dengan bantuan Docker. Secara sederhana cara kerja fluentd

input -> parse -> output

Contoh log yang akan kita kirim

server reboot | oracle-cloud-vm
server shutdown | oracle-cloud-vm

dari data diatas ada dua informasi yang kita dapatkan “server reboot” atau “server shutdown” adalah informasi server, dan “oracle-cloud-vm” adalah nama servernya.

Buat folder baru, contoh fluentd (~/fluentd)

mkdir ~/fluentd

buat file baru dalam folder tersebut dengan nama fluentd.conf

Cara menjalankan docker

docker run -it -p 24224:24224 -v ~/fluentd/fluentd.conf:/fluentd/etc/fluentd.conf -e FLUENTD_CONF=fluentd.conf fluent/fluentd

cara paling mudah untuk restart fluentd adalah dengan mengakses shell docker
1. Ambil ID Container docker

docker ps | grep fluentd
# contoh output
a7097e84152a   fluent/fluentd               "/bin/entrypoint.sh …"   30 seconds ago   Up 29 seconds            5140/tcp, 0.0.0.0:24224->24224/tcp, :::24224->24224/tcp   sad_mclean

pada contoh diatas a7097e84152a, adalah ID container tersebut.
2. Akses shell container tersebut

docker exec -it a7097e84152a sh

3. Restart fluentd
Jalankan perintah ini setiap ada perubahan fluentd.conf, agar perubahan tersebut dijalankan oleh fluentd

kill -HUP 7

Contoh Filter REGEXP

Sebagai contoh untuk filter regexp (regular expression), biasa juga disingkat dengan regex, kita akan mencari kata kunci (keyword) oracle-cloud-vm di tiap baris log yang ada, bila ada akan akan kita tampilkan.

Isi fluentd.conf dengan file

<source>
    @type forward
</source>
 
<filter **>
  @type grep
  <regexp>
    key log
    pattern /oracle-cloud-vm/
  </regexp>
</filter>
 
<match **>
  @type stdout
</match>

Jalankan docker fluentd, seperti contoh diatas

buka satu terminal

docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-vm"

di terminal yang menjalankan docker fluentd, anda harusnya melihat log menjadi

2022-04-14 14:41:30.000000000 +0000 d0e16301f91b: {"log":"server shutdown | oracle-cloud-vm","container_id":"d0e16301f91b1c50303bfad2f17683fdd7e9f68d9548fff9bde0300d4db6c3d0","container_name":"/determined_mcnulty","source":"stdout"}

terminal fluentd

Bila anda mengirim log

server shutdown | oracle-cloud-onpremise

fluentd tidak akan memproses data tersebut, karena keywork “oracle-cloud-vm” tidak ditemukan

Beberapa variasi log yang tetap akan diproses fluentd

server shutdown, oracle-cloud-onpremise
{"log_info": "server shutdown", "server": "oracle-cloud-onpremise"}
oracle-cloud-onpremise, server shutdown

Contoh Filter EXCLUDE

Sesuai dengan namanya, exclude akan melewatkan log yang sesuai dengan pattern (pola) yang sudah dibuat. Contoh kita akan melewatkan semua log yang memiliki string oracle-cloud-vm
Ubah fluentd.conf dengan

<source>
    @type forward
</source>
 
<filter **>
  @type grep
  <exclude>
    key log
    pattern /oracle-cloud-vm/
  </exclude>
</filter>
 
<match **>
  @type stdout
</match>

Coba kirim log

# log ini tidak akan ditampilkan
docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-vm"
# log ini akan ditampilkan
docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-onpremise"

log exclude fluentd

Jangan Biarkan Log Terlewat

Tergantung dengan kebutuhan sistem anda, dengan cara diatas ada kemungkinan log akan terlewatkan bila tidak sesuai dengan pattern yang sudah disetting. Dari contoh diatas, bila kita menemukan oracle-cloud-vm maka akan kita tambahkan key:value (server: oracle-cloud-vm), diluar itu server: unknown

Ubah fluentd.conf, menjadi

<source>
    @type forward
</source>
 
<match **>
  @type copy
  <store>
    @type relabel
    @label oracle-cloud-vm
  </store>
 
  @type copy
  <store>
    @type relabel
    @label others
  </store>
</match>
 
<label oracle-cloud-vm>
  # filter pattern
  <filter **>
    @type grep
    <regexp>
    key log
    pattern /oracle-cloud-vm/
    </regexp>
  </filter>
 
  # add server key
  <filter **>
    @type record_modifier
    <record>
      server oracle-cloud-vm
    </record>
  </filter>
 
  <match **>
    @type stdout
  </match>
</label>
 
<label others>
  # filter pattern
  <filter **>
    @type grep
    <exclude>
    key log
    pattern /oracle-cloud-vm/
    </exclude>
  </filter>
  # add server key
  <filter **>
    @type record_modifier
    <record>
      server unknown
    </record>
  </filter>
 
  <match **>
    @type stdout
  </match>
</label>

Untuk itu kita akan membutuhkan plugin record-modifier, mari kita build docker disertain dengan plugin tersebut. Buat file Dockerfile yang berisi

FROM fluent/fluentd
RUN gem install fluent-plugin-record-modifier

build docker tersebut

docker build . -t fluentd-local

lalu jalankan kembali container docker dengan mengganti image dari fluent/fluentd menjadi fluentd-local

docker run -it -p 24224:24224 -v ~/fluentd/fluentd.conf:/fluentd/etc/fluentd.conf -e FLUENTD_CONF=fluentd.conf fluentd-local

coba kirim log ke fluentd tersebut

docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-onpremise"
docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-vm"
docker run --log-driver=fluentd  alpine:latest echo "server reboot | debian-linux"

bila dilihat di fluentd, akan sesuai dengan keluaran yang diinginkan
log not missing

Tulisan menarik lainnya

  • Cara Menggunakan DDNS Gratis dari Mikrotik

    Solusi buat pemilik IP dinamis (Dynamic IP) agar IP anda tetap bisa mengakses Mikrotik tanpa…

  • Cara Memblokir Youtube dengan Mikrotik

    Bila anda menggunakan Layer 7 untuk memblokir Youtube, cara tersebut akan gagal total, dikarenakan Youtube…

  • Cara Menggunakan FastBoot Android Linux

    Fastboot bisa digunakan untuk banyak hal, seperti install Custom Recovery (TWRP) ataupun untuk menginstall Custom…

  • Cara Terampuh Bypass Filter Internet Services Provider

    Cara terampuh untuk melewati filter ISP Indonesia (Telkomspeedy, telkomsel, dll) adalah dengan menggunakan VPN. Bila…

Filed Under: Linux

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Pencarian

Tanya Jawab tentang DevOps SRE CPE, gabung di https://t.me/devopsindonesia

Terbaru

  • Solusi Playwright Firefox version `GLIBCXX_3.4.30′ not found (required by /lib64/libicuuc.so.69)
  • Cara Upgrade Fedora 35 ke Fedora 36
  • Ekstrak Gzip File dan Ambil Total dengan Python
  • Cara Menggunakan filter dengan Fluentd
  • Cara Membuat Public dan Private Key SSH untuk Login Server

Komentar

  • one on Solusi Error EFAKTUR ETAXSERVICE-20017 Client Tidak Terdaftar
  • Rafik on Password Terbaru ZTE F609 Indihome
  • Akbar Alfayiz on Password Terbaru ZTE F609 Indihome
  • Achmad mujaeni on Kemana Menghilangnya Saldo BCA 50 ribu
  • tommy on Cara Mengatasi SSH Error REMOTE HOST IDENTIFICATION HAS CHANGED

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1m views
  • Password Terbaru ZTE F609 Indihome 780.9k views
  • Password Superadmin Huawei HG8245A 290k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 266.8k views
  • Cara Setting Wireless ZTE F609 Indihome 249.8k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 164.6k views
  • Akses UseeTV Indihome via Wireless ZTE F609 154.5k views
  • Cara Reset Password ZTE F609 Indihome 145.7k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 132k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 108.3k views

Kategori

  • Delphi
  • dll
  • Gambas
  • Internet
  • Java
  • Lazarus
  • Linux
  • PHP
  • Review
  • Teknologi

Sponsor

kadal.id
Untuk jadi sponsor, hubungi kita lewat halaman sponsor
© 2021. Jaranguda
  • Linux
  • PHP
  • Internet
  • Teknologi
  • Delphi
  • Gambas
  • Java