Aug.03

Systeem- en softwaremonitoring met Visio 2007- 4 van 4 – De Software

In de vorige posts heb ik proberen uit te leggen op welke manier data kan worden gekoppeld aan Visio diagrammen. In deze laatste post over dit onderwerp wil ik uitleggen hoe een C# tool kan worden geschreven die geautomatiseerd de gekoppelde data van het Visiodiagram ververst en wegschrijft als webpagina.

De stappen

  1. Open Visual Studio en creeer een nieuw project.
  2. Klik met de rechtermuisknop in de Solution Explorer op References en kies Add Reference.
  3. Voeg een referentie toe naar Microsoft.Office.Interop.Visio en Microsoft.Office.Interop.Visio.SaveAsWeb.

    De Code
    De complete code ziet er alsvolgt uit:

    Wat doet de code
    Om te zorgen dat we een ‘onzichtbare’ versie van Visio draaien maken we gebruik van de InvisibleAppClass:

    InvisibleAppClass VisioApplication = new
    InvisibleAppClass();

    Helemaal onzichtbaar is Visio niet maar daar kom ik zo op terug.

    VisWebPageSettings VisioSaveAsWebSettings = (VisWebPageSettings)VisioSaveAsWebObject.WebPageSettings;

    VisioSaveAsWebSettings.QuietMode = int.MaxValue;

    VisioSaveAsWebSettings.SilentMode = int.MaxValue;

    VisioSaveAsWebSettings.TargetPath = @”c:tempvisiodiagram.html”;

    Met de VisWebPageSettings class kunnen we een export voor elkaar krijgen naar html pagina’s en gif images.

    Document VisioDocument = VisioApplication.Documents.Open(@”c:tempvisiodiagram.vsd”);

    Het openen van het betreffende VisioDiagram.

    //Refresh Data

    foreach (DataRecordset DataRecordset in VisioDocument.DataRecordsets)

    {

    DataRecordset.DataConnection.ConnectionString += string.Format(“;password={0}”, DataSourcePassword);

    DataRecordset.Refresh();

    }

    Met bovenstaande code worden alle gekoppelde recordsets doorgelopen in het diagram en wordt de data ververst. De constructie met het DataSourcePassword is bruikbaar in het geval dat er een wachtwoord noodzakelijk is in de connectionstring van de datasource. Deze wachtwoorden worden niet in het Visio diagram opgeslagen en zullen dus per connectiestring separaat moeten worden opgegeven. In dit geval ben ik er vanuit gegaan dat alle connectiestrings hetzelfde wachtwoord hebben.

    VisioSaveAsWebObject.AttachToVisioDoc(VisioDocument);

    //Save as webpages

    VisioSaveAsWebObject.CreatePages();

    Deze code zorgt daadwerkelijk voor het creeeren van de html pagina’s.

    VisioDocument.Save();

    VisioDocument.Close();

    De save methode wordt aangeroepen omdat, ondanks het feit dat we hier de InvisibleAppClass gebruiken, er wordt gevraagd of we het betreffende document op willen slaan als we direct de VisioDocument.Close() methode aanroepen.

    Samenvattend
    Met deze code kun je aan de slag om een geautomatiseerd proces te schrijven wat zorgdraagt voor het automatisch hergeneren van diagrammen met een bepaalde tijdsinterval naar html. Je kunt deze diagrammen tonen in een browser en automatisch laten verversen zodat je continue zicht hebt op de status van de systemen die gemonitord moeten worden. Overigens wil Internet Explorer 6 of 7 er dan na een uur of 12 de brui aan geven (oorzaak: Slecht memorymanagement). Je kunt natuurlijk ook een tool schrijven die de door Visio geexpoteerde gif images toont.

    Kanttekening
    Wat mij opviel is dat de namen van de klassen in de Visio libraries bijzonder slecht gekozen zijn. Een class met de naam Document of InvisibileAppClass getuigt niet echt van vindingrijkheid bij het Microsoft Visio Development team.

    Conclusie
    Dit is het laatste blog artikel in de serie. Met de aangedragen oplossing zou je op een simpele automatische manier je systemen moeten kunnen monitoren. Het is vooral leuke materie omdat er bijzondere visuele resultaten kunnen worden behaald. Succes!

