Overview

What you get

A non intrusive, permanent view of the important things.

You get to select what you see and what is filtered out.

Architecture

A munin2smartphone setup consists of 3 bricks:

a Munin supervision server.

We add a trigger and a bit of configuration to your stock munin installation, so that it pushes the state of all known checks to the next brick.

a munin2smartphone daemon.

The daemon is receiving authenticated data and generating static web pages.

a frontend to view the web pages.

Whether a web browser or an android widget.

Information flow

digraph structs {
	node [shape=box];
	infra [label=<
	<TABLE BORDER="0" CELLSPACING="10" CELLBORDER="1" PORT="all">
		<TR><TD colspan="3" BORDER="0"><B>Infrastructure</B></TD></TR>
		<TR>
			<TD>Server 1</TD>
			<TD>Server …</TD>
			<TD>Server n</TD>
		</TR>
	</TABLE>
	>];

	munin [label=<
	<TABLE BORDER="0" CELLSPACING="10" CELLBORDER="1">
		<TR><TD colspan="3" BORDER="0"><B>Munin</B></TD></TR>
		<TR>
			<TD PORT="update">munin-update</TD>
			<TD PORT="rrd">rrd</TD>
			<TD PORT="alert">munin-limits</TD>
		</TR>
	</TABLE>
	>];

	scheduler [shape=circle,label=<scheduler<BR/>(cron…)>];

	munin2smartphone [label=<
	<TABLE BORDER="0" CELLSPACING="10" CELLBORDER="1">
		<TR><TD colspan="3" BORDER="0"><B>munin2smartphone host</B></TD></TR>
		<TR>
			<TD PORT="munin2smartphone">munin2smartphone</TD>
			<TD PORT="html">static html pages</TD>
		</TR>
	</TABLE>
	>];

	enduser [label=<
	<TABLE BORDER="0" CELLSPACING="10" CELLBORDER="1" PORT="all">
		<TR><TD colspan="3" BORDER="0"><B>End user device</B></TD></TR>
		<TR>
			<TD PORT="android">Android web widget</TD>
			<TD PORT="browser">Web browser</TD>
		</TR>
	</TABLE>
	>];


	curl [shape=cds];
	statichttp [shape=cds,label="apache/nginx/other"];

	infra:all -> munin:update:n [xlabel=<<I>Run and fetch</I> <FONT FACE="courrier">&lt;Checks&gt;</FONT>>];
	munin:update:s -> munin:rrd:sw [xlabel=<<I>fill database</I>>];
	munin:alert:sw -> munin:rrd:se [label=<<I>&nbsp;&nbsp;&nbsp;query all</I>>];
	scheduler:se -> munin:alert:n [xlabel=<<I>Call command</I> "Push all to special contact">];
	munin:alert -> curl;
	curl -> munin2smartphone:munin2smartphone:w [
		label=<
			<I>POST</I> <FONT FACE="courrier">&lt;Checks in conc. JSON&gt;</FONT>
			>
		];
	munin2smartphone:munin2smartphone:s -> munin2smartphone:html:s [label=<<I>generates</I>>];
	enduser:all -> statichttp -> munin2smartphone:html:e;
}