Windows Server Überwachungssoftware/Dashboard

Gut zu Wissen, also eine "schlaue" Setup-Routine. Hat irgendjemand schon mal die Exchange Auslastungsanzeige hinbekommen? Ebenfalls hab ich das Problem das ich von ca. 8 Domänen eine einzige nicht hinzufügen kann da Spiceworks angeblich den Domänencontroller nicht kennt. Ist aber im Scan als Error gelistet (so wie die anderen auch bevor die Login Daten drin waren).
 
Die Exchange Auslastung zeigt bei mir immer nur den gleichen Wert an...
 
Laut Nachforschungen ist das Problem hinreichend bekannt. Bei vielen (oder allen?) wird immer nur 0 angezeigt und somit ist dier Graph leider wertlos, wobei gerade dieser sehr interessant wäre.
 
klasse...ist wie das Problem in mit den aastra IP-Telefonen welche nicht erkannt werden können. Kann man also nur hoffen, dass bald ein Update kommt. Es Funktioniert zwar ziemlich viel aber wenn dann solche Interessanten Sachen nicht gehen ist das ein kleinens bisschen dumm gelaufen....
Mal sehen was noch so passiert.
 
habt ihr das schon mal beim Exchange versucht? http://community.spiceworks.com/how_to/show/1186-how-to-get-exchange-2007-2010-data-into-spiceworks

Zu IP-Telefonen kann ich nichts sagen, weil wir hier keine einsetzen aber hier hat einer das Problem lösen können. Lag an UDP. Ziemlich weit unten. Vielleicht hilft es weiter. http://community.spiceworks.com/topic/156821-aastra-phone-discovery-issues

EDIT // ok das mit dem Graphen hab ich noch nicht hinbekommen aber bei mir zeigt es jetzt wenigstens ne Mailbox (Größe im Graphen an). Auch unter Devices-> Exchange Server -> Punkt Exchange zeigt es mir die Punkte an die ich in der Powershell angegeben habe. Muss zwar noch die Identity eingeben aber das bringe ich auch noch weg.

Code:
#Requires -Version 2.0 # Copyright 2006-10 Spiceworks, Inc.  All Rights Reserved.  http://www.spiceworks.com
# Spiceworks versions: 4.7
# Creation date:  4/10/2010
# Last modified:  8/16/2010


<#
    .SYNOPSIS
    Push exchange 2007 mailbox statistics to a spiceworks server
    .DESCRIPTION
    This script gathers Exchange mailbox statistics using the getMailboxStatistics
    cmdlet, converts this data to a CSV table and sends it up to a spiceworks server
    using an HTTP POST request.  The script requires a spiceworks server to be
    specified. Other options available:


    -test     - do a dry run of the script with results going to stdout instead
                of being pushed to a spiceworks server
    -ssl      - Use HTTPS to communicate with a spiceworks server
    -port     - specify a port (defaults to 80 for HTTP and 443 for HTTPS)
    -id       - specify the id that spiceworks uses to track this server. This
                is normally generated by the script and should be left alone.
    -exchangeServer   - specify an exchange server to query
    -exchangeDatabase - specify an exchange database to query
    -file - read data from a file instead of the exchange database (for troubleshooting)


    Requires: powershell 2.0 and Exchange Server 2007 sp2.
    See: "help get-mailboxstatistics -detailed" for valid exchange server/db entries


    .EXAMPLE
    exchange_push cumen.myorg.com -test
    exchange_push cumen.myorg.com -port 80
    exchange_push cumen.myorg.com -port 443 -ssl
    exchange_push cumen.myorg.com -port 9001 -ssl -exchangeServer myexchange
#>


param([String]$server, [int]$port="80", [String]$id=$null, [switch]$ssl, [String]$exchangeServer=$null, [String]$exchangeDatabase=$null, [switch]$test, 


[string]$file)


if (!$server) {
  echo "Format: exchange_push.ps1 server [-port port_number] [-ssl] [-spiceid machineID] [-exchangeServer exchange_server | -exchangeDatabase 


exchange_database] [-test][-file filename]"
  exit
}