Jul.27

Systeem- en softwaremonitoring met Visio 2007 – 2 van 4

Dit is het vervolg op mijn vorige post over monitoren van systeem met behulp van Visio diagrams. In deze post zal ik uitleggen hoe data gekoppeld kan worden aan Visio shapes waardoor de visualisatie van de shape kan worden beinvloed.

Stap 1 – Data Downloaden
Download dit Excel bestand. Hierin bevinden zich voorbeeld meetgegevens. Aan de data worden niet veel bijzondere eisen gesteld behalve dat elke regel met een meetgegeven een unieke id bevat. De te downloaden meetgegevens bevatten per regel een Id, een meetwaarde, een status (0=OK, 1=Warning, 2=Error, 3=Niet meetbaar), een omschrijving en een timestamp

Stap 2 – Diagram aanmaken
Start Visio Professional 2007 en selecteer File > New > Network > Detailed Network Diagram (Metric). Je hebt nu een diagram met aan de linkerkant een keuze uit diverse networkshapes zoals servers etc…

Stap 3 – Excel data koppelen
We gaan nu de Excelsheet (het had ook SQL data kunnen zijn) koppelen aan het nieuwe diagram. Kies in het menu Data > Link Data To Shapes… Selecteer Microsoft Excel Workbook kies “Browse…” en selecteer het zojuist gedownloade excel sheet. Klik op “Next” en kies “Sheet1$”. Klik op 2x “Next” en vink “Id” aan als unique identifier kolom. Klik “Next” en dan “Finish”. Voila, data is gekoppeld aan het diagram.

Stap 4 – Fields gebruiken
Plaats nu linksboven de text “Systeemstatus” en zet de fontsize naar 20 en bold. Om er duidelijk te maken hoe recent de gegevens van het diagram zijn kunnen we datum naast deze kop plaatsen.

Zoals je misschien hebt gezien vind je onderin de Visio applicatie een lijst met records uit het Excel sheet. Mocht je die niet terug kunnen vinden selecteer dan in het View menu “External Data”.


Selecteer een van de records en sleep deze op de zojuist gecreeerde tekst. Je zult nu mogelijk naast de tekst een zogenaamd “Data Graphic” zien verschijnen


en aan de rechterkant zal onderstaand Data Graphic venster worden geopend. Zo niet kies dan in het Data menu “Display Data On Shapes”. Selecteer de tekst en klik in het Data Graphic-venster op “None”.


Nu gaan we de datum toevoegen. Zet de cursor achter de tekst “Systeemstatus “. Kies in het menu Insert > Field en dan als Category:Shape Data en Field Name: Timestamp.


We hebben nu fielddata gekoppeld.

Stap 5 – Shapes gebruiken
Selecteer nu uit de shapegroep bij “Netwerk and Pheripherals” de server shape. Sleep deze op het diagram. Sleep nu een het ping record van het Peregrijn system uit het external data venster op deze shape. We gaan nu een nieuw Data Graphic maken.

Klik linksboven op “New Data Graphic”


Klik in het nieuw geopende venster op New Item > Color By Value


Selecteer als Data Field “Status”. Op basis van de waardes van dit veld kan een kleur worden gegeven aan deze shape. Voeg 3 kleuren toe zoals in onderstaande screenshot te zien is.

Klik op OK en nogmaals in het andere venster op OK.

Klik daarna op “Yes” om aan te geven dat deze nieuwe Data Graphic moet worden toegepast op de geselecteerde shape.


Teken nu een rechthoek onder de zojuiste geplaatste shape.

Dubbelklik er op en vul de tekst “CPU” in.

