add new scripts
[monitor.git] / statistics / node_status_jun09feb10.r
diff --git a/statistics/node_status_jun09feb10.r b/statistics/node_status_jun09feb10.r
new file mode 100644 (file)
index 0000000..2ba5da8
--- /dev/null
@@ -0,0 +1,47 @@
+source("functions.r");
+
+# data collected from M3 fb db 
+# system("./harvest_nodestatus.py  > node-status-jun09-feb10.csv")
+ns <- read.csv('node-status-jun09-feb10.csv', sep=',', header=TRUE)
+
+available_nodes <- function (ns, from, to, type, fmt="%b")
+{
+    # find 'type' range of days
+    dates <-seq(as.Date(from), as.Date(to), type)
+    months <- format(dates, fmt)
+    hbreaks<-unclass(as.POSIXct(dates))
+
+    xx<-NULL;
+    yy<-NULL;
+
+    for ( i in seq(1,length(hbreaks)-1) )
+    {
+        # get range from ns
+        ns_sub <- ns[which(ns$date > hbreaks[i] & ns$date <= hbreaks[i+1] & ns$status == 'BOOT'),]
+        nodes <- length(ns_sub$date)
+
+        xx<- c(xx, hbreaks[i])
+        yy<- c(yy, nodes)
+
+    }
+    m<- months[1:length(months)-1]
+    return (rbind(xx,yy,m))
+}
+
+an <- available_nodes(ns, "2009-06-10", "2010-02-28", 'day')
+
+x_start<-unclass(as.POSIXct("2009-06-10", origin="1970-01-01"))[1]
+x_end  <-unclass(as.POSIXct("2010-02-28", origin="1970-01-01"))[1]
+
+par(mfrow=c(1,1))
+par(mai=c(.9,.8,.5,.4))
+#start_image("daily-node-count.png")
+sx<-an[1,][which(as.numeric(an[2,]) > 100)]
+sy<-an[2,][which(as.numeric(an[2,]) > 100)]
+plot(sx, sy,
+    type='l', col='blue', ylim=c(0,1000), xlim=c(x_start, x_end),
+    xlab="Date", ylab="Node Count", axes=F)
+axis(2, las=1)
+axis(1, labels=months, at=hbreaks)
+
+