# Take a shot at figuring out an ID for this windows server. spiceworks will not accept this data 
# without knowing the server. The actual spiceworks ID generation algorithm is a bit more complex
function get_machine_id {
  if ($id) {return $id}
  $id = (Get-WmiObject Win32_ComputerSystemProduct).IdentifyingNumber
  if ($id) {return $id}
  $id = (Get-WmiObject Win32_SystemEnclosure).SerialNumber
  if ($id) {return $id}
  $id = (Get-WmiObject Win32_OperatingSystem).CSName
  if ($id) {return $id}
}


# Might need an exchange identifier for the cmdlet to run correctly or just to segregate data
function get_exchange_target {
  if ($exchangeServer) {return "-Server $exchangeServer"}
  if ($exchangeDatabase) {return "-Database $exchangeDatabase"}
  return $nil
}


$spiceworks_version = '4.7'
$assetid = (get_machine_id).trim()
$return_type = 'MicrosoftExchangeMailbox'
$exchange_target = (get_exchange_target)
$query = "get-mailboxstatistics $exchange_target|add-member -MemberType ScriptProperty -Name size -Value {`$this.totalitemsize.value.ToBytes()} -PassThru|


select-object DisplayName,ItemCount,size,LastLoggedOnUserAccount,StorageGroupName,DatabaseName"


# Load the exchange snapin and query for mailbox statistics
echo "script parameters: assetid=$assetid,version=$spiceworks_version,ssl=$ssl,port=$port,exchangeServer=$exchangeServer,exchangeDatabase=$exchangeDatabase"
$assetname = (Get-WmiObject win32_ComputerSystem).Name
add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin -ErrorAction SilentlyContinue; #2007
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue; #2010
[System.Reflection.Assembly]::LoadWithPartialName("System.Web") | out-null # load urlEncode


$return_data = $trace = $errmsg = ""
try {
  if ($file) {
    echo "Importing data from CSV file: $file"
    $results = Import-Csv $file
  } else {
    echo "Executing query: $query"
    $results = invoke-expression $query  
  }
  if (!($results)) { 
    # Cannot rely on the try block to catch exchange cmdlet invocation errors like invalid parameters.
    # Possibly because it's a 1.0 cmdlet. If the results are null it's very likely an error so grab
    # the last error off the stack and hope there are no race conditions for that error
    $trace = "trace=Exception encountered on $assetname - " + $error[0]
    $return_data = $trace
  } elseif ($results.length -eq "0") {
    echo "No data retrieved"
  } else {
    echo "Mailboxes found: $($results.length)"
    $return_data = "data=" + ($results|ConvertTo-CSV -NoTypeInformation|out-string)
  }
} catch { 
    echo "Error: $_"
    $trace = $return_data = "trace=Exception encountered on $assetname - " + $_
    $return_data = $trace
}


if ($port -eq $nil) {
  if ($ssl) { $port = "443" } else { $port = "80" }
}


# form HTTP post request and execute it
$http = "http"
if ($ssl) { $http="https" }
$base_uri = $http + "://" + $server + ":" + "$port"
if ($trace) {
  $uri = $base_uri + "/dataloader/create_exception?assetUUID=$assetid&spiceworks_version=$spiceworks_version"
} else {
  $uri = $base_uri + "/dataloader/loaddata?assetUUID=$assetid&dataType=$return_type&assetName=$assetname&version=$spiceworks_version&is_csv=true"
}


if ($test) {
  echo "--- DRY RUN: The following would normally be posted to spiceworks ---"
  echo "URL: $uri"
  echo "BODY: $return_data"
} else {
  $wc = new-object net.WebClient;
  $wc.uploadString($uri, [System.Web.HttpUtility]::UrlEncode($return_data));
  $wc.close
}

Aufzurufen mit: ".\exchange_push.ps1 IPvomSpiceworksServer -port 9675" (falls es nicht Port 80 ist)
 
Zuletzt bearbeitet:
Welche Exchangeversion habt ihr? Habe zur Zeit nur Produktivsystem da würde ich das ungern testen ;). Wenn ich Zeit habe schau ich mir das Skript mal genau an, evtl. sind davon einige Befehle nicht mehr vorhanden da es für die 2007er Reihe geschrieben wurde.

Im Einsatz bei mir sind 2013er und 2010er Exchange, ältere Versionen haben wir nirgendwo laufen.
 
Zurück
Oben