PureStorage Integration

Hallo zusammen
Starte gerade einen PoC mit einem PureStorage Cluster und frage mich ob es evtl. bei jemandem schon ein Plugin für die Integration in Checkmk gibt?

Das Nagios Plugin habe ich testhalber auch schon aktiviert ist aber von den Daten her nicht gerade schön und rückwirkende Statistiken gibt es da soweit ich das gerade sehe auch nicht.

Grüsse
ManDal

Wird auch ein CMK Plugin nicht haben. Es gibt immer erst im Monitoring Statistiken ab dem Zeitpunkt des Monitoring Starts.

Die vorhandenen Nagios Plugins liefern ja eigentlich schon recht viel.
Da PureStorage eine RestAPI bereit stellt sollte es möglich sein die Nagios Plugins in ein Datasource Programm zu überführen.

Das ist klar ich kann keine Daten anzeigen die in der Vergangenheit also vor dem hinzufügen in das Monitoring sind. Mit der rückwirkenden Statistik wollte ich eigentlich damit sagen das es keine Graphen gibt sondern nur den aktuellen IST zustand.

So wie ich aber aktuell von der PureStorage mitbekommen habe ist das die an etwas Arbeiten, daher aktuell abwarten…

Grüsse
ManDal

Hi,

gibt es seitens PureStorage schon ein Update oder habt ihr mittlerweile eine andere Lösung gefunden das System sinnvoll mit Checkmk zu überwachen?

Hey, leider nein das dauert wohl noch etwas bis da etwas brauchbares vorhanden ist.
Aktuell überwache ich die Systeme mit Pure1 und dem Nagios Plugin bis ich weitere Infos dazu habe

Grüsse

Ich mutmaße mal, dass es diesbezüglich noch nichts neues gibt.
Daher lasse ich einfach mal dieses quick-and-dirty Powershell-Skript von mir hier. Seht es als PoC an.
Das Skript kann von einem Windows-Agent ausgeführt werden, um die Volumes einer Pure-Appliance abzufragen.

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$username = "MYPUREUSERNAME"
$password = "MYPUREPASSWORD"
$ArrayAddress = "MYPUREHOSTNAME"
$apiversion = "1.15"

$output = "<<<<$ArrayAddress>>>>" + [Environment]::NewLine
[string]$array = "https://$($ArrayAddress)"
$cred = (convertto-json @{
        username=$username
        password=$password})

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$apiret = Invoke-RestMethod -Uri "$array/api/$apiversion/auth/apitoken" -Method Post -Body $cred -ContentType "application/json"
$APIKey = $apiret.api_token
$apitoken = (ConvertTo-Json @{api_token=$APIKey})
$apiret = Invoke-RestMethod -Uri "$array/api/$apiversion/auth/session" -Method Post -Body $apitoken -ContentType "application/json" -SessionVariable websession
$array_volumes = Invoke-RestMethod -Uri "$array/api/$apiversion/volume" -websession $websession -ContentType "application/json"
$output += "<<<df:sep(9)>>>" + [Environment]::NewLine
foreach ($array_volume in $array_volumes) 
{
$volume_name = $array_volume.name
$array_volumestat = Invoke-RestMethod -Uri "$array/api/$apiversion/volume/$($volume_name)?space=true" -websession $websession -ContentType "application/json" 
$array_volperf = Invoke-RestMethod -Uri "$array/api/$apiversion/volume/$($volume_name)?action=monitor" -websession $websession -ContentType "application/json"
$volume_serial = $array_volume.serial 
$volume_created = $array_volume.created 
$volume_total = $array_volumestat.total 
$volume_snapshot = $array_volumestat.snapshots 
$volume_volumes = $array_volumestat.volumes
$volume_size = $array_volumestat.size
$volume_shared = $array_volumestat.shared_space
$volume_thinprov = $array_volumestat.thin_provisioning
$volume_datareduc = $array_volumestat.data_reduction
$volume_totalreduc = $array_volumestat.total_reduction
$volume_wps = $array_volperf.writes_per_sec
$volume_rps = $array_volperf.reads_per_sec
$volume_ips = $array_volperf.input_per_sec
$volume_ops = $array_volperf.output_per_sec
$volume_upwo = $array_volperf.usec_per_write_op
$volume_upro = $array_volperf.usec_per_read_op

$volume_free = $volume_size - $volume_total
$volume_total_percent = [math]::Ceiling($volume_total / $volume_size * 100)

$output += $volume_name + "`t" + "LUN" + "`t" + $volume_size + "`t" + $volume_total + "`t" + $volume_free + "`t" +$volume_total_percent + "%`t" + $volume_name  + [Environment]::NewLine

}
$output += "<<<<>>>>"
Write-Host $output

Kann am Ende dann so oder so ähnlich aussehen:

Achja:
Errorhandling und Cleancode sind meinem Skript noch ein Fremdwort :wink:

1 Like