Edi Santoso

Edi Santoso

( @repodevs )


Python & Odoo Developer who drink tea to enjoying the life


Real-Time monitoring linux server menggunakan netdata

Halo apakabar temen-temen? Semoga baik-baik saja ya. Kali ini saya akan menulis tentang monitoring linux server menggunakan netdata.

Sebenarnya apa sih netdata itu? kalau boleh saya kutipkan dari web resminya.

netdata is a system for distributed real-time performance and health monitoring. It provides unparalleled insights, in real-time, of everything happening on the system it runs (including applications such as web and database servers), using modern interactive web dashboards.

Jadi untuk bahasa mudahnya, netdata ini adalah sebuah system yang dibuat untuk monitoring / pemantuan sebuah performa system server, yang menampilkan laporan dengan menggunakan web dashboard yang interaktif.

netdata ini selain mempunyai tampilan yang interaktif, system aplikasi ini juga open source. bisa dilihat langsung untuk repositorynya di https://github.com/firehol/netdata

untuk dokumentasinya sendiri pun cukup lengkap, tetapi disini saya akan sedikit menulis ulang untuk bagian instalasi dan konfigurasi yang saya gunakan untuk memonitoring beberapa server yang saya gunakan.

ditulisan ini server yang saya gunakan yaitu ubuntu 16.04, yang sudah saya pasang nginx didalamnya, untuk tutorial instalasi & konfigurasi nginx mungkin lain waktu akan saya tuliskan di blog saya ini.

baiklah, pertama kita login ke vps / server kita, setelah itu kita install dependencies yang dibutuhkan

$ sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl

untuk dependencies dibawah ini adalah sebetulnya hanya opsional, tetapi ini disarankan untuk di install oleh netdata itu sendiri.

$ sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat

Selanjutnya kita clone project’s netdata dari repositorynya.

$ git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata

# setelah projects selesai di clone, kita masuk kedalam foldernya tersebut
$ cd ~/netdata

setelah masuk kedalam folder netdata kita install aplikasi menggunakan script netdata-installer.sh yang sudah ada.

$ sudo ./netdata-installer.sh

akan ada contoh output seperti berikut:

Installer Output
. . .
  It will be installed at these locations:

   - the daemon    at /usr/sbin/netdata
   - config files  at /etc/netdata
   - web files     at /usr/share/netdata
   - plugins       at /usr/libexec/netdata
   - cache files   at /var/cache/netdata
   - db files      at /var/lib/netdata
   - log files     at /var/log/netdata
   - pid file      at /var/run
. . .

jika ingin merubah folder instalasi bisa menggunakan command

$ sudo ./netdata-installer.sh --install /opt

Jika target folder penginstalan sudah benar, tekan ENTER untuk melanjutkan prosess instalasi. setelah itu akan keluar seperti berikut


Installer Output
. . .
  ^
  |.-.   .-.   .-.   .-.   .-.   .  netdata                          .-.   .-
  |   '-'   '-'   '-'   '-'   '-'   is installed and running now!  -'   '-'  
  +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->

  enjoy real-time performance and health monitoring...

Sekarang netdata sudah berhasil di install, sekarang kita bisa lihat hasilnya di http://YOUR_SERVER_ADDRESS:19999

Custom Configuration

Setelah selesai melakukan penginstalan dan aplikasi sudah berjalan, kita akan mencoba melakukan custom konfigurasi.

pertama buka file /etc/netdata/netdata.conf dari folder install netdata tadi, dari contoh ini tadi, saya install netdata saya di folder /opt, berarti untuk mengakses path penuh dari aplikasi netdata ini berada di /opt/netdata/etc/netdata/netdata.conf

Pada contoh custom konfigurasi ini saya akan merubah lamanya history yang di simpan oleh netdata, secara default netdata akan menyimpan history selama 1 jam atau 3600 detik.

untuk penyimpanan history ini juga akan memepengaruhi terhadap RAM kita, berikut gambaran RAM yang akan digunakan untuk menyimpan history kita ini

  • 3600 seconds (1 hour of chart data retention) uses 15 MB of RAM
  • 7200 seconds (2 hours of chart data retention) uses 30 MB of RAM
  • 14400 seconds (4 hours of chart data retention) uses 60 MB of RAM
  • 28800 seconds (8 hours of chart data retention) uses 120 MB of RAM
  • 43200 seconds (12 hours of chart data retention) uses 180 MB of RAM
  • 86400 seconds (24 hours of chart data retention) uses 360 MB of RAM

setelah mendapatkan gambaran RAM yang akan kita gunakan, kita langsung saja lakukan konfigurasinya.
Buka file /etc/netdata/netdata.conf

$ sudo nano /opt/netdata/etc/netdata/netdata.conf

cari parameter history pada bagian [global]

# file `/etc/netdata/netdata.conf`
. . .   
[global]   
        # glibc malloc arena max for plugins = 1   
. . .   
        # hostname = test-netdata   
        # history = 3600 # BARIS YANG AKAN KITA RUBAH
        # update every = 1   
. . .   

hilangkan tanda # di depan history dan rubah value nya menjadi 14400, sehingga konfigurasinya akan menjadi seperti ini.

# file `/etc/netdata/netdata.conf`
. . .   
[global]   
        # glibc malloc arena max for plugins = 1   
. . .   
        # hostname = test-netdata   
        history = 14400 # BARIS YANG KITA RUBAH
        # update every = 1   
. . .

simpan dan keluar setelah melakukan perubahan.

Mengaktifkan Kernel Same-page Merging atau KSM

Dengan mengaktifkan fitur KSM ini. netdata akan meningkan optimasi dan mengurangi penggunaan RAM antara 40-60%.

untuk mengkatifkan fitur KSM ini secara permanent kita akan masukan kedalam file /etc/rc.local

$ sudo nano /etc/rc.local

tambahkan command berikut sebelum command exit 0

echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs

jadi secara lengkap file /etc/rc.local akan menjadi seperti berikut

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs

exit 0

setelah kita selesai melakukan konfigurasi kita lakukan restart pada netadata kita.

$ sudo systemctl restart netdata

kita cek kembali pada dashboard untuk melihat hasilnya.


Setelah kita sudah melakukan sedikit konfigurasi, selanjutnya kita akan mencoba menampilkan dashboard dengan menggunakan nginx

kita install dependencies terlebih dahulu, dependencies ini akan digunakan untuk encrypt password.

$ sudo apt-get install apache2-utils nginx

setelah kita install dependencies, kita buat hash username & password yang akan kita gunakan untuk mengakses nginx kita

$ sudo htpasswd -c /etc/nginx/netdata-access repodevs

masukan password yang akan kita gunakan, pada prompt yang ada.

setelah itu kita konfigurasi nginx kita

$ sudo nano /etc/nginx/sites-available/default
upstream netdata-backend {
    server 127.0.0.1:19999;
    keepalive 64;
}

server {
    listen 80;
    # server_name monitor.domainmu.com;
    server_name _;

    auth_basic "Authentication Required";
    auth_basic_user_file netdata-access;

    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://netdata-backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

selanjutnya kita restart nginx kita

$ sudo service nginx restart

setelah kita restart nginx, kita akses dashboard dengan url yang sudah kita konfigurasi tadi.

monitor.domainmu.com

Sekian catatan kali ini, InsyaAllah akan ada pembahasan selanjutnya :)

comments powered by Disqus