Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Probleme oder Fragen zum Lights-Out Add-In unter WHSv1 werden hier beantwortet
Antworten
muehlberger
Foren-Mitglied
Beiträge: 79
Registriert: 10. Dez 2009, 19:43

Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von muehlberger »

Hallo Leute,

nachdem ich hier schon einige Zeit mitlese und auch die verschiedenen Möglichkeiten kennengelernt habe, der aktuellen LightsOut-Version ein anderes Verhalten beizubringen möchte ich hier meinen Senf dazugeben.

Vielleicht als Einstieg meine Hardware-Konstellation: ich verwende einen WDTV HD MediaPlayer mit geänderter Firmware und Netzwerkkarte, um Filme vom WHS abzuspielen. Da die kleine Box aber ständig on ist (auch im Standby) und somit immer pingbar ist lassen sich die diversen Skripts zum Wachhalten des WHS nicht nutzen. Da ich aber den Server nicht permanent laufen haben möchte war die Situation immer unbefriedigend: entweder einen Windows Client einschalten um den Server wachzuhalten oder LightsOut deaktivieren und den Server manuell abdrehen oder nach 15 Minuten Film fluchen und zum Server stapfen.

Nunja, und dann überkam mich der Rappel und ich habe aus diversen Infos hier im Forum (u.a. Registry von LightsOut) eine für mich passende Lösung konstruiert: NetworkWatcherForLightsOut:

Es handelt sich dabei um einen Windows-Dienst, der den Netzwerktraffic überwachen kann. Überschreitet der Traffic einen einstellbaren Grenzwert für eine bestimmte Zeit nicht, so wird LightsOut via Registry mitgeteilt, was es zu tun hat. Im Grunde sollte das ganze auch dann funktionieren, wenn am Server Downloads, usw. laufen, da sowohl eingehender als auch ausgehender Traffic betrachtet wird (bei Verwendung des richtigen PerformanceCounters).

Den Dienst findet ihr anbei - für jene, die ihn probieren möchten. Der Source-Code steht, falls gewünscht, auch zur Verfügung. Ist in .NET geschrieben (VS 2010 Beta 2), nix kommentiert und benötigt .NET Framework 2.

Das File einfach in ein Verzeichnis kopieren (am besten

Code: Alles auswählen

c:\program files\NetWorkWatcherForLightsOut
) und via

Code: Alles auswählen

installutil networkwatcherforlightsout.exe
installieren.

Konfiguriert wird er in der Datei networkwatcherforlightsout.config - ist eine XML-Datei:

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="NetworkWatcherForLightsOut.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <NetworkWatcherForLightsOut.Properties.Settings>
            <setting name="[b]ThresholdValue[/b]" serializeAs="String">
                <value>8000</value>
            </setting>
            <setting name="[b]WaitTime[/b]" serializeAs="String">
                <value>1000</value>
            </setting>
            <setting name="[b]NetworkCard[/b]" serializeAs="String">
                <value>Intel[R] PRO_100 VE Network Connection</value>
            </setting>
            <setting name="[b]LightsOutAction[/b]" serializeAs="String">
                <value>1</value>
            </setting>
            <setting name="[b]Category[/b]" serializeAs="String">
                <value>Netzwerkschnittstelle</value>
            </setting>
            <setting name="[b]Counter[/b]" serializeAs="String">
                <value>Gesamtanzahl Bytes/s</value>
            </setting>
            <setting name="[b]ThresholdTimeSpan[/b]" serializeAs="String">
                <value>00:15:00</value>
            </setting>
        </NetworkWatcherForLightsOut.Properties.Settings>
    </applicationSettings>
</configuration>
Wichtig sind folgende Settings:
  • ThresholdTimeSpan: Zeitspanne, in der der Grenzwert nicht überschritten werden darf. Nach verstreichen dieser Zeitspanne wird die
  • LightsOutAction bei LightsOut in der Registry eingetragen.
  • Counter: Performance Counter, der verwendet wird. Im obigen Beispiel ersichtlich: mein WHS ist deutsch. Am einfachsten könnt ihr diesen Namen sowie den Namen der Category mittels permon.msc (Start | Ausführen) ermitteln.
  • Category: Performance-Counter-Kategorie. Beim englischen WHS heisst er glaube ich "Network Interface"
  • LightsOutAction: 0 ... keine Aktion, 2 ... Standby, usw. die restlichen Werte habe mal hier im Forum gefunden, hab' sie mir aber nicht gemerkt
  • NetworkCard: Name der Netzwerkkarte, um zu ermitteln siehe perfmon.msc
  • WaitTime: Polling-Interval in Millisekunden, in dem der Performance-Counter abgefragt wird.
  • ThresholdValue: Grenzwert (sollte KB/s sein), welcher nicht überschritten werden soll. Hier bitte experimentieren - habe mich mangels Zeit mit dem Wert bzw. dessen Einheit nicht genauer befasst.
