Monitoring Website Health dengan Grafana
Monitoring Website Health dengan Grafana pada artikel ini menggunakan beberapa tools yaitu Grafana, Blackbox-Exporter, dan Prometheus. Dan pada artikel ini menjelaskan cara install dan setup tools hingga dapat digunakan untuk monitoring kesehatan website. Monitoring meliputi availability, SSL expiration, dan respontime website.
Intro
Dalam era digital saat ini, keberadaan sebuah website yang andal dan responsif menjadi kunci sukses bagi bisnis dan organisasi. Namun, menjaga kesehatan dan kinerja optimal dari sebuah website bisa menjadi tantangan besar. Oleh karena itu, aplikasi monitoring kesehatan website menjadi sangat penting. Dengan alat ini, tim IT dapat memantau kinerja situs secara real-time, mendeteksi masalah lebih awal, dan mencegah downtime yang merugikan. Aplikasi ini juga membantu mengidentifikasi ancaman keamanan dan memberikan data historis untuk analisis tren. Karnanya monitoring kesehatan website tidak hanya memastikan pengalaman pengguna yang optimal tetapi juga mendukung keberlanjutan operasional bisnis. Pada artikel ini untuk membuat aplikasi monitoring kesehatan website atau Monitoring Website Health menggunakan beberapa tools yaitu Grafana, Blackbox-Exporter, dan Prometheus.
- Prometheus
Prometheus adalah sistem pemantauan open-source yang digunakan untuk mengumpulkan, menyimpan, dan meng-query data pemantauan dari berbagai layanan dan sistem. Ini dirancang untuk memberikan visibilitas yang tinggi terhadap kesehatan dan kinerja suatu infrastruktur. Prometheus mengumpulkan metrik dari target yang diinginkan, menyimpannya dalam format time-series, dan menyediakan antarmuka untuk melakukan query dan analisis.
- Blackbox-Exporter
Blackbox Exporter adalah sebuah komponen yang digunakan dalam ekosistem Prometheus, sebuah sistem pemantauan open-source. Dengan menggunakan Blackbox Exporter, kita dapat melakukan pengujian HTTP, HTTPS, DNS, TCP, ICMP, dan protokol jaringan lainnya secara eksternal terhadap endpoint tertentu. Blackbox Exporter akan menghasilkan metrik-metrik Prometheus berdasarkan hasil pengujian ini, yang kemudian dapat digunakan untuk pemantauan dan analisis.
- Grafana
Grafana adalah platform visualisasi data open-source yang memungkinkan pengguna membuat dan membagikan dasbor untuk menganalisis dan memonitor data dari berbagai sumber. Ini memberikan antarmuka pengguna yang interaktif untuk membuat grafik, tabel, dan dasbor berbasis data.
Ringkasnya, Blackbox Exporter sebagai prober atau penguji HTTP, HTTPS, DNS, TCP, ICMP, dan protokol jaringan lainnya secara eksternal ke endpoint/website, Prometheus sebagai penyimpan data prober atau Blackbox Exported, dan Grafana sebagai visualisasi data.
Untuk Blackbox Exporter dan Prometheus akan kita install/running dalam bentuk container base, sehingga membutuhkan docker-compose/portainer. Dan untuk Grafana saya asumsikan sudah terinstall di komputer/server Anda.
Prasyarat Instalasi
- Pastikan Grafana telah terpasang pada komputer/server Anda.
- Pastikan Docker-Compose/Portainer telah terpasang pada komputer/server Anda. Untuk pemasangan Portainer dapat mengikuti cara Instalasi Portainer.
Blackbox Exporter
Download blackbox-exporter
Pada server download source code blackbox-exporter di project Website-Monitoring
$git clone https://github.com/cmjagtap/Website-Monitoring
Pada source code tersebut terdapat file binary dan konfigurasi blackbox exporter, serta terdapat file template untuk tampilan dashboard grafana dengan format json.
Konfig file blackbox.yml
Setelah melakukan download atau git clone akan tersedia folder Website-Monitoring di server Anda. Lakukan penyesuaian konfigurasi file blackbox.yml yang berada di path Website-Monitoring/blackbox_exporter-0.18.0.linux-amd64/blackbox.yml.
$nano Website-Monitoring/blackbox_exporter-0.18.0.linux-amd64/blackbox.yml
Isikan file dengan konfigurasi berikut:
modules:
http_2xx:
prober: http
timeout: 5s
http:
method: GET
valid_http_versions:
- "HTTP/1.1"
- "HTTP/2.0"
preferred_ip_protocol: "ip4" # defaults to "ip6"
http_post_2xx:
prober: http
http:
method: POST
valid_http_versions:
- "HTTP/1.1"
- "HTTP/2.0"
preferred_ip_protocol: "ip4" # defaults to "ip6"
Running blackbox binary
Setelah melakukan konfigurasi, jalankan file binary blackbox yang berada pada path Website-Monitoring/blackbox_exporter-0.18.0.linux-amd64/blackbox_exporter. Pertama masuk kedalam folder lokasi file binary
$cd Website-Monitoring/blackbox_exporter-0.18.0.linux-amd64/
Lalu running file binary blackbox exporter
$./blackbox_exporter --config.file=blackbox.yml &> output.log &
Untuk memastikan blackbox exporter telah running cek menggunakan netstat.
netstat -lnpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::9115 :::* LISTEN 1586768/./blackbox_
Pada output diatas terlihat port 9115 yang berarti blackbox exporter berhasil running. Kemudian lanjut cek melalui web browser dengan mengakses URL + port tersebut.
Jika output halaman seperti gambar diatas maka service running dengan baik.
Prometheus
Terdapat 2 buah file yang harus disiapkan untuk melakukan instalasi yaitu prometheus.yml dan docker-compose.yml. Berikut konfigurasi file tersebut.
Konfig prometheus.yml
Pada konfigurasi file ini yang perlu diperhatikan adalah “targets” pada static_configs, karena target tersebut adalah URL website yang akan di-monitor. Lalu scrape_interval adalah waktu interval prometheus setiap melakukan collecting data ke target. Default waktu scrape adalah 15 detik dan dapat disesuaikan dengan kebutuhan, jika waktu terlalu singkat kemungkinan dapat membebani target yang di-monitor. Berikut isi file prometheus.yml:
global:
scrape_interval: 30s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 30s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://youtube.com
- https://facebook.com
- https://google.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.1.102:9115 # The blackbox exporter's real hostname:port.
Pada contoh konfigurasi diatas target URL yang akan di monitor ada 3 yaitu https://youtube.com, https://facebook.com, dan https://google.com.
Konfig docker-compose.yml
Service prometheus yang digunakan adalah versi v2.49.1. Dan terdapat konfigurasi menghubungkan volume container prometheus dengan volume hostOS yang menyimpan file prometheus.yml yang telah dikonfigurasi sebelumnya. Pada contoh konfigurasi ini path penyimpanan prometheus.yml adalah /docker/prometheus/prometheus.yml. Lalu service akan di expose di port 9090 hostOS. Berikut isi file docker-compose.yml:
version: '2'
services:
prometheus:
image: prom/prometheus:v2.49.1
container_name: prometheus
hostname: prometheus
restart: always
tty: true
ports:
- "9090:9090"
volumes:
- /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
Install Prometheus
Setelah menyiapkan file prometheus.yml dan docker-compose.yml, selanjutnya proses instalasi prometheus. Masuk kedalam folder dimana lokasi file docker-compose.yml lalu jalankan perintah docker-compose.
$ docker-compose up -d
Untuk instalasi di portainer dapat dilakukan di Stacks->Add Stack.
Grafana
Setelah melakukan setup Blackbox Exporter dan instalasi Prometheus selanjutnya adalah Konfigurasi pada Dashboard Grafana.
Setup Data Source
Login pada Dashboard lalu buka menu Configuration->Data Source kemudian pilih Add data source.
Lalu pilih Prometheus.
Kemudian tampil halaman form konfigurasi data source Prometheus. Isikan beberapa parameter dengan nilai berikut:
- Name : Prometheus #bebas sesuai keinginan
- URL : http://localhost:9090 #disesuaikan dengan URL service prometheus
- Access : Server (default)
- Scrape Interval : 30s #disamakan dengan nilai scrape_interval prometheus
- Query timeout : 60s #default
- HTTP Method : GET
Biarkan parameter yang lain dengan nilai defaultnya. Berikut contoh gambar pengisian form konfigurasi data source Prometheus.
Import Dashboard
Pada source code project Website-Monitoring terdapat file dashboard.json untuk template tampilan dashboard grafana. Pertama pada dashboard grafana akses menu Create->Import.
Kemudian copy source code di file dashboard.json dan paste pada field Import via panel json, atau dapat juga dengan meng-upload file dashboard.json dengan pilih Upload JSON file.
Isikan Name dengan Web Healthy Monitoring lalu pilih Import.
Setting Dashboard
Setelah proses import dashboard berhasil buka menu Dashboard->Manage maka akan tampil dashboard dengan nama Web Healthy Monitoring, lalu buka dashboard tersebut.
Grafik dan widget/panel pada dashboard tersebut belum menampilkan nilai karena perlu dilakukan penyesuaian nilai target monitoring pada query. Lakukan edit pada salah satu panel lalu pada bagian field query ubah nilai instance dengan target URL sesuai dengan yang diisi pada prometheus.yml. Pada contoh ini adalah https://google.com. Jika ingin menampilkan 2 atau lebih target yang dimonitor maka gunakan simbol bar ( | ) untuk pemisah, berikut contoh pengisiannya instance=~”https://google.com|https://facebook.com”. Berikut contoh dalam bentuk gambar.
Setelah dilakukan penyesuaian dan nilai grafik telah muncul, maka save widget tersebut. Berikut contoh tampilan dashboard monitoring website health yang sudah selesai.
Konklusi
Sebagai konklusi tulisan ini membahas cara memonitor kesehatan website menggunakan Grafana, Blackbox-Exporter, dan Prometheus. Monitoring ini mencakup ketersediaan, masa berlaku SSL, dan waktu respons website. Prometheus mengumpulkan dan menganalisis data metrik, sementara Blackbox-Exporter menguji endpoint jaringan seperti HTTP dan HTTPS. Grafana menyediakan visualisasi data. Artikel ini menjelaskan instalasi dan konfigurasi alat-alat tersebut menggunakan Docker-Compose atau Portainer, serta mengatur dasbor di Grafana untuk menampilkan hasil monitoring. Proses ini membantu tim IT memantau kinerja website secara real-time dan mencegah downtime yang merugikan.