Wie installiere, konfiguriere und pflege ich SNMP remote?

7

Ich möchte die SNMP- und SNMP WMI Provider-Dienste unter Windows Server 2008 R2 remote installieren, bestimmte Optionen für die Registerkarten Agent, Traps und Sicherheit konfigurieren und dann sicherstellen, dass diese Dienste und Einstellungen nicht entfernt oder deaktiviert werden. Dieses Ziel wird durch den Wunsch ausgelöst, den Serverzustand mit Zenoss aus der Ferne zu überwachen.

Durch meine Online-Suche habe ich das Gefühl, dass dies mit Powershell erreicht und dann durch Gruppenrichtlinien herausgeschoben werden kann, aber ich bin sehr neu in diesem Bereich und es ist ein bisschen verwirrend. Ich kann mich auch irren.

Einige meiner Server sind Enterprise-Server, andere Standard-Server und alle R2. Ich gehe davon aus, dass ich SP1, .Net 4.0 und Powershell 3.0 für alle Server installieren muss, um Parität und Zuverlässigkeit bei allen Skripten zu erreichen.

Bisher konnte ich ein Skript für Powershell schreiben, um DISM aufzurufen, um den SNMP-Dienst zu installieren und dieses Skript als Anmeldeskript im Gruppenrichtlinienobjekt festzulegen, aber ich weiß, dass dies nicht der beste Weg ist, da ich nicht einfach gehen kann Neustart von Servern im gesamten Unternehmen.

Ich muss die folgenden Elemente angeben: Agent - Kontakt und Standort Traps - Community-Name und Trap-Ziel Sicherheit - Authentifizierungs-Trap senden = Ja, akzeptierter Community-Name NUR LESEN und SNMP-Traps von jedem Host akzeptieren = Ja

Jede Hilfe wäre sehr dankbar!

user236557
quelle

Antworten:

8

SNMP ist alt und knusprig. Microsoft hat die SNMP-Engine in den veralteten Status versetzt. Erwarten Sie daher, dass sie nicht einmal in neuen Windows-Versionen enthalten ist.

Dies klingt auch so, als wäre es ein perfekter Job für Powershells neue Desired State Configuration, aber DSC ist komplex. Es ist eine relativ schwere Aufgabe beim Lernen, Einrichten eines Pull-Servers, Aktualisieren von Powersehell im gesamten Unternehmen usw.

Wenn ich auf jedem Computer ein Skript ausführen würde, um zu überprüfen, ob SNMP installiert ist oder nicht, und es installieren würde, wenn dies nicht der Fall wäre, könnte ich Folgendes tun:

If($(Get-WindowsFeature SNMP-Service).Installed -EQ $False) 
    { Install-WindowsFeature SNMP-Service }

Sie können dieses Skript beliebig verteilen, vielleicht als Startskript. Oder führen Sie eine Schleife aller Computer von einem zentralen Computer aus durch und führen Sie die Installation remote durch.

Das Konfigurationsbit ist nicht sehr glamourös. Wie gesagt, SNMP ist veraltet, sodass Microsoft keine Energie für die Erstellung einer Reihe von Cmdlets für den SNMP-Dienst aufwenden wird.

Bei der Konfiguration handelt es sich jedoch nur um Registrierungseinstellungen. Sie können die HKLM\SYSTEM\CurrentControlSet\services\SNMP\Parameters* .reg-Datei von einem konfigurierten Computer exportieren und diese * .reg-Datei über ein Gruppenrichtlinienobjekt oder ein Startskript auf andere Computer verteilen.

Oder Sie könnten einen direkteren Ansatz wie diesen wählen: http://poshcode.org/2066

Vom noblen Code-Link:

$pmanagers = "ADD YOUR MANAGER(s)"
$commstring = "ADD YOUR COMM STRING"

Import-Module ServerManager

