venerdì 27 febbraio 2015

Alert when any site is down!

Ottimo script collegato al proprio calendar che manda sms per verificare se i nostri siti sono down o meno:

 http://techawakening.org/?p=988 

Piccola modifica per evitare di ricevere troppi messaggi di spam.

Il piccolo script prevede di mandare/creare l'evento di down solo quando il sito è offline e salva in tutti i casi il log sul foglio sul drive.


function isMySiteDown() {
  var tot_site=5;
 
for (i=3;i<=tot_site;i++)  {
   
  // In cell E3 enter the URL of the site you want to monitor
 
  var url = SpreadsheetApp.getActiveSheet().getRange("F"+i).getValue();
        if(url.length)  {
         
  var response, error;

  try {  
    response = UrlFetchApp.fetch(url);
 
  } catch(error) {  
   insertData(error, -1, url, i, "Website down");
   continue;
  }
 
  var code = response.getResponseCode();
 
  if (code != 200) {
    insertData(response.getContent()[0], code,url, i,"Website DOWN");
  }else{
    insertData(response.getContent()[0], code,url, i,"Website UP");
  }
  }
}
}
 
function insertData(error, code, url, i, msg) {
 
   
  var sheet = SpreadsheetApp.getActiveSheet();
  var email = sheet.getRange("F8").getValue();
  var row   = sheet.getLastRow() + 1;
  var now = new Date().getTime();
 
  sheet.getRange(row,1).setValue(new Date());
  sheet.getRange(row,2).setValue(url);
  sheet.getRange(row,3).setValue(error);
  sheet.getRange(row,4).setValue(code);
 
 
  if(code!=200){
    CalendarApp.createEvent( url + ' is DOWN' , new Date(now+40000), new Date(now+40000)).addSmsReminder(0);
    MailApp.sendEmail(email, msg, error);
  }
 
 
}

sabato 14 febbraio 2015

Raspberry Pi configurare due wifi dongle



Il primo dongle è un Tenda il secondo un piccolo Netgear, entrambi collegati alla stessa rete.


sudo apt-get purge ifplugd


file: /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp


allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

allow-hotplug wlan1
iface wlan1 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
ifcae default inet dhcp





file: /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="Digicom_5B36"
psk="xxxxxxxxxxxxxx"
}







mercoledì 4 febbraio 2015

MongoDB - Script di compact per tutto il server

Questo script esegue la compact su tutte le collection per tutti i db di tutto il server.

mongo --host <servername> compact.js

utile quando si prova a risparmia  spazio su disco anche se non è sempre detto che funzioni...








giovedì 4 dicembre 2014

MongoDB - Script per rigenerare _id

Alle volte capita che per sbaglio vengano inseriti dei valori non generati da mongo per _id.

es:

{"_id":1, "a":1},
{"_id":2, "a":3}.. etc..etc



Mongo non prevede l'unset del _id
uno script del genere

 db.events.update({},{$set : {_id:new ObjectId()}},{multi:true});

ritorna questo errore:

After applying the update to the document {_id: 4 , ...}, the (immutable) field '_id' was found to have been altered to _id: ObjectId('54801ec49103c90347485eaf')


il modo migliore è quello di prendere tutti i valori ribaltarli su una collection di appoggio (eliminando il vecchio _id) e rinominare la collection in quella sorgente.

lunedì 17 novembre 2014

Client Retrofit - Problemi con java.util.Date

Nell'ultimo periodo sto utilizzando Retrofit per creare client di accesso a api rest.

Un problema comune è quando si vuole passare nella richiesta in @Body in post un parametro con un modello di classe che contenga un campo java.util.Date. Il problema nasce dalla conversione in Json per il client che si aspetta tutti dati in json in ingresso e a sua volta restituisce un json.

Ho risolto il problema configurando il serializzatore e deserializzatore per il client okclient:


 private static RestAdapter buildClientRestAdapter(String uri) {

final OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(ClientDispatcher.timeout, TimeUnit.MILLISECONDS);
okHttpClient.setConnectTimeout(ClientDispatcher.timeout, TimeUnit.MILLISECONDS);
final OkClient httpClient = new OkClient(okHttpClient);

final GsonBuilder builder = new GsonBuilder();
builder.setDateFormat(DateFormat.MILLISECOND_FIELD);

builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
   @Override
   public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return new Date(json.getAsJsonPrimitive().getAsLong());
   }

});


builder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
   @Override
   public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext  context) {
     return src == null ? null : new JsonPrimitive(src.getTime());
   }
 });

final Gson gson = builder.create();

return new RestAdapter.Builder().setEndpoint(uri).setLogLevel(RestAdapter.LogLevel.FULL).setConverter(new GsonConverter(gson)).setClient(httpClient).build();
    }

giovedì 13 novembre 2014

MongoDB - Script per profile su tutto il server

Abilita il profile per tutti i db del mongo server esclusi local e admin.


per interrogare tutti i profile con l'elenco delle ultime 5 query che superano i 5 millis

lunedì 21 luglio 2014

MongoDB - Script to check Collections Size

Script di utils per recuperare la collection size di ogni db del vostro mongo.

da lanciare con: mongo mongo check_collection_size.js

permette di ottenere la size delle collection di tutti i db in modo da poterla monitorare con qualche app tipo jmeter o nagios.

il risultato:


[ {
"name" : "meteoArpa",
"collections" : [
{
"name" : "data",
"storageSize" : "680.00 KB",
"size" : "510.89 KB",
"count" : 519
},
{
"name" : "pluvio",
"storageSize" : "21.46 MB",
"size" : "19.97 MB",
"count" : 20779
},
{
"name" : "system.indexes",
"storageSize" : "8.00 KB",
"size" : "336 B",
"count" : 3
},
{
"name" : "temperature",
"storageSize" : "21.46 MB",
"size" : "20.00 MB",
"count" : 20807
}
]
},
{
"name" : "pcat",
"collections" : [
{
"name" : "products",
"storageSize" : "8.00 KB",
"size" : "3.58 KB",
"count" : 11
},
{
"name" : "system.indexes",
"storageSize" : "8.00 KB",
"size" : "112 B",
"count" : 1
}
]
},
{
"name" : "admin",
"collections" : [ ]
}
]