Jul.30

Systeem- en softwaremonitoring met Visio 2007- 3 van 4 – De monitoring software

In de voorgaande post heb ik proberen uit te leggen hoe data kan worden gekoppeld aan Visio diagrammen. Om dat te kunnen doen is het natuurlijk van belang zinnige monitoringgegevens te hebben. In deze post wil ik uitleggen hoe je met behulp van ActiveXperts Networkmonitor (nee, ik heb geen aandelen) gegevens kunt verzamelen in een MS SQL-Server database en hoe je deze kunt gebruiken voor de Visiodiagrammen. Het is zoals ik in de eerste post in de reeks al aangaf ook mogelijk om zelf een tool te maken om meetgegevens op te slaan of een andere tool te gebruiken.

Ik ga er vanuit dat je ActiveXperts Networkmonitor is geinstalleerd en dat je een aantal checks (ping, cpu, disk space etc.. hebt geconfigureerd.

Open ActiveXperts Networkmonitor en zorg dat er via het “Tools”-menu > Options > Logging Tab een SQL Server database is ingesteld. Meer informatie daarover is hier te vinden. Zet vervolgens de logging aan en selecteer “Log all monitoring activities”. Dit betekent dat alle monitoring acties worden gelogd.


Omdat het aantal records dat wordt weggeschreven door het loggen van alle monitoring activiteiten flink kan oplopen is het aan te raden een job in te regelen die regelmatig de database schoont. De query zou er zo uit kunnen zien:

DELETE FROM Events WHERE TimeSecs <= (SELECT MAX(TimeSecs)-(60*60*2) FROM Events)

Om uiteindelijk tot meetgegevens te komen die binnen Visio gebruikt kunnen worden moet er een view binnen SQL Server worden aangemaakt. Deze ziet kan er zo uit zien:

SELECT
CurrentStatus.CheckID,
CurrentStatus.EventID,
Events_1.ID,
Events_1.TimeSecs,
Events_1.TimeString,
Events_1.CheckID AS Expr1,
Events_1.CheckName,
Events_1.CheckTypeID,
Events_1.ResultID,
Events_1.DataVal,
Events_1.Explanation,
dbo.Checks.ID AS Expr2,
dbo.Checks.Name,
CASE WHEN ISNUMERIC(Events_1.DataVal) =1 THEN CONVERT(FLOAT, Events_1.DataVal) ELSE 0 END AS DataValFloat
FROM (SELECT
CheckID,
MAX(ID) AS EventID
FROM dbo.Events WITH (NOLOCK)
GROUP BY CheckID) AS CurrentStatus
LEFT OUTER JOIN dbo.Events AS Events_1 WITH (NOLOCK) ON Events_1.ID = CurrentStatus.EventID
LEFT OUTER JOIN dbo.Checks WITH (NOLOCK) ON dbo.Checks.ID = CurrentStatus.CheckID

Bovenstaande query zorgt dat uit de logginggegevens de laatste status van elke check wordt opgehaald. Met deze resultaten kunnen Visiodiagrammen worden opgebouwd zoals beschreven in de vorige post. Er zit hier en daar wat conversies tussen die het makkelijk maken met de meetdata om te gaan. Probeer eens aan de hand van de voorgaande post gebruik te maken van deze data.

In de volgende post, de C# applicatie die data van Visiodiagrammen ververst en de diagrammen exporteert naar html (en .gif bestanden).

Deel dit Verhaal:
  • facebook
  • twitter
  • gplus

Over Ton Snoei

Een enthousiaste ontwikkelaar in de allerbreedste zin van het woord.

Het aansturen maar vooral coachen van mensen geeft me veel plezier en een leuke uitdaging. Ik houdt me graag bezig met het bouwen van software maar ook met alle anderen dingen die komen kijken bij het vak dat IT heet.

Met als achtergrond ontwikkelaar heb ik veel ervaring met C# .NET en alles wat daarbij komt kijken. Deze kennis komt nog regelmatig goed van pas. Mijn liefde voor ontwikkeling van software is nooit verdwenen en heb mij daarom in het afgelopen jaar meer verdiept in Java, Android, iOS/iPhone/iPad (Monotouch/Xamarin), PHP en Unity 3D development. Ik noem dat altijd maar: "Lego-spelen voor grote mensen" ;-)

Kortom van de grote lijnen naar projecten tot hands-on problem solven.

Laat een reactie achter

Comment