Sleep het CPU Usage record van Peregrijn op deze rechthoek. De rechthoek zal nu automatisch dezelfde data graphic toegekend krijgen als de server shape.

Maak een kopie van de data graphic door op de datagraphic aan de rechterkant het menu open te klikken en “Duplicate” te selecteren.

Klik op de gedupliceerde data graphic om deze toe te kennen aan de rechthoek.

Klik in het menu (het pijltje aan de rechterkant) van de gedupliceerde data graphic op “Edit Data Graphic…”. Klik op New Item > Data Bar.

Selecteer als “Data Field”: “Value”.

Selecteer als “Callout”: “Speedometer”.

Zet “Label Position” en “Value Position” op “Not Shown”. Klik op OK.


Dubbelklik op de tekst van de rechthoek en zet de cursor achter “CPU “.

Kies in het menu Insert > Field en dan Category Shape Data en Field Name “Value”.

Druk op OK en voeg een procent teken toe.

We zijn klaar. Onderstaand het resultaat.


Niets houd je nu meer tegen om een fantastisch diagram in elkaar te knutselen. Je kunt elke willekeurige shape en tekst gebruiken om bovengenoemde acties op toe te passen.

Volgende post zal ik uitleggen hoe ActiveXperts Networkmonitor kan worden ingeregeld om de meetdata toegankelijk te maken voor een Visiodiagram als dit.

Jul.23

Systeem- en softwaremonitoring met Visio 2007- 1 van 4

De utopie van elke systeembeheerder, een videowall met een overzicht van alle systemen. Uitgebreide informatie over de status van deze systemen bijv pingtijden, schijfruimte, bandbreedte, systemperformance, geheugengebruik etc… Kortom, in zijn wildste droom zou het eerste diagrammetje er zo uit kunnen zien:Systeem monitoring Visio diagram.

Dat ziet er leuk uit, toch? Bovendien is dit ontzettend functioneel, in een oogopslag is te zien hoe het er met de systemen en verbindingen voorstaat. Leuke bijkomstigheid is dat je er nog indruk mee kunt maken ook! Ingewikkeld? Tja, het is wel wat werk maar nee, je moet alleen weten hoe je dit voor elkaar kunt krijgen en dat ga ik proberen uit te leggen in deze en de komende 3 posts. Voor ik deze oplossing vond ben ik minstens een jaar op zoek geweest en die tijd kan jij nu besparen!

Wat heb je nodig?

  • Microsoft Visio Professional 2007
  • Database met monitoringgegevens.
  • Kleine C# applicatie voor het bijwerken van de diagrammen naar de meest recente monitorgegevens.

Microsoft Visio Professional
Met behulp van Visio Professional 2007 kunnen de benodigde diagrammen worden gemaakt. De ‘Professional’ variant van deze software bevat de mogelijkheid data te koppelen aan shapes en data.

Database met monitoringgegevens
Deze database bevat data met monitoringgegevens die worden verzameld door een daarvoor geschikte tool. Een voorbeeld van een goede monitoringtool is ActiveXperts Networkmonitor. Deze heeft de mogelijkheid meetgegevens zoals pingtijden, schijfruimte, systemperformance, bandwidthusage weg te schrijven naar een SQL Server of MS Access Database. Je kunt natuurlijk ook zelf een applicatiemaken die dit soort gegevens verzamelt en in een database wegschrijft.

Kleine C# applicatie
Een kleine C# applicatie die zorgdraagt voor het verversen van de monitoringdata in de Visiodiagrammen en de export naar html.

  • In de volgende post zal ik uitleggen hoe de koppeling van data aan Visio shapes gedaan kan worden.
  • In de 3e post zal ik uitleggen hoe met ActiveXperts Networkmonitor data kan worden gekoppeld aan Visiodiagrammen.
  • In de 4e post zal ik uitleggen hoe het verversen van de Visiodiagrammen op basis van de meest recente verzamelde data kan worden uitgevoerd.