8.4 Fungsi Lain dari Krakend¶
8.4.1 Transformasi Data¶
Transformasi data memungkinkan Krakend mengubah struktur data respons sebelum mengirimkannya ke klien. Contoh kasus termasuk menghapus field sensitif atau menambahkan informasi tambahan.
Contoh Transformasi:
Misalkan backend mengembalikan data berikut:
Kemudian ingin menghapus field password
dari respons, maka configurasi seperti ini:
{
"endpoints": [
{
"endpoint": "/api/v1/user",
"method": "GET",
"backend": [
{
"host": ["http://user-service"],
"url_pattern": "/user-data"
}
],
"extra_config": {
"github.com/devopsfaith/krakend-jsonschema": {
"properties": {
"id": {},
"name": {}
}
}
}
}
]
}
Hasil transformasi:
8.4.2 Load Balancing¶
Krakend mendukung load balancing untuk mendistribusikan permintaan secara merata ke beberapa instance backend.
Contoh Load Balancing:
{
"backend": [
{
"host": ["http://backend1-service", "http://backend2-service"],
"url_pattern": "/data"
}
]
}
Fitur ini membantu meningkatkan ketersediaan layanan dan menangani lebih banyak permintaan.
8.4.3 Monitoring¶
Monitoring penting untuk memantau performa API Gateway, mengidentifikasi bottleneck, dan mendeteksi masalah sebelum memengaruhi layanan secara keseluruhan. Krakend mendukung integrasi dengan Prometheus, alat open-source yang populer untuk pengumpulan dan analisis metrik.
Konfigurasi Monitoring dengan Prometheus¶
-
Mengaktifkan Monitoring di Krakend: Tambahkan konfigurasi berikut dalam file JSON Krakend untuk mengaktifkan metrik Prometheus:
Penjelasan konfigurasi: -
collection_time
: Interval pengumpulan metrik. Misalnya, "60s" berarti setiap 60 detik. proxy_disabled
: Jikafalse
, metrik dari lapisan proxy akan dikumpulkan.router_disabled
: Jikafalse
, metrik dari lapisan routing akan dikumpulkan.-
endpoint
: Endpoint tempat metrik Prometheus dapat diakses (default:/__metrics
). -
Expose Endpoint Metrik: Endpoint
/__metrics
akan tersedia setelah konfigurasi diaktifkan. Prometheus dapat mengakses endpoint ini untuk menarik (scrape) metrik. Contoh respons dari endpoint/__metrics
: -
Menambahkan Krakend ke Konfigurasi Prometheus: Tambahkan Krakend sebagai target di file konfigurasi Prometheus (
prometheus.yml
):
Metrik yang Didukung Krakend¶
Berikut adalah beberapa metrik utama yang dihasilkan oleh Krakend:
krakend_requests_total
: Jumlah total permintaan yang diterima oleh endpoint tertentu.krakend_latency_ms
: Latensi permintaan dalam milidetik.krakend_backend_latency_ms
: Latensi antara Krakend dan backend untuk permintaan tertentu.krakend_response_size_bytes
: Ukuran respons yang dikirimkan oleh endpoint tertentu.krakend_errors_total
: Jumlah total kesalahan yang terjadi pada endpoint.
Visualisasi dengan Grafana¶
Prometheus dapat diintegrasikan dengan Grafana untuk membuat dashboard visual.
- Tambahkan Prometheus sebagai Data Source di Grafana.
-
Buat panel baru di Grafana untuk memvisualisasikan metrik tertentu. Misalnya:
-
Query untuk jumlah permintaan per endpoint:
-
Query untuk latensi rata-rata:
-
8.4.4 Logging¶
Format Logging¶
Secara default, Krakend mencatat log di konsol dalam format JSON. Log ini mencakup informasi seperti permintaan, respons, waktu proses, dan kesalahan.
Contoh log Krakend:
{
"level": "INFO",
"time": "2024-12-12T10:00:00Z",
"message": "Request completed",
"method": "GET",
"endpoint": "/api/v1/resource",
"status": 200,
"duration": 45
}
Customizing Logging¶
Logging Krakend dapat dikustomisasi dengan menambahkan plugin logging atau menggunakan log processor eksternal seperti ELK Stack (Elasticsearch, Logstash, Kibana).
Tambahkan konfigurasi untuk log level:
8.4.5 Caching¶
Krakend mendukung caching untuk meningkatkan performa response API. Berikut contoh konfigurasi caching:
{
"extra_config": {
"github.com/devopsfaith/krakend-httpcache": {
"cache_size": 1000,
"memory": {
"max": 100
}
}
}
}
cache_size
: Ukuran cache maksimum.memory.max
: Kapasitas maksimum memori untuk cache.