Sunday, September 17, 2017

Monitoring Perfomance Server with Collectd, Graphite, & Grafana

Halo sobat Nostra!
Di postingan perdana kali ini saya ingin memebrikan tutorial bagaimana cara membuat monitoring perfomansi server dengan menggunakan produk opensource (gratisan). Server monitoring adalah server yang berfungsi untuk melihat perfomansi dari sever yang berjalan seperti CPU, RAM, Disk, Network dan lain-lain. Kenapa kita butuh untuk memonitor perfomansi server? Karena server adalah backbone dari bisnis anda kita perlu memberikan perhatian tinggi. Dengan adanya server monitor kita akan dapat melihat apa yang terjadi secara langsung. Kita juga dapat mendeteksi masalah-masalah sebelum berakibat fatal. Data yang kita dapatkan dari server monitoring, kita juga dapat mengambil keputusan penting untuk mengurangi resiko terjadinya kegagalan server. Saat ini banyak perusahaan yang menyediakan layanan untuk memonitor server anda tetapi masalahnya adalah berbayar. Jangan takut di linux banyak sekali tools yang opensource yang akan memanjakan anda. Pada tutorial kali ini kita akan memakai tools collectd, grapite, dan grafana. Sebelum kita mulai untuk instalasi, saya akan menjelaskan masing-masing fungsi dari ke-3 produk tersebut. Collectd akan mengumpulkan dan mengirim metric ke Graphite. Graphite akan menyimpan data tersebut. Selanjutnya pada Grafana kita akan mengolah data menggunakan Graphite sebagai storage backend untuk membuat grafik sesuai dengan yang kita inginkan.

Oh iya pada tutorial kali ini saya menggunakan OS Ubuntu 14.04 LTS

Collectd

Collectd adalah salah satu daemon terbaik untuk mengumpulkan metric sistem secara periodik dan store informasi.

Install collectd
 sudo apt-get update  
 apt-get install collectd collectd-utils  

Start service collctd
 service collectd start  

Configure collectd
 sudo nano /etc/collectd/collectd.conf  

Kita dapat comment out plugin lainnya. Pastikan jika anda ingin menggunakan plugin, konfigurasi pluginnya harus benar dan berjalan baik jika tidak collectd tidak bisa up.
 LoadPlugin battery  
 LoadPlugin cpu  
 LoadPlugin df  
 LoadPlugin interface  
 LoadPlugin load  
 LoadPlugin memory  
 LoadPlugin swap  
 LoadPlugin irq  
 LoadPlugin processes  
 LoadPlugin users  
 LoadPlugin write_graphite  

Tambahkan konfigurasi di collectd untuk mengirim metric ke graphite
 <Plugin write_graphite>  
     <Node "graphite">  
         Host "127.0.0.1"  
         Port "2003"  
         Protocol "tcp"  
         LogSendErrors true  
         Prefix "collectd."  
         StoreRates true  
         AlwaysAppendDS false  
         EscapeCharacter "_"  
     </Node>  
 </Plugin>  

Pada konfigurasi Collectd kita dapat menambahkan plugin lainnya untuk menambah metric-metric apa yang kita ingin tambahkan untuk didapat datanya. Untuk lebih lanjut dapat dilihat list plugin collectd.


Restart service collectd
 service collectd restart  


Graphite

Graphite is an open source enterprise-scale monitoring tool that does two things:
- Store numeric time-series data
- Render graphs or API responses of this data on demand

Graphite terdiri dari 3 komponen yang semuanya menggunakan phyton:
1. Carbon : Daemon yang me listen data time series
2. Whisper : database yang menyimpan data time series (desain mirip RRD)
3. Graphite webapp : Django webapp yang menampilkan data menggunakan cairo yang diakses dari web

Graphite sangat mudah di install menggunakan native packages. pertama kita butuh semua packages yang dibutuhkan:
 sudo apt-get update  
 sudo apt-get -y install apache2 libapache2-mod-wsgi graphite-web graphite-carbon  

Edit carbon cache service file:
 sudo nano /etc/default/graphite-carbon  