Sodala, das wars. Wie gesagt, wen es interessiert der soll es ausprobieren. Falls es Fragen / Verbesserungswünsche gibt meldet euch einfach.

Und übrigens: das ist keine Konkurrenz zu LightsOut, denn das ist wirklich genial! Es ist nur eine kleine Erweiterung, die sich bei mir bewährt hat!

lg
muehlberger
Dateianhänge
NetworkWatcherForLightsOut.zip
enthält installutil, den Service und meine Config
(11.54 KiB) 141-mal heruntergeladen
WHS: HP x312, 4GB RAM, WHS 2011
HTPC: AsRock Core 100HT
Notebooks: Sony Vaio F13, Compaq nc6120
Router 1: DLink DIR-655
Router 2: SpeedTouch 585v6
steve0564
WHS-Experte
Beiträge: 1223
Registriert: 28. Okt 2008, 07:48

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von steve0564 »

Falls es Fragen / Verbesserungswünsche gibt meldet euch einfach.
Klingt schonmal sehr gut! Da ich aber kein Programmierer bin, lasse ich die Finger davon...
Anders gesagt, wäre eine benutzerfreundlichere Schnittstelle, was die Parametereingabe angeht, eine große Anregung von mir!!!!!

Vielleicht hat der Autor oder jemand anders Lust.......
LG
Steve
---------------------------------------------------------------------------------------------------------------
Scaleo 1900 E2220 mit 2 GB Ram; Speicher: 3,5 TB; 1x1TB FSCStoragebird/USB f. WHS-Sicherung
Router: FritzBox 7270
Giglan, Cat7
Joker
Foren-Mitglied
Beiträge: 101
Registriert: 21. Mai 2009, 12:56

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von Joker »

Ich teste es mal, bin zwar kein Programmierer, aber mit der Anleitung sollte es gehen... Habe schon andere Sachen hinbekommen... :-)

Rückmeldung folgt.
muehlberger
Foren-Mitglied
Beiträge: 79
Registriert: 10. Dez 2009, 19:43

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von muehlberger »

Soda, habe mir die erste Kritik zu Herzen genommen und ein Addin inkl. Setup gebastelt.

Die Werte, die letztlich wichtig sind, werden via UI gesetzt (Grenzwert & wie lange). Es werden alle Netzwerkkarten überwacht, der Takt ist 1 Sekunde.

lg
muehlberger
Dateianhänge
networkwatcherforlightsout.zip
(120.42 KiB) 170-mal heruntergeladen
settings.png
settings.png (45.25 KiB) 2865 mal betrachtet
WHS: HP x312, 4GB RAM, WHS 2011
HTPC: AsRock Core 100HT
Notebooks: Sony Vaio F13, Compaq nc6120
Router 1: DLink DIR-655
Router 2: SpeedTouch 585v6
Headhunter
Foren-Einsteiger
Beiträge: 5
Registriert: 18. Dez 2009, 04:52

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von Headhunter »

Hi, nette Idee - dieses PlugIn, die Problematik kenne ich nämlich auch. Das AddIn wäre z.B. auch nützlich, wenn man einen MP3-Streaming-Dienst (z.B. Orb) auf dem WHS-Server laufen lassen würde. Durch den Traffic-Check würde ein vorzeitiges Abschalten des Servers dann verhindert werden.

Wenn ich die Vorgehensweise des AddIns richtig verstanden habe, funktioniert das AddIn jetzt so, dass der LightsOut-Status von Deinem AddIn standardmäßig auf "None" gestellt wird und erst dann auf (z.B.) "Standby" gesetzt wird, wenn 15 Minuten lang der Traffic nicht über eine bestimmte Grenze gegangen ist. Korrekt? So werden also "hinten herum" die Abschaltregeln von LightsOut umgangen, da es ja sicherlich keine Möglichkeit gibt, stattdessen den LightsOut-Timer direkt zurückzusetzen (was ja der offensichtliche Weg wäre). Nett! Damit hat also ein hoher Netzwerk-Traffic immer Vorrang vor den eigentlichen LightsOut-Regeln. Erst wenn 15 Minuten lang "Ruhe auf der Leitung herrschte", darf LightsOut seine Regeln anwenden und ggf. abschalten. Sonderregeln für Backup-Zeiten und eingeschaltete Clients werden dadurch nicht beeinflusst (weil es ja immer "Eingeschaltet"-Regeln sind). Genau das, was ich gesucht habe! Wäre schön, wenn so etwas in die nächste LightsOut-Version einfließen könnte (natürlich nicht, ohne muehlberger dankend zu erwähnen :-) )

