Monday, September 2, 2019

Monitoring Linux Dengan Grafana, InfluxDB, dan Netdata

Monitoring menjadi kebutuhan utama bagi sys admin untuk memantau kondisi "ternak"nya apakah berada pada kondisi yang baik atau tidak. Selain itu, monitoring juga bisa membantu sysadmin tidur lebih tenang, karena dengan monitoring pengambilan tindakan atau perencanaan menjadi lebih terarah dan tersusun dengan rapi (menurut saya sih itu), yang mana artinya sysadmin dapat tidur dengan (lebih) lelap karena perencanaan dan tindakan sudah tersedia. hehehe . . .

Karenanya, kali ini saya ingin berbagi catatan bagaimana memonitoring Linux dengan beberapa tool populer seperti Netdata, InfluxDB dan Grafana. Tentu saja monitoring dengan tool-tool ini tidak terbatas di Linux atau server saja, bisa juga untuk monitoring PC laptop atau desktop dengan sistem operasi yang berbeda karena tool yang akan kita gunakan adalah tool yang crossplatform.

Seperti biasa, first thing first. Environment yang saya gunakan kali ini adalah sebagai berikut :
OS : Lubuntu Desktop 19.04
Docker : Docker version 19.03.1, build 74b1e89
Netdata : netdata v1.16.1-146-g2f5e36ef
InfluxDB : version 1.7.7
Grafana : Grafana v6.3.5 
Semua catatan yang saya buat di deploy menggunakan docker, karenanya docker service wajib di install terlebih dahulu agar catatan ini bekerja dengan baik. :P

Baiklah, mari kita mulai prosesi ngopreknya.  Buat sebuah folder untuk volume service yang akan kita install, (tidak harus sama, tapi pastikan mencukupi untuk kebutuhan ngoprek kali ini)
mkdir -vp /home/$USER/container/volume
masuk ke dalam direktori tersebut
cd /home/$USER/container/volume
Kalo sudah, kita akan mulai deploy tiap service.

Deploy Netdata
Netdata adalah layanan yang berperan sebagai "agen" untuk mengumpulkan berbagai informasi dimana Netdata terinstall. Untuk lebih detail tentang fitur atau informasi apa saja yang di collect oleh netdata, bisa mampir ke situs resmi milik Netdata. Karena kita akan mendeploy menggunakan docker, maka kita tidak perlu menginstall netdata, cukup buat direktori untuk Netdata
mkdir -vp netdata
Kemudian deploy container Netdata  dengan perintah:
docker run -d --name netdata \
--hostname netdata \
-p 19999:19999 \
-v $PWD/etc/netdata/netdata.conf:/etc/netdata/netdata.conf \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata
Buat sebuah configurasi file dengan nama netdata.conf, kemudian isi file konfigurasi tersebut seperti berikut :
[backend]
    enabled = yes
    type = opentsdb
    destination = [ip_atau_domain]:4242
Copy file tersebut ke $PWD/etc/netdata/netdata.conf , kemudian restart container Netdata dengan perintah:
docker restart netdata
Jika sudah, maka Netdata sudah siap untuk mengcollect data dari komputer dimana dia terinstall.

Deploy InfluxDB
InfluxDB berperan sebagai database yang akan menampung "angka-angka" yang diperoleh dari Netdata. Dari InfluxDB inilah Grafana akan mengambil data atau informasi dimana Netdata, lalu akan Grafana akan menampilkan informasi tersebut melalui dashboard yang tersedia di grafana. Karena kita juga akan mendeploy InfluxDB dengan docker, maka yang perlu kita lakukan adalah membuat direktori untuk InfluxDB:
mkdir -vp /home/$USER/container/volume
Kemudian, kita generate config untuk InfluxDB dengan perintah :
docker run --rm influxdb influxd config > influxdb.conf
File yang dihasilkan adalah influxdb.conf dan berikut adalah sebagian konten dari isi file influxdb.conf

influxdb.conf
Ada banyak pilihan "agen"  yang bisa di integrasikan dengan InfluxDB. Karena kita menggunakan Netdata, maka pada bagian opentsdb, edit configurasi InfluxDB sesuai dengan contoh berikut :
[[opentsdb]]
  enabled = true
  bind-address = ":4242"
  database = "opentsdb"
  retention-policy = ""
  consistency-level = "one"
  tls-enabled = false
  certificate = "/etc/ssl/influxdb.pem"
  batch-size = 1000
  batch-pending = 5
  batch-timeout = "1s"
  log-point-errors = true
Jika sudah, deploy container InfluxDB dengan perintah :
docker run -d \
-p 4242:4242 \
-p 8086:8086 \
-p 8083:8083 \
--name influxdb \
--hostname influxdb \
-v $PWD/var/lib/influxdb:/var/lib/influxdb \
-v $PWD/etc/influxdb:/etc/influxdb \
influxdb
Setalah container berhasil running, copy configurasi yang dibuat tadi dengan perintah:
cp influxdb.conf $PWD/var/lib/influxdb 
 Seperti biasa, restart container InfluxDB dengan perintah:
