cloud-computing

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)

xively_crontab

Sıcaklık Bilgisini Güncelleme

#!/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

#!/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)

#!/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)

#!/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

CEVAP VER