Menggunakan plugin

Anda melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Edge Microgateway v. 2.5.x

Audiens

Topik ini ditujukan untuk operator Edge Microgateway yang ingin menggunakan plugin yang ada yang diinstal dengan microgateway. Topik ini juga membahas plugin spike arrest dan kuota secara mendetail (keduanya disertakan dengan penginstalan). Jika Anda adalah developer yang ingin mengembangkan plugin baru, lihat Mengembangkan plugin kustom.

Apa yang dimaksud dengan plugin Edge Microgateway?

Plugin adalah modul Node.js yang menambahkan fungsi ke Edge Microgateway. Modul plugin mengikuti pola yang konsisten dan disimpan di lokasi yang diketahui oleh Edge Microgateway, sehingga microgateway dapat menemukan dan memuatnya secara otomatis. Edge Microgateway menyertakan beberapa plugin yang ada dan Anda juga dapat membuat plugin kustom, seperti yang dijelaskan dalam Mengembangkan plugin kustom.

Plugin yang ada yang disertakan dengan Edge Microgateway

Beberapa plugin yang ada disediakan dengan Edge Microgateway saat penginstalan. Plugin ini mencakup:

Plugin Diaktifkan secara default Deskripsi
analytics Ya Mengirim data analisis dari Edge Microgateway ke Apigee Edge.
oauth Ya Menambahkan validasi Kunci API dan token OAuth ke Edge Microgateway. Lihat Menyiapkan dan mengonfigurasi Edge Microgateway.
quota Tidak Menerapkan kuota pada permintaan ke Edge Microgateway. Menggunakan Apigee Edge untuk menyimpan dan mengelola kuota. Lihat Menggunakan plugin kuota.
spikearrest Tidak Melindungi dari lonjakan traffic dan serangan DoS. Lihat Menggunakan plugin spike arrest.
header-uppercase Tidak Proxy contoh yang dikomentari, yang dimaksudkan sebagai panduan untuk membantu developer menulis plugin kustom. Lihat Plugin contoh Edge Microgateway.
accumulate-request Tidak Mengumpulkan data permintaan ke dalam satu objek sebelum meneruskan data ke pengendali berikutnya dalam rantai plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada satu objek konten permintaan yang dikumpulkan.
accumulate-response Tidak Mengumpulkan data respons ke dalam satu objek sebelum meneruskan data ke pengendali berikutnya dalam rantai plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada satu objek konten respons yang dikumpulkan.
transform-uppercase Tidak Mengubah data permintaan atau respons. Plugin ini mewakili penerapan praktik terbaik implementasi dari plugin transformasi. Plugin contoh melakukan transformasi trivial (mengonversi data permintaan atau respons menjadi huruf besar); namun, plugin ini dapat dengan mudah diadaptasi untuk melakukan jenis transformasi lainnya, seperti XML ke JSON.
json2xml Tidak Mengubah data permintaan atau respons berdasarkan header accept atau content-type. Untuk mengetahui detailnya, lihat dokumentasi plugin di GitHub.
quota-memory Tidak Menerapkan kuota pada permintaan ke Edge Microgateway. Menyimpan dan mengelola kuota dalam memori lokal memory.
healthcheck Tidak Menampilkan informasi tentang proses Edge Microgateway -- penggunaan memori, penggunaan CPU, dll. Untuk menggunakan plugin, panggil URL /healthcheck di instance Edge Microgateway Anda. Plugin ini dimaksudkan sebagai contoh yang dapat Anda gunakan untuk menerapkan plugin pemeriksaan kesehatan Anda sendiri.

Tempat menemukan plugin yang ada

Plugin yang ada yang disertakan dengan Edge Microgateway terletak di sini, dengan [prefix] adalah direktori awalan npm. Lihat Tempat Edge Microgateway diinstal jika Anda tidak dapat menemukan direktori ini.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

Menambahkan dan mengonfigurasi plugin

Ikuti pola ini untuk menambahkan dan mengonfigurasi plugin:

  1. Hentikan Edge Microgateway.
  2. Buka file konfigurasi Edge Microgateway. Untuk mengetahui detailnya, lihat Melakukan perubahan konfigurasi untuk opsi.
  3. Tambahkan plugin ke elemen plugins:sequence file konfigurasi, sebagai berikut. Plugin dieksekusi sesuai urutan kemunculannya dalam daftar ini.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. Konfigurasi plugin. Beberapa plugin memiliki parameter opsional yang dapat Anda konfigurasi dalam file konfigurasi. Misalnya, Anda dapat menambahkan stanza berikut untuk mengonfigurasi plugin spike arrest plugin. Lihat Menggunakan plugin spike arrest untuk mengetahui informasi selengkapnya.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. Simpan file.
  2. Mulai ulang atau muat ulang Edge Microgateway, bergantung pada file konfigurasi yang Anda edit.

