Aangezien de Windows RDS service een dienst is die altijd beschikbaar dient te zijn is het monitoren hiervan belangrijk om verstoringen in deze service te kunnen detecteren en alerts te versturen naar systeembeheer. Het simpelweg monitoren van de Windows Service is niet voldoende, we willen weten of gebruikers kunnen inloggen zonder problemen en vervolgens de RemoteApps kunnen zien. Daar is de Zabbix Web Monitoring uitstekend geschikt voor…
We gaan het volgende scenario bouwen:
- Bezoek de RDWeb login-pagina en vind het woord ‘Gebruikersnaam’.
- Login als gebruiker op de RDWeb site.
- Vind het woord ‘Notepad’ op de landingspagina van de ingelogde gebruiker.
- Logoff van de RDWeb site.
Als al deze stappen succesvol zijn, weten we dat de RDS service werkt.
Web Scenario
Voordat we de stappen maken, dient er een host toegevoegd te worden waarop de de web monitoring plaatsen. Via Configuration->Hosts wordt de host ‘RDS-Digital-Info‘ toegevoegd. Deze heeft extern geen Zabbix Agent draaien dus maak ik een fictieve interface aangezien deze verplicht is. Het ziet er dan zo uit:
Na ‘Save‘ verschijnt deze nieuwe host in het overzicht en kunnen m.b.v. de optie ‘Web‘ de monitoring gaan toevoegen.
Klik op ‘Web‘ om scenario’s te raadplegen. Met de knop rechtsboven, ‘create scenario‘ maken we een nieuwe en we noemen deze ‘Check availability RDS DigitalInfo’. Een Application hebben we nog niet dus die laten we leeg, bij ‘New application‘ vullen we een nieuwe naam in bv. ‘RDS Check DigitalInfo‘ en in het veld ‘Variables‘ voegen we twee macro’s toe die de login voor de RDS service bevatten. Dat is de gebruikersnaam en het wachtwoord van de Windows gebruiker. Het formaat is:
{user}=Gebruikersnaam {password}=Wachtwoord
en dat ziet er dan zo uit:
Via het tabblad ‘Steps‘ gaan we de bovenstaande 4 stappen toevoegen. Klik op ‘Add‘ en noem de eerste stap ‘First Page’. Voer de URL in van de RDS server, in ons geval is dat ‘https://rds.digitalinfo.nl/RDWeb/Pages/en-US/login.aspx‘,
We laten Zabbix nu controleren of de tekst ‘Gebruikersnaam’ op deze pagina staat. Dit is dan de tekst bij ‘Required string‘ en de ‘Required status code‘ wordt ‘200’ hetgeen aangeeft dat het resultaat OK is. Ziet er zo uit:
De tweede stap wordt gemaakt met ‘Add‘ en deze bevat het inloggen zelf. Geef het een Name, bv. ‘Logging in’. We nemen vervolgens de eerder gemaakt macro’s mee als POST en de ‘status code‘ zal bij een succesvolle login wederom 200 zijn. De termen DomainUserName, UserPass en btnSignIn zijn de id’s van de velden in het login-scherm van RDS. Dit ziet er dan zo uit:
Eenmaal ingelogd worden normaal gesproken de RemoteApps getoond en één daarvan is ‘Notepad’.
Op deze term kunnen we dus gaan zoeken zodat we zeker weten dat de login gelukt is. Voeg met ‘Add‘ de derde stap toe, noem deze bv. ‘Logged in check’ en als ‘Required String’ voegen we ‘Notepad’ toe. De ‘Required status code‘ moet weer 200 zijn:
De laatste stap is het uitloggen van de RDWeb site zodat er geen sessies achterblijven telkens als we monitoren. De URL is de logoff.aspx pagina en de ‘Required status code‘ moet weer 200 zijn.
Klik op Save om de Scenario met de 4 stappen op te slaan.
In Zabbix, via Monitoring -> Web -> ‘Check availability RDS DigitalInfo’ kunnen we na enige tijd het resultaat in een Grafiek bekijken:
Trigger
Om nu een melding te ontvangen zodra de RDS service niet meer bereikbaar is, dient er een trigger aangemaakt te worden. Dit doen we via ‘Configuration -> Hosts -> Triggers‘. Klik vervolgens rechtsboven op ‘Create trigger‘.
We noemen de trigger ‘RDS Digital Hifi’ en als Expression gebruiken we:
{RDWeb Server:web.test.fail[Check availability RDS DigitalInfo].last(0)}#0
Deze kan uit de mogelijkheden gekozen m.b.v. de Add button naast het Expression veld en vervolgens in de popup kiezen voor ‘Select‘. De optie is dan ‘Failed step of scenario “Check availability RDS DigitalInfo”‘. Voor de ‘Function‘ gebruiken we ‘Last (most recent) T value is NOT N‘.
Klik vervolgens op ‘Insert’ om de expression in de trigger te plaatsen. De ‘Severity‘ zetten we op ‘High’.
Enabled aan en Save… Nu zal in het geval van een verstoring de alert actief worden indien daar een ‘Configuration -> Action’ voor gemaakt is.