Showing posts with label Grafana. Show all posts
Showing posts with label Grafana. Show all posts

Sunday, March 18, 2018

Server Monitoring Perfomance Use Telegraf, Influxdb, and Grafana

Halo sobat Nostra,

Kali ini saya akan berbagi tutorial membuat monitoring perfomance server menggunakan Telegraf, InfluxDB dan Grafana. Kita akan memonitor penggunaan CPU, memory, Disk, Network, dll pada server. Untuk tutorial ini kita menggunakan OS Centos 7

InfluxDB
InfluxDB adalah database time series yang dibagun untuk menangani baca tulis yang tinggi. InfluxDB digunakan sebagai database untuk menampung data timestamp yang banyak, mencakup Devops Monitoring, metrik aplikasi dan real-time analytics.

Untuk menginstall versi stable terupdate, kita akan menggunakan yum package manager:

cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

Setelah reponya ditambah di konfigurasi yum, install dan start service telegram dengan cara:


sudo yum install influxdb
sudo systemctl start influxdb

Set user untuk mengakses influxdb.











Ubah konfigurasi influxdb untuk mengaktifkan auth influxDB.

nano /etc/influxdb/influxdb.conf
#supaya bisa listen semua
bind-address = "0.0.0.0:8088"
#mengaktifkan auth influxdb
auth-enabled = true

Restart influxdb untuk mengupdate konfigurasinya.

sudo systemctl restart influxdb

Telegraf
Telegraf adalah daemon yang dapat berjalan di server mana pun dan mengumpulkan beragam metrik dari sistem (cpu, memori, swap, dll.). Ini juga memiliki plugin output untuk mengirim metrik ke berbagai datastores termasuk InfluxDB, Graphite, OpenTSDB, Datadog, Librato, Kafka, MQTT, NSQ, dan banyak lainnya.

Sebelumnya kita sudah menambahkan repo waktu menginstall influxdb, sehingga kita sudah bisa langsung menginstall telegraf dengan cara:

sudo yum install telegraf
sudo systemctl start telegraf

Ubah hostname sesuai dengan hostname agen tersebut. Sehingga nanti kita bisa menfilter data sesuai hostname nya

vim /etc/telegraf/telegraf.conf

hostname = "server1"
[[outputs.influxdb]]

urls = ["http://127.0.0.1:8086"] #set ip influxDB
username = "telegraf"
password = "password"

Restart service telegraf

sudo systemctl restart telegraf


Secara default telegraf sudah mengaktifkan beberapa input plugin seperti disk, mem, network, swap, dll. Jika kita membutuhkan inputan lain bisa kita tambahakan sesuai kebutuhan.

Sebagai referensi untuk input plugin telegrafnya dapat membuka link berikut:
https://github.com/influxdata/telegraf/tree/master/plugins/inputs

Untuk melihat data yang dikirim telegraf di influxDB dengan cara
























Grafana

Digunakan untuk menampilkan dashboard monitoring.
Tambahkan file baru /etc/yum.repos.d/grafana.repo dengan isinya

[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/6/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Setelah repo ditambah lakukan perintah ini untuk instalasinya:

sudo yum install grafana
sudo service grafana-server start
sudo systemctl enable grafana-server.service

Untuk lebih mudahnya kita dapat mendownload contah template grafana dashboard yang dibagikan orang lain https://grafana.com/dashboards.

Karena kita memakai telegraf sebagai collector dan influxdb sebagai databasenya kita dapat menggunakan dashboard ini: https://grafana.com/api/dashboards/1443/revisions/4/download

Masuk ke dashboard grafana.
http://192.168.10.10:3000/

Tambahkan konfigurasi data sources influxdb

Isi data seperti dibawah ini dan save and test.



Import dashboard yang sudah kita buat tadi.




Isi nama dashboard dan pilih data influxdb.

Berikut tampilan dashboard yang telah kita import tadi.











Sekian tutorial membuat monitoring server perfomance. Semoga bermanfaat :)

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