xively.com bir uzaktan ölçümleme ve monitoring servisi. Cron‘a ekleyeceğimiz phyton betikleri ile Raspberry Pi’nin ram, cpu, disk kullanım ve sıcaklık durumunu uzaktan canlı olarak takip etmek için kullanabilirsiniz. xively verileri kolayca analiz edebilmek için değişken zaman aralıkları için grafiklere dönüştürüyor. Aşağıdaki resimleri inceleyebilirsiniz.
Ayrıca Xively’nin android uygulamaları ile mobil aygıtlarınızdan da takip edebilirsiniz. Örneğin Trigger özelliğini, CPU sıcaklığı yada CPU yükü belirlediğiniz bir değere ulaşınca, veya disk alanı azalınca SMS ve E-posta ile haber verilmesini sağlayabilirsiniz.
Nasıl Kullanılır
Öncelikle xively.com‘a üye olarak buradan bir cihaz tanımı yapıyoruz. Daha sonra yeni eklediğimiz cihazın sayfasından Add Serial Number düğmesine tıklatarak, Manually sekmesinden cihazımıza bir kimlik numarası tanımlıyoruz (herhangi bir şey girilebilir, daha önce girilen bir seri numarası ile çakışmaması yeterli) Daha sonra cihazımızın sayfasından oluşturduğumuz seri numarasına tıklayarak Feed sayfasına ulaşıyoruz. Feed sayfasının sağ alt kısmında yer alan Devive Feed ID (1276296768 gibi bir sayıdır) ve API KEY‘i (4l24WpiCqiOoqLa17dLPo08ADlKuK6nJeGq4eynU6KBXpTBY gibi bir numaradır) bir kenara not alıyoruz. Device ID ve API KEY’i python betiklerimiz içinde belirteceğiz.
Yapılandırma Nasıl
Scripts adında bir dizin oluşturarak aşağıdaki python betiklerini ayrı birer dosya olarak kaydedin ve aşağıdaki gibi bir crontab girdisi oluşturun (sudo crontab -e komutunu kullanabilirsiniz)
Sıcaklık Bilgisini Güncelleme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#!/usr/bin/env python import time import os import eeml import sys import syslog import json def loadAvg(): p = os.popen('cat /proc/loadavg') i = 0 while 1: i = i +1 line = p.readline() if i==1: return(line.split()[0:5]) API_KEY = 'buraya_api_keyi_yazin' FEED = buraya_feed_idyi_yazin API_URL = '/v2/feeds/{feednum}.xml' .format(feednum = FEED) cpuLoad = loadAvg() min1 = cpuLoad[0] min5 = cpuLoad[1] min15 = cpuLoad[2] # open up your feed pac = eeml.Pachube(API_URL, API_KEY) #compile data pac.update([eeml.Data("CPU_Avg_1min", min1)]) pac.update([eeml.Data("CPU_Avg_5min", min5)]) pac.update([eeml.Data("CPU_Avg_15min", min15)]) # send data to xively pac.put() |
Disk Kullanım Bilgisini Güncelleme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#!/usr/bin/env python import time import os import eeml import sys import syslog import json def getDiskSpace(): p = os.popen("df -h /") i = 0 while 1: i = i +1 line = p.readline() if i==2: return(line.split()) API_KEY = 'buraya_api_keyi_yazin' FEED = buraya_feed_idyi_yazin API_URL = '/v2/feeds/{feednum}.xml' .format(feednum = FEED) DISK_stats = getDiskSpace() DISK_total = DISK_stats[2] DISK_free = DISK_stats[3][0:-1] DISK_perc = DISK_stats[4] # open up your feed pac = eeml.Pachube(API_URL, API_KEY) #compile data pac.update([eeml.Data("Disk_Free", DISK_free)]) # send data to cosm pac.put() |
RAM Kullanım Bilgisini Güncelleme (Free, Used, Buffer)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#!/usr/bin/env python import time import os import eeml import sys import syslog import json def getRAMinfo(): p = os.popen('free') i = 0 while 1: i = i + 1 line = p.readline() if i==2: return(line.split()[1:7]) API_KEY = 'buraya_api_keyi_yazin' FEED = buraya_feed_idyi_yazin API_URL = '/v2/feeds/{feednum}.xml' .format(feednum = FEED) RAM_stats = getRAMinfo() RAM_total = round(int(RAM_stats[0]) / 1000,1) RAM_used = round(int(RAM_stats[1]) / 1000,1) RAM_free = round(int(RAM_stats[2]) / 1000,1) RAM_buffer = round(int(RAM_stats[4]) / 1000,1) RAM_cached = round(int(RAM_stats[5]) / 1000,1) # open up your feed pac = eeml.Pachube(API_URL, API_KEY) #compile data pac.update([eeml.Data("RAM_Used", RAM_used)]) pac.update([eeml.Data("RAM_Free", RAM_free)]) pac.update([eeml.Data("RAM_Cached", RAM_cached)]) pac.update([eeml.Data("RAM_Buffer", RAM_buffer)]) # send data to cosm pac.put() |
CPU Kullanım Bilgisini Güncelleme (1dakika, 5dakika ve 15dakikalık ortalama kullanım verileri)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#!/usr/bin/env python import time import os import eeml import sys import syslog import json def getCPUtemperature(): res = os.popen('vcgencmd measure_temp').readline() return(res.replace("temp=","").replace("'C\n","")) API_KEY = 'buraya_api_keyi_yazin' FEED = buraya_feed_idyi_yazin API_URL = '/v2/feeds/{feednum}.xml' .format(feednum = FEED) CPU_temp = getCPUtemperature() # open up your feed pac = eeml.Pachube(API_URL, API_KEY) #compile data pac.update([eeml.Data("CPU_Temperature", CPU_temp, unit=eeml.Celsius())]) # send data to cosm pac.put() |
Xively Grafikleri
