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 :)