Ich werde das AddIn jetzt jedenfalls erstmal testen - die Idee ist schon mal gut. ;-)

Jetzt fehlt in LightsOut nur noch eine Liste von Prozessen, die einen Shutdown verhindern (z.B. wenn auf dem Server der Virenscanner oder ein Backup der Systemplatte läuft), aber vielleicht kommt das ja noch.

PS: Leider verursacht das AddIn bei mir in der jetzigen Version, dass die WHS-Konsole beim Start abstürzt. Mithilfe des Stacktrace im EventLog und Reflector konnte ich feststellen, dass der Registry-Schlüssel, in dem das AddIn seine Settings speichert, noch fehlt. Ohne den schmiert das AddIn ab. Sobald man ihn manuell erstellt, läuft alles wunderbar. Der Schlüssel lautet:

HKEY_LOCAL_MACHINE\SOFTWARE\RedEgg\NetworkWatcherForLightsOut

(Zur Info: Der Aufruf von Registry.LocalMachine.OpenSubKey() in NetworkWatcherForLightsOut.Common.Settings.Load() gibt null zurück, wenn der Schlüssel nicht existiert - http://msdn.microsoft.com/en-us/library/xthy8s8d.aspx - besser CreateSubKey() verwenden, dort wird der Schlüssel erstellt oder zum Schreiben geöffnet, wenn er schon existiert - http://msdn.microsoft.com/en-us/library/ad51f2dx.aspx)
Joker
Foren-Mitglied
Beiträge: 101
Registriert: 21. Mai 2009, 12:56

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von Joker »

So, nach einigen Tests kann ich sagen, dass die 1. Version (ohne Add-In-Oberfläche) gut funktioniert. Ich habe lediglich den Namen der Netzwerkkomponente eintragen müssen, war aber dank der guten Beschribung kein Problem, das alles hinzubekommen. wer schon mal in einer Config und mit dem Editor gearbeitet hat, bekommt das locker hin! Klasse Arbeit!!
muehlberger
Foren-Mitglied
Beiträge: 79
Registriert: 10. Dez 2009, 19:43

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von muehlberger »

Danke für die ersten Tests eurerseits.

@Headhunter: werde deine Anregungen bzgl. Registry umsetzen; bei der Gelegenheit werde ich auch gleich noch meinen Code refactoren - wenn da schon so genau hingesehen wird ... :D

@Joker: die Version ohne Addin hat im Grunde 2 wesentliche Änderungen: a) die Settings werden in der Registry und nicht mehr im Config-File gespeichert und b) es sind weniger Settings nötig, da zB automatisch alle vorhandenen Netzwerkkarten für die Berechnung summiert werden.

Ich muss sehen, wie ich zeitlich dazukomme - vermutlich gibt's dann Anfang 2010 ein Release 1.0.0.1.

Merry X-Mas,
muehlberger
WHS: HP x312, 4GB RAM, WHS 2011
HTPC: AsRock Core 100HT
Notebooks: Sony Vaio F13, Compaq nc6120
Router 1: DLink DIR-655
Router 2: SpeedTouch 585v6
muehlberger
Foren-Mitglied
Beiträge: 79
Registriert: 10. Dez 2009, 19:43

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von muehlberger »

Zur Info: habe soeben gelesen dass es von LightsOut eine neue Version gibt, die u.a. genau dieselbe Überwachungsmöglichkeit bietet ...

Macht nix, die Entwicklung hat trotzdem Spass gemacht :)

muehlberger
WHS: HP x312, 4GB RAM, WHS 2011
HTPC: AsRock Core 100HT
Notebooks: Sony Vaio F13, Compaq nc6120
Router 1: DLink DIR-655
Router 2: SpeedTouch 585v6
Headhunter
Foren-Einsteiger
Beiträge: 5
Registriert: 18. Dez 2009, 04:52

Re: Erweiterung zu LightsOut: NetworkWatcherForLightsOut

Beitrag von Headhunter »

Trotzdem vielen Dank für Deine Arbeit! :)
Antworten