Following up on my work with the Koji Icinga/Nagios based monitoring system for our Fedora ARM machines: A screenshot of how it looks along with a GM script that helped to make it look like that. The Perl script I made in an earlier post checks for some of the following errors that could cause a Koji builder to fail. And on an semi-related note, if you’d like to follow our build progress, I’m currently testing a Twitter script posting here: http://twitter.com/fedoraarmstats
- Any non-rw mount points
- Permissions and sizes for directories: [/, /var, /tmp, /var/{lib,cache}/mock]
- Running kojid systemd/systemctl cgroup process numbers, commands
- Koji config file, cert date, system time checks
- Koji host, enabled, ready, not-ready+tasks, update-time, task-times
// ==UserScript==
// @name icinga
// @namespace icinga-dev
// @include http://hongkong.proximity.on.ca/icinga/cgi-bin/status.cgi?host=all*
// @version 1
// ==/UserScript==
var cnmatch = false, globflag = false;
var tablelist = document.getElementsByTagName("table");
var bodylist = [], rowlist = [], collist = [];
var regxobjc = new RegExp("Koji Stat", "g");
for (var tableitem in tablelist)
{
try { cnmatch = tablelist[tableitem].className.match(/^.*status.*$/); }
catch(erro) { cnmatch = false; }
if (cnmatch)
{
bodylist = tablelist[tableitem].childNodes;
for (var bodyitem in bodylist)
{
try { cnmatch = (bodylist[bodyitem].nodeName.toLowerCase() == "tbody"); }
catch(erro) { cnmatch = false; }
if (cnmatch)
{
var lastclas = "", lastvalu = "";
rowlist = bodylist[bodyitem].childNodes;
for (var rowitem in rowlist)
{
var rowflag = true;
var colnumb = 0, colobjc = null;
try { cnmatch = (rowlist[rowitem].nodeName.toLowerCase() == "tr"); }
catch(erro) { cnmatch = false; }
if (cnmatch)
{
collist = rowlist[rowitem].childNodes;
for (var colitem in collist)
{
try { cnmatch = (collist[colitem].nodeName.toLowerCase() == "td"); }
catch(erro) { cnmatch = false; }
if (cnmatch)
{
if (colnumb == 0)
{
if (collist[colitem].innerHTML != "")
{
lastvalu = collist[colitem].innerHTML;
}
else
{
colobjc = collist[colitem];
}
}
if (colnumb == 1)
{
if (!collist[colitem].innerHTML.match(regxobjc))
{
rowflag = false;
}
}
lastclas = collist[colitem].className;
++colnumb;
}
}
if ((colobjc != null) && (colnumb > 3))
{
lastvalu = lastvalu.replace(/class=['"]status[^'"]+['"]/g, lastclas);
colobjc.innerHTML = lastvalu;
colobjc.className = lastclas;
}
}
if ((rowflag == false) || ((0 < colnumb) && (colnumb < 4)))
{
try { rowlist[rowitem].style.display = "none"; }
catch(erro) { cnmatch = false; }
}
}
}
}
}
}
