Monitoring Website Health dengan Grafana

Monitoring Website Health dengan Grafana Cover

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.

Monitoring Website Health dengan Grafana Akses blackbox via webbrowser

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.

Monitoring Website Health dengan Grafana Add data source button

Lalu pilih Prometheus.

Monitoring Website Health dengan Grafana Add data source 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.

Monitoring Website Health dengan Grafana Konfig 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.

Monitoring Website Health dengan Grafana Menu import dashboard

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.

Monitoring Website Health dengan Grafana Upload dashboard

Isikan Name dengan Web Healthy Monitoring lalu pilih Import.

Monitoring Website Health dengan Grafana Naming dashboard

Setting Dashboard

Setelah proses import dashboard berhasil buka menu Dashboard->Manage maka akan tampil dashboard dengan nama Web Healthy Monitoring, lalu buka dashboard tersebut.

Monitoring Website Health dengan Grafana Dashboard web healty monitoring

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.

Monitoring Website Health dengan Grafana Penyesuaian konfig widget

Setelah dilakukan penyesuaian dan nilai grafik telah muncul, maka save widget tersebut. Berikut contoh tampilan dashboard monitoring website health yang sudah selesai.

Monitoring Website Health dengan Grafana Dashboard monitor web health

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.

Add a Comment

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