Konfigurasi khusus plugin

Anda dapat mengganti parameter plugin yang ditentukan dalam file konfigurasi dengan membuat konfigurasi khusus plugin di direktori ini:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

dengan [prefix] adalah direktori awalan npm. Lihat Tempat Edge Microgateway diinstal jika Anda tidak dapat menemukan direktori ini.

plugins/<plugin_name>/config/default.yaml. Misalnya, Anda dapat menempatkan blok ini di plugins/spikearrest/config/default.yaml, dan blok ini akan mengganti setelan konfigurasi lainnya.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Menggunakan plugin spike arrest

Plugin spike arrest melindungi dari lonjakan traffic. Plugin ini membatasi jumlah permintaan yang diproses oleh instance Edge Microgateway.

Menambahkan plugin spike arrest

Lihat Menambahkan dan mengonfigurasi plugin.

Contoh konfigurasi untuk spike arrest

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

Opsi konfigurasi untuk spike arrest

  • timeUnit: Seberapa sering jendela eksekusi spike arrest direset. Nilai yang valid adalah second atau minute.
  • allow: Jumlah maksimum permintaan yang diizinkan selama timeUnit. Lihat juga Jika Anda menjalankan beberapa proses Edge Micro proses.
  • bufferSize: (opsional, default = 0) jika bufferSize > 0, spike arrest akan menyimpan jumlah permintaan ini dalam buffer. Segera setelah "jendela" eksekusi berikutnya terjadi, permintaan yang di-buffer akan diproses terlebih dahulu. Lihat juga Menambahkan buffer.

Bagaimana cara kerja spike arrest?

Anggap spike arrest sebagai cara untuk melindungi secara umum dari lonjakan traffic, bukan sebagai a cara untuk membatasi traffic ke jumlah permintaan tertentu. API dan backend Anda dapat menangani jumlah traffic tertentu, dan kebijakan spike arrest membantu Anda memperlancar traffic ke jumlah umum yang Anda inginkan.

Perilaku spike arrest runtime berbeda dengan yang mungkin Anda harapkan dari nilai per menit atau per detik literal yang Anda masukkan.

Misalnya, Anda menentukan kecepatan 30 permintaan per menit, seperti ini:

spikearrest:
   timeUnit: minute
   allow: 30

Dalam pengujian, Anda mungkin berpikir dapat mengirim 30 permintaan dalam 1 detik, selama permintaan tersebut masuk dalam satu menit. Namun, kebijakan tersebut tidak menerapkan setelan tersebut. Jika Anda memikirkannya, 30 permintaan dalam periode 1 detik dapat dianggap sebagai lonjakan mini di beberapa lingkungan.

Lalu, apa yang sebenarnya terjadi? Untuk mencegah perilaku seperti lonjakan, spike arrest memperlancar traffic yang diizinkan dengan membagi setelan Anda ke dalam interval yang lebih kecil, sebagai berikut:

Kecepatan per menit

Kecepatan per menit diperlancar menjadi interval detik permintaan yang diizinkan. Misalnya, 30 permintaan per menit diperlancar seperti ini:

60 detik (1 menit) / 30 = interval 2 detik, atau sekitar 1 permintaan diizinkan setiap 2 detik. Permintaan kedua dalam 2 detik akan gagal. Selain itu, permintaan ke-31 dalam satu menit akan gagal.

Kecepatan per detik

Kecepatan per detik diperlancar menjadi permintaan yang diizinkan dalam interval milidetik. Misalnya, 10 permintaan/detik diperlancar seperti ini:

1.000 milidetik (1 detik) / 10 = interval 100 milidetik, atau sekitar 1 permintaan diizinkan setiap 100 milidetik. Permintaan kedua dalam 100 md akan gagal. Selain itu, permintaan ke-11 dalam satu detik akan gagal.

Jika batas terlampaui

Jika jumlah permintaan melebihi batas dalam interval waktu yang ditentukan, spike arrest akan menampilkan pesan error ini dengan status HTTP 503:

{"error": "spike arrest policy violated"}

Menambahkan buffer