#Check If SNMP Services Are Already Installed
$check = Get-WindowsFeature | Where-Object {$_.Name -eq "SNMP-Services"}
If ($check.Installed -ne "True") {
    #Install/Enable SNMP Services
    Add-WindowsFeature SNMP-Services | Out-Null
}

##Verify Windows Servcies Are Enabled
If ($check.Installed -eq "True"){
    #Set SNMP Permitted Manager(s) ** WARNING : This will over write current settings **
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v 1 /t REG_SZ /d localhost /f | Out-Null
    #Used as counter for incremting permitted managers
    $i = 2
    Foreach ($manager in $pmanagers){
        reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v $i /t REG_SZ /d $manager /f | Out-Null
        $i++
        }
    #Set SNMP Community String(s)- *Read Only*
    Foreach ( $string in $commstring){
        reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\ValidCommunities" /v $string /t REG_DWORD /d 4 /f | Out-Null
        }
}
Else {Write-Host "Error: SNMP Services Not Installed"}

Das ist also die Idee. Sie möchten wahrscheinlich etwas mehr Zeit damit verbringen, das zu polieren und zu vervollständigen, aber es gibt das Konzept.

Bearbeiten: Oh, und hier ist ein hübsches MS-Dokument über die Remoteverwaltung mehrerer Server über Powershell, das einige gute Ideen enthält: http://technet.microsoft.com/en-us/library/hh831809.aspx

function Invoke-WindowsFeatureBatchDeployment {
    param (
        [parameter(mandatory)]
        [string[]] $ComputerNames,
        [parameter(mandatory)]
        [string] $ConfigurationFilePath
    )

    # Deploy the features on multiple computers simultaneously.
    $jobs = @()
    foreach($ComputerName in $ComputerNames) {
        $jobs += Start-Job -Command {
            Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart
        } 
    }

    Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult
}
Ryan Ries
quelle
2
Vielen Dank für Ihren Kommentar. Wenn SNMP den Weg des Dodo geht, werden Überwachungsanbieter wie Zenoss oder Nagios DSC unterstützen?
user236557
Keine Ahnung, was Zenoss oder Nagios in Zukunft tun werden. Ich wette, wir werden sehen, dass Unternehmen SNMP-Engines von Drittanbietern auf ihrem Windows Server 2023 bereitstellen, nachdem Microsoft ihre längst eingestellt hat, weil Unternehmen es lieben, wirklich alte Software zu verwenden. ;)
Ryan Ries
@ user236557 DSC hat nichts mit Überwachung zu tun, es ist ein Konfigurationsmanagementsystem. Heutzutage arbeiten viele Überwachungstools einfach über einen Agenten (nsclient ++ usw.). Das Überwachungssystem spricht mit dem Agenten, der auf das lokale System zugreift. Sie können Daten auch über ws-management abrufen.
Zoredache
@ user236557 Bedenken Sie, dass nur weil Microsoft SNMP ablehnt, dies nicht unbedingt bedeutet, dass es bald verschwinden wird. Microsoft hat die Verwendung von WMI gegenüber SNMP immer bevorzugt und beworben. Die Ablehnung der SNMP-Engine ist daher nur ein weiterer Schritt auf diesem Weg. Wir werden wahrscheinlich Entwickler von Drittanbietern sehen, die SNMP-Software für Windows erstellen, aber ehrlich gesagt sollten Sie angesichts von Windows wahrscheinlich WMI und / oder WinRM anstelle von SNMP verwenden.
HopelessN00b
Vielen Dank Jungs. Ich habe das Skript so ausgeführt, wie ich es möchte, bin mir aber immer noch nicht sicher, wie ich das Gruppenrichtlinienobjekt verwenden soll, um es herauszubringen. Ich weiß, dass es eine Startskriptoption gibt, aber für diese Option muss der Server neu gestartet werden. Ich benötige etwas, das das Skript beim nächsten Aktualisieren der Gruppenrichtlinie auf jedem Windows-Server ausführt, ohne dass ein Neustart erforderlich ist.
user236557