docker restart influxdb
Netdata seharusnya sudah mulai mengirim data ke influxdb, kita bisa cek dengan perintah berikut :
docker run -it --rm influxdb influx -host [ip_atau_domain] -username '[username]' -password '[password]' 
(biasanya by default, tidak menggunakan username atau password)

Kemudian kita cek apakah ada database yang terbentuk dengan perintah
SHOW DATABASES
Saat Terhubung dengan InfluxDB
Bisa kita lihat, database opentsdb sudah terbentuk. Kita akan melihat isi dari database tersebut. perintahnya :
USE opentsdb 
Kemudian kita tampilkan daftar tabel dengan perintah :
SHOW MEASUREMENTS LIMIT 10
Beberapa Measurement dari Netdata

Untuk melihat apakah sudah ada data yang masuk ke dalam tabel, kita bisa melkukan query pada tabel measurement yang ada, contoh, kita akan melihan isi dari measurement netdata.apps.cpu.VMs , kita bisa menggunakan perintah :
SELECT * FROM "netdata.apps.cpu.VMs" LIMIT 10
Sample data yang di collect Netdata

Untuk keluar dari console InfluxDB, bisa digunakan perintah:
QUIT
Dengan ini, InfluxDB sudah siap digunakan. (Beberapa cheat sheet InfluxDB yang pernah saya buat)

Konfigurasi Grafana
Grafana is the leading open source project for visualizing metrics. Supporting rich integration for every popular database like Graphite, Prometheus and InfluxDB. Setidaknya itulah penjelasan yang kita temukan saat kita coba googling dengan keyword Grafana.

Singkatnya, Grafana adalah dashboard yang bisa membantu untuk memvisualisasikan data yang ada pada Graphite, Prometheus and InfluxDB.  Langsung saja, untuk mendeploy Grafana kita gunakan perintah sebagai berikut :
docker run -d \
--name grafana \
--hostname grafana \
-p 3000:3000 \
grafana/grafana
 Login ke dashboard grafana yang bisa di akses dari browser dengan alamat url : http://[ip_atau_domain]:3000, dan credential awal yang digunakan adalah username admin dengan password admin.
Login page Grafana
Saat login pertama kali, kita akan ditawarkan untuk mengganti password. Silahkan diganti jika ingin mengganti password login anda, tapi juga bisa di skip dengan klik "Skip"

Ganti Password?

Di bagian awal kita akan dihadapkan dengan flow dari setup Grafana. Setelah install, maka kita perlu mendefinisikan, sumber data yang akan digunakan.  Klik Add data source,  
Awal Setup Grafana
Kemudian pilih InfluxDB dari daftar data source

Pilih InfluxDB
Kemudian isi form yang yang diperlukan, seperti URL InfluxDB, Nama database opentsdb, username dan password InfluxDB jika ada. Kemudian klik "Save and Test".

Sekedar catatan
jika anda mendapati error message Network Error: Bad Gateway(502) atau seperti yang terlihat pada gambar :
Error gan
Coba pastikan URL atau ip address yang di inputkan menggunakan http:// di depepannya

Coba pake http://

Jika proses testing sudah berhasil, klik back dan kita akan melihat InfluxDB ada pada list source data yang akan digunakan Grafana
InfluxDB berhasil ditambahkan

Dengan ini integrasi Netdata, InfluxDB dan Grafana sudah selesai. Selanjutnya adalah membuat visualisasi data yang sudah tersedia ke grafik-grafik yang ada pada Grafana

Menambahkan Dashboard
Pada catatan kali ini saya hanya mencoba import dashboard yang sudah ada.  Kita bikin sendiri bisa si, tapi akan jadi lebih panjang dan lebar postingannya. Jadi kali ini kita akan mengimport dashboard yang sudah tersedia pada situs Grafana. Silahkan buka Sub-Menu Dashboard >> Manage. Kemudian kita pilih Import

New Dashboard
Untuk meng-explore dashboard apa saja yang tersedia di repository grafana, bisa cek dimari. Kali ini saya akan mencoba menggunakan template dengan id 2701 (barangkali mau mampir ke repo creatornya). Maka kita isi kolom id dengan angka 2701 kemudian klik "Load".
Isi Kolom ID Dashboard
Maka akan muncul informasi tentang dasboard yang akan di install, Jangan lupa isi kolom "datasource-influxdb" dengan InfluxDB yang sudah kita config.
Tambahkan InfluxDB nya
Kemudian klik "Import" dan bim salabim. Dashboard pun muncul
Dashboard yang terinstall
Di dashboard sudah tersedia hal-hal mendasar tentang sistem server atau komputer yang sering kita gunakan informasinya. Seperti utilisasi CPU, RAM, dan Penyimpanan. Ada juga Networking dan masi banyak lagi. Jangan lupa, save dulu dashboardnya sebelum meninggalkan situs grafana
Save dashboardnya gan

Beri nama dashboard sesuai dengan keinginan, kemudian klik "Save"
Kasih nama dashboard
Dashboard yang dibuat tadi akan muncul di halaman awal grafana kita

Demikian longpost kali ini, kalo ada pertanyaan ato komentar, bisa di posting di kolom atau chat saya via telegram yang ada di pojok kanan atas. Semoga bermanfaat. :)

referensi :

No comments:

Post a Comment