Kita ini akan membuat carbon cache aktif ketika service auto start.
Tambahkan konfigurasi ini:
 CARBON_CACHE_ENABLED=true  


Edit file konfigurasi Carbon cache:
 sudo nano /etc/carbon/carbon.conf  

Ubah konfigurasi seperti dibawah ini:
 ENABLE_LOGROTATION = true  
 MAX_CREATES_PER_MINUTES = 600  
Kemudian save file dan exit

Copy file default storage-aggregation.conf
 sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf  


Kita harus membuat graphite mengatur data yang diterima dari collectd dengan membuat skema penyimpanan
 sudo nano /etc/carbon/storage-schemas.conf  

Tambahkan konfigurasi dibawah ini
 [collectd]  
 pattern = ^collectd.*  
 retentions = 10s:1d,1m:7d,10m:1y  


Start carbon cache service:
 sudo service carbon-cache start  



Edit file konfigurasi graphite web:
 sudo nano /etc/graphite/local_settings.py  

Uncomment SECRET_KEY
 SECRET_KEY = 'secret_key_for_salting_hashes'  

Uncomment dan atur time zone yang akan ditampilkan di graph
 TIME_ZONE = 'Asia/Jakarta'  

Inisialisasi konfigurasi DB Graphite
 sudo graphite-manage syncdb  

Akan muncul promted untuk membuat akun superuser. Pilih yes dan masukkan kredensial. Ini akan digunakan pada interface Graphite untuk menyimpan grafik.

Buat kepemilikan untuk akses user _graphite:
 sudo chown _graphite:_graphite /var/lib/graphite/graphite.db  

Konfigurasi Apache
 sudo a2dissite 000-default  
 sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available  
 sudo a2ensite apache2-graphite  

Ubah port apache yang akan digunakan:
 sudo nano /etc/apache2/ports.conf  

Edit sepert dibawah ini:
 Listen 81  

Tambahkan konfigurasi http untuk vhost graphite
 sudo nano /etc/apache2/sites-available/apache2-graphite.conf  

Ubah jadi seperti ini:
 <VirtualHost *:81>  

Reload service Apache
 sudo service apache2 reload  



Untuk melihat apakah collectd sudah berjalan dengan benar mengirim metric ke graphite kita dapat melihatnya di dalam folder Metrics akan terdapat folder collectd. Akses graphite web menggunakan localhost:81.





Grafana

Grafana adalah sebuah software opensource yang membaca sebuah data matrics untuk dibuat menjadi sebuah grafik atau sebuah data tertulis. Grafana banyak sekali digunakan untuk melakukan analisis data dan monitoring. Grafana mendukung banyak storage backends yang berbeda untuk data time series (Source Data). Setiap source data memiliki Query Editor tertentu yang disesuaikan untuk fitur dan kemampuan tertentu.



Install Grafana

Tambahkan list repo file di /etc/apt/sources.list.
 deb https://packagecloud.io/grafana/stable/debian/ jessie main  
 curl https://packagecloud.io/gpg.key | sudo apt-key add -  

Install package grafana
 sudo apt-get update  
 sudo apt-get install grafana  

Jalankan service dengan perintah systemd:
 systemctl daemon-reload  
 systemctl start grafana-server  
 systemctl status grafana-server  

Enable service grafana untuk auto up ketika reboot.
 sudo systemctl enable grafana-server.service  

Grafana Web
Akses Grafana dari web dengan url localhost:3000. Untuk login gunakan username/password : admin/admin






Edit data source dan pilih Graphite sebagai storage backend.




Untuk membuat Grafiknya kita perlu melakukan explore lebih jauh lagi terhadap grafana. Dengan data metric yang ada kita bebas untuk membuat grafik seperti yang kita inginkan dan butuhkan.


Salah satu yang sulit dan lama yaitu mengubah data metric menjadi grafik.
Sebagai referensi kita dapat melihat dashboard yang telah dibuat dan dishare oleh orang lain dapat kita temukan di https://grafana.com/dashboards.

Sekian tutorial kali ini bagaimana membuat monitoring server perfomance.
Semoga bermanfaat dan selamat mencoba.
Terima kasih :)

No comments:

Post a Comment