Anda memiliki opsi untuk menambahkan buffer ke kebijakan. Misalnya, Anda menetapkan buffer ke 10. Anda akan melihat bahwa API tidak langsung menampilkan error saat Anda melampaui batas spike arrest limit. Sebagai gantinya, permintaan akan di-buffer (hingga jumlah yang ditentukan), dan permintaan yang di-buffer akan diproses segera setelah jendela eksekusi yang sesuai berikutnya tersedia. bufferSize default adalah 0.

Jika Anda menjalankan beberapa proses Edge Micro

Jumlah permintaan yang diizinkan bergantung pada jumlah proses pekerja Edge Micro yang sedang berjalan. Spike arrest menghitung jumlah permintaan yang diizinkan per proses pekerja. Secara default, jumlah proses Edge Micro sama dengan jumlah CPU di mesin tempat Edge Micro diinstal. Namun, Anda dapat mengonfigurasi jumlah proses pekerja saat memulai Edge Micro menggunakan opsi --processes pada perintah start. Misalnya, jika Anda ingin spike arrest dipicu pada 100 permintaan dalam jangka waktu tertentu, dan jika Anda memulai Edge Microgateway dengan opsi --processes 4, tetapkan allow: 25 dalam konfigurasi spike arrest. Singkatnya, aturan umumnya adalah menetapkan parameter konfigurasi allow config ke nilai "jumlah spike arrest yang diinginkan / jumlah proses".

Menggunakan plugin kuota

Kuota menentukan jumlah pesan permintaan yang diizinkan untuk dikirimkan aplikasi ke API selama satu jam, hari, minggu, atau bulan. Jika aplikasi mencapai batas kuotanya, panggilan API berikutnya akan ditolak. Lihat juga Apa perbedaan antara spike arrest dan kuota?.

Menambahkan plugin kuota

Lihat Menambahkan dan mengonfigurasi plugin.

Konfigurasi produk di Apigee Edge

Anda mengonfigurasi kuota di UI Apigee Edge tempat Anda mengonfigurasi produk API. Anda harus mengetahui produk mana yang berisi proxy yang mendukung microgateway yang ingin Anda batasi dengan kuota. Produk ini harus ditambahkan ke aplikasi developer. Saat Anda melakukan panggilan API yang diautentikasi menggunakan kunci di aplikasi developer, kuota akan diterapkan ke panggilan API tersebut.

  1. Login ke akun organisasi Apigee Edge Anda.
  2. Di UI Edge, buka produk yang terkait dengan proxy yang mendukung microgateway yang ingin Anda terapkan kuotanya.
    1. Di UI, pilih Products dari menu Publish.
    2. Buka produk yang berisi API yang ingin Anda terapkan kuotanya.
    3. Klik Edit.
    4. Di kolom Quota, tentukan interval kuota. Misalnya, 100 permintaan setiap satu menit. Atau 50.000 permintaan setiap 2 jam.

  1. Klik Save.
  2. Pastikan produk ditambahkan ke aplikasi developer. Anda akan memerlukan kunci dari aplikasi ini untuk melakukan panggilan API yang diautentikasi.

Contoh konfigurasi untuk kuota

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

Opsi konfigurasi untuk kuota

Tidak ada opsi konfigurasi tambahan untuk plugin kuota.

Menguji plugin kuota

Jika kuota terlampaui, status HTTP 403 akan ditampilkan ke klien, beserta pesan berikut:

{"error": "exceeded quota"}

Apa perbedaan antara spike arrest dan kuota?

Penting untuk memilih alat yang tepat untuk tugas yang sedang dikerjakan. Kebijakan kuota mengonfigurasi jumlah pesan permintaan yang diizinkan untuk dikirimkan aplikasi klien ke API selama satu jam, hari, minggu, atau bulan. Kebijakan kuota menerapkan batas penggunaan pada aplikasi klien dengan mempertahankan penghitung terdistribusi yang menghitung permintaan masuk.

Gunakan kebijakan kuota untuk menerapkan kontrak bisnis atau SLA dengan developer dan partner, bukan untuk pengelolaan traffic operasional. Misalnya, kuota dapat digunakan untuk membatasi traffic untuk layanan gratis, sekaligus mengizinkan akses penuh untuk pelanggan berbayar.

Gunakan spike arrest untuk melindungi dari lonjakan traffic API yang tiba-tiba. Biasanya, spike arrest is digunakan untuk mencegah kemungkinan DDoS atau serangan berbahaya lainnya.