Monitoring Server Linux Dengan Prometheus Grafana di CentOS 7

Prometheus merupakan salah satu tools monitoring open source yang pertama kali di kembangkan oleh SoundCloud sejak 2012. Saat ini Prometheus banyak digunakan oleh beberapa perusahaan untuk memonitoring server Linux mereka, karena kemudahan installasi dan juga konfigurasi nya. Selain itu juga fitur lumayan lengkap, mendukung alerting dan juga bisa diintegrasikan ke beberapa ekosistem lain.

Sedangkan Grafana merupakan tools yang diintegrasikan dengan Prometheus untuk memvisualisasikan hasil metric yang didapat oleh Prometheus, sehingga sangat berguna untuk analisa data resource server yang ada saat ini.

Secara arsitektur ekosistem dari Prometheus & Grafana adalah sebagai berikut:

Tutorial kali ini kita akan melakukan installasi dan konfigurasi Prometheus & Grafana di CentOS 7

Install & Konfigurasi Prometheus

  • Sebelum memulai, buat terlebih dahulu user Prometheus nya:
# useradd --no-create-home -s /bin/false prometheus
  • Setelah itu buat direktori untuk Prometheus di /etc dan /var/lib
# mkdir /etc/prometheus
# mkdir /var/lib/prometheus
  • Buat direktori data untuk Prometheus
# for i in rules rules.d files_sd; do sudo mkdir -p /etc/prometheus/${i}; done
  • Rubah ownership direktori Prometheus yang sebelumnya kita buat
# chown prometheus:prometheus /etc/prometheus
# chown prometheus:prometheus /var/lib/prometheus
  • Download paket Promotheus yang paling terbaru:
# curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
  • Ekstrak file Prometheus yang sebelumnya di download
# tar xvf prometheus*.tar.gz
  • Masuk ke dalam direktori Prometheus nya:
# cd prometheus*/
  • Salin file binary prometheus & promtool ke direktori /usr/local/bin dan /usr/bin
# cp prometheus /usr/bin/
# cp prometheus /usr/local/bin/

# cp promtool /usr/bin/
# cp promtool /usr/local/bin/
  • Salin file konfigurasi prometheus.yml ke direktori /etc/prometheus
# cp prometheus.yml /etc/prometheus/prometheus.yml
  • Salin direktori consoles dan console_libraries ke direktori/etc/prometheus
# cp consoles/ console_libraries/ /etc/prometheus/
  • Untuk saat ini konfigurasi Prometheus akan kita biarkan secara default
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  • Supaya Prometheus dapat di manage service nya oleh systemd, maka kita perlu menambahkan konfigurasi berikut di /etc/systemd/system/
# vi /etc/systemd/system/prometheus.service
  • Isi konfigurasinya sebagai berikut:
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
Environment="GOMAXPROCS=1"
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries \
  --web.listen-address=0.0.0.0:9090 \
  --web.external-url=

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target
  • Rubah pada bagian berikut, dan sesuaikan dengan kondisi CPU yang server kita miliki
Environment="GOMAXPROCS=1
  • Rubah ownership Prometheus
# for i in rules rules.d files_sd; do chown -R prometheus:prometheus /etc/prometheus/${i}; done
# for i in rules rules.d files_sd; do chmod -R 775 /etc/prometheus/${i}; done
# chown -R prometheus:prometheus /var/lib/prometheus/
  • Reload system daemon dan jalankan service nya
# systemctl daemon-reload
# systemctl enable --now prometheus
  • Cek service Prometheus nya apakah sudah running atau belum
# systemctl status prometheus

  • Kemudian lakukan pengecekan via web browser, menggunakan alamat http://ip_prometheus_grafana:9090

Sampai tahap ini Prometheus sudah berhasil terinstall. Selanjutnya kita akan menambahkan Node Exporter di server Linux untuk mendapatkan metric server

Install & Konfigurasi Node Exporter

  • Download paket installasi Node Exporter
# curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
  • Ektrak file node exporter yang sudah di dowload dan salin binary file nya ke /usr/local/bin dan /usr/bin
# tar -xvf node_exporter*.tar.gz
# cd  node_exporter*/
# cp node_exporter /usr/local/bin
# cp node_exporter /usr/bin
  • Cek versi node exporter
# node_exporter --version
node_exporter, version 0.18.1 (branch: HEAD, revision: 3db77732e925c08f675d7404a8c46466b2ece83e)
  build user:       root@b50852a1acba
  build date:       20190604-16:41:18
  go version:       go1.12.5
  • Buat service node_exporter.service
# vi /etc/systemd/system/node_exporter.service
  • Isi file node_exporter.service seperti berikut:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target
  • Reload systemd dan start service node exporter nya:
# systemctl daemon-reload
# systemctl enable --now node_exporter
  • Cek service node exporter nya apakah sudah running atau belum
# systemctl status node_exporter

  • Apabila status service node exporter sudah running seperti di atas, kemudian tambahkan konfigurasi di prometheus.yml seperti berikut:
# vi /etc/prometheus/prometheus.yml
- job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']
  • Restart service Prometheus nya
# systemctl status prometheus
  • Kemudian cek di Prometheus Dashboard, apakah muncul targets dengan nama node_exporter seperti berikut

Sampai tahap ini, Prometheus sudah berhasil mendapatkan metric dari server Linux yang kita install Node Exporter, selanjutnya tinggal membuat visualisasinya menggunakan Grafana

Install & Konfigurasi Grafana

  • Tambahkan repositori Grafana
# vi /etc/yum.repos.d/grafana.repo
  • Tambahkan isi file grafana.repo seperti berikut:
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
  • Update repositori CentOS
# yum makecache fast
  • Install grafana
# yum -y install grafana
  • Start service Grafana dan setup supaya running pada saat booting
# systemctl enable --now grafana-server
  • Akses Dashboard Grafana menggunakan url berikut http://ip_prometheus_grafana:3000, username dan password defaultnya adalah admin : admin

  • Berikutnya akan diminta untuk merubah password default atau bisa di skip (disarankan untuk merubah password default)

  • Setelah penggantian password selesai, akan muncul tampilan awal dari Grafana seperti berikut:

  • Untuk dapat menampilkan statistik metric server yang kita monitoring, tambahkan data source dengan memilih Prometheus terlebih dahulu seperti berikut:

  • Karena server Prometheus dan Grafana berada di satu server yang sama, masukkan URL http://localhost:9090 seperti berikut:

  • Lakukan test untuk memastikan data source Prometheus nya bisa di gunakan

  • Setelah data source Prometheus nya sudah di setup, tambahkan Dashboard untuk menampilkan metric untuk memonitoring server secara real time.

  • Template dashboard bisa di cari di link berikut https://grafana.com/grafana/dashboards, dan yang akan digunakan disini adalah nomor 11074 (https://grafana.com/grafana/dashboards/11074)

  • Kemudian akan muncul informasi dari template nya. Pilih Folder General atau bebas, kemudian pilih Data Sourcenya ke Prometheus

  • Setelah proses import selesai, maka akan muncul Dashboard Monitoring Server Linux seperti berikut:

Apabila dashboard menunjukkan data metric seperti di atas, berarti Prometheus dan Grafana berjalan dengan baik. Kita bisa melakukan perubahan pada panel yang ada sesuai dengan kebutuhan.

Sekian dan terima kasih, semoga bermanfaat ya.

Leave a Comment

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top