Perbedaan Monitoring, Logging, dan Tracing
Gambar 1. Log dari program (sumber: https://www.pexels.com/)
Dalam dunia sistem modern, terutama pada arsitektur microservices dan aplikasi cloud-native, observability (keteramatan) membantu tim memahami kondisi sistem dari sinyal yang dihasilkan aplikasi: metrics, logs, dan traces. Secara sederhana:
- Monitoring fokus pada “apa yang sedang terjadi”.
- Logging menjelaskan “apa yang sudah terjadi”.
- Tracing menunjukkan “di mana serta bagaimana alur request bermasalah”.
1. Monitoring
Monitoring adalah proses mengamati kesehatan sistem secara terus-menerus menggunakan metrics seperti CPU usage, memory usage, latency, throughput, dan error rate. Tujuannya adalah mendeteksi anomali lebih awal dan memicu alert ketika nilai melewati ambang batas yang ditentukan. Contoh tooling yang umum dipakai adalah Prometheus untuk mengumpulkan metrics dan Grafana untuk dashboard visualisasi. Dalam praktiknya, monitoring sangat berguna untuk menjawab pertanyaan seperti: “Apakah service sedang melambat?” atau “Apakah error rate naik?”
2. Logging
Logging adalah pencatatan event atau kejadian yang terjadi di aplikasi atau sistem, biasanya dalam bentuk teks, JSON, atau key-value. Log memberi konteks detail yang tidak selalu terlihat dari metrics, misalnya pesan error, stack trace, request ID, user ID, atau langkah proses yang gagal. Tool yang sering digunakan antara lain Loki, ELK Stack, Fluentd, dan Graylog. Logging sangat membantu untuk investigasi akar masalah karena dari log, tim bisa melihat kejadian spesifik sebelum dan saat error terjadi.
3. Tracing
Tracing mengikuti perjalanan satu request dari awal sampai akhir, terutama ketika request melewati beberapa service. Ini sangat penting di microservices karena satu masalah bisa muncul di service A, tetapi akar masalahnya justru ada di service B atau database. Tool populer untuk tracing adalah OpenTelemetry, Jaeger, dan Tempo. Tracing menjawab pertanyaan seperti: “Request ini melewati service mana saja?” dan “Bagian mana yang paling lambat?”
Contoh Penerapan
Satu stack observability yang umum adalah Prometheus + Grafana untuk metrics, Loki untuk logs, dan Jaeger atau Tempo untuk traces, dengan OpenTelemetry sebagai lapisan instrumentasi yang mengirim telemetry ke backend pilihan. Kombinasi ini sering dipakai karena mendukung korelasi antar-sinyal dalam satu alur investigasi.
Contoh alur sederhananya:
- Aplikasi mengekspor metrics latency dan error rate ke Prometheus.
- Aplikasi mengirim logs terstruktur ke Loki.
- Aplikasi mengirim traces via OpenTelemetry ke Jaeger atau Tempo.
- Grafana menampilkan semuanya dalam satu dashboard.
Monitoring, logging, dan tracing bukan tiga hal yang saling menggantikan, melainkan tiga lapisan yang saling melengkapi. Monitoring memberi peringatan, logging memberi konteks, dan tracing memberi jalur investigasi.
Referensi
- https://microsoft.github.io/code-with-engineering-playbook/observability/log-vs-metric-vs-trace/
- https://dev.to/mspilari/observability-101-metrics-logs-and-traces-whats-the-difference–3kbc
- https://github.com/livingdocsIO/monitoring
Comments :