0
24. Juni 2016

Laufzeitüberwachung von Virtual Machines zur Kostenoptimierung

Für Virtual Machines fallen nur geringe Kosten an, aber dennoch lohnt es sich immer, die Kosten zu optimieren. Über die Operations Management Suite und einen Eventlogeintrag mittels Scheduled Tasks kann man sich benachrichtigen lassen, wenn die Virtual Machine länger als der definierte Zeitraum läuft.


Hintergrund

Wir haben für unseren Vertrieb zwei virtuelle Maschinen in Azure bereitgestellt, die zu Demozwecken verwendet werden. Darauf laufen SharePoint und unsere Lösung Data One 4 Quality. Die VMs sind normalerweise aus und verursachen somit nur sehr geringe Kosten. Unser Vertrieb kann die VMs selbst starten, wenn sie benötigt werden. Dafür haben wir über RBAC die entsprechenden Rechte zugewiesen. Dies hat mein Kollege Dimitri im Blogpost beschrieben. Für das zeitnahe Herunterfahren sind die Vertriebsmitarbeiter selbst verantwortlich. Über Azure Automation werden die VMs abends um 18 Uhr automatisch heruntergefahren. Soweit so gut.

Nun hatten wir in den letzten Monaten aber den Fall, dass die VMs morgens hochgefahren aber nicht mehr heruntergefahren wurden. Es ist nachvollziehbar, dass dies schnell vergessen werden kann. Also habe ich mir Gedanken gemacht, wie wir die Kosten besser kontrollieren können. Wir wollten die VMs auf keinen Fall einfach nach z.B. zwei Stunden hart herunterfahren. In einem längeren Vertriebstermin wäre es schlecht, wenn die Demo plötzlich weg ist. Ziel war es dann, einen Alert per Mail zu generieren, sobald eine der VMs länger als zweieinhalb Stunden läuft.

Eventlogeintrag in der Virtual Machine

 Eine für mich einfache und schnell umsetzbare Lösung war, in den VMs nach dem Systemstart einen Eventlog-Eintrag zu enerieren und über OMS per Mail zu alarmieren. Dann wollen wir mal.

Den Eventlogeintrag in der VM generiere ich mit einen Scheduled Tasks. Diese werden oft unterschätzt und sind in vielen Szenarien ein sehr nützliches Hilfsmittel. Mit ihnen lassen sich Programme und Scripte ausführen, egal ob zu bestimmten Zeiten, wiederholend oder auch beim Systemstart. Ebenso lässt sich die Ausführung beim Systemstart verzögern. Genau diese Möglichkeiten nutze ich. Der Scheduled Task wird beim Systemstart, verzögert um zweieinhalb Stunden, ausgeführt und danach alle dreißig Minuten.

Der Scheduled Task lässt sich mit folgenden Commandlines anlegen:

  schtasks /create /tn "DO-MonitorSystemRunTime" /RU SYSTEM /RL HIGHEST /tr "\"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe\" -command \"Start-Sleep -s 5;eventcreate /SO \\\"DO-Alert\\\" /ID 75 /L Application /T Error /D \\\"VM is running more than 2,5 hours\\\"\"" /sc onstart /Delay 0150:00 

 

 schtasks /change /tn "DO-MonitorSystemRunTime" /RI 0030:00 

Die Parameter /tn, /SO, /ID und /D sind frei wählbar.

Aufnahme der VM in OMS

So, nun muss die VM in OMS aufgenommen werden. Den Connect einer Azure-VM hat mein Kollege Peter in seinem Blogpost [Operations Management Suite] Connect einer Azure VM zu OMS über das Azure Portal beschrieben. Natürlich kann man den Agent auch direkt in der VM installieren. Dies geschieht über den Downloadlink im OMS-Portal. Dort sind auch die Workspace ID und der Workspace Key zu finden.

 

Zuletzt muss in OMS noch der Alert generiert werden. Damit dies funktioniert, müssen folgende Voraussetzungen im OMS-Workspace geschaffen werden:

Die Solution „Alert Management“ muss hinzugefügt werden:

Es muss unter Settings/Data mindestens das Windows-Eventlog „Application“ hinzugefügt sein:

Mindestens Error Events müssen gesammelt werden:

Nun erzeugt man den Eventlog Eintrag, indem man den oben erstellten Scheduled Task in der VM einmal ausführt. Dann sucht man diesen Alert im OMS Portal unter Log Search.

Mit folgender Query sucht man den Alert von 2 Computern:

 Type=Event EventLevelName=error EventID=75 (Computer="CLI1.contoso.de" OR Computer="SRV-1.contoso.de") Source="DO-Alert" 

Mit folgender Query sucht man den Alert über alle Computer:

 Type=Event (EventID=75) Source="DO-Alert" EventLevelName=error 

Im Ergebnisfenster der Query erzeugt man dann den Alert:

Die Einstellungen für den Alert können nach den eigenen Bedürfnissen angepasst werden.

Ab sofort erhält man dann die Alerts und die Kosten können damit reduziert werden.

OMS rocks!

Viele Grüße,

Andreas

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.