Gibt es eine Möglichkeit, die Ausgabe von iostat -m abzurufen und nur die Spalte „await“ aus der erweiterten Ausgabe in Echtzeit hinzuzufügen? Ich weiß, dass diese Frage verrückt klingt, aber ich muss in der Lage sein, alle diese Spalten in Echtzeit abzurufen, ohne sie in eine Datei auszugeben oder iostat zweimal auszuführen, da dies zu irreführenden Ergebnissen führen würde. Dies ist CentOS 6.2 iostat 9.0.4. Kernel 2.6.36.4. Zusammenfassend brauche ich also Folgendes.
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 0.56 0.00 0.00 324 485
und ich muss „await“ hinzufügen, damit es so aussieht.
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn await
sda 0.56 0.00 0.00 324 485 10.72
Träume ich? Sehe ich das falsch? Muss ich mein eigenes iostat kompilieren?
Dank im Voraus.
Antwort1
Ich bin mir nicht sicher, wie ich die iostat
gewünschte Formatierung erhalten kann. Das Tool, das ich für diese Art der Überwachung verwende, ist jedoch so anpassbar, dass Sie die relevanten Felder anzeigen können. Es eignet sich auch hervorragend zum Generieren von Daten für Wiedergabe- und Grafikzwecke.
ich benutzeCollectl-Überwachung(verfügbar in CentOS über yum) und dieFestplattenprüfflagssollte Ihnen geben, was Sie brauchen:
collectl -sD --dskfilt sda
Beispielausgabe (Sie können die gedruckten Einheiten und Spalten ändern):
collectl -sD --dskfilt sdb
waiting for 1 second sample...
# DISK STATISTICS (/sec)
# <---------reads---------><---------writes---------><--------averages--------> Pct
#Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util
sdb 0 0 0 0 336 0 52 6 6 0 0 0 1
sdb 16 0 1 16 389 1 52 7 7 0 0 0 3
sdb 0 0 0 0 1236 9 109 11 11 0 0 0 0
sdb 16 0 1 16 676 3 140 5 4 0 1 1 14
sdb 0 0 0 0 64 1 16 4 4 0 2 1 2
Antwort2
Warum nicht einen Wrapper in Bash erstellen?
Die einzeilige Version würde so aussehen:
iostat 1 2 | grep -w sda | tail -1 | awk {'print $7'}
Dadurch wird iostat zweimal ausgeführt und der richtige Wert von await (7. Spalte) zurückgegeben.
Sie können dasselbe mit vmstat tun, indem Sie die rechte Spalte an awk übergeben, um den gesamten CPU-Iowait abzurufen. Beispiel:
vmstat 1 2 | tail -1 | awk {'print $16'}
Beachten Sie, dass iostat und vmstat bei jeder Linux-Distribution unterschiedlich sind und Sie die richtige Spalte auswählen müssen.
Antwort3
Dies scheint etwas zu sein, das mit Munin, Graphit usw. überwacht werden kann.
BEARBEITEN: Wenn Ihr System über verfügt watch
, können Sie iostat so einstellen, dass es automatisch eine bestimmte (oder sich unendlich wiederholende) Anzahl von Malen mit einer angegebenen Lücke zwischen den Durchläufen ausgeführt wird! awk
Füllen Sie die Felder aus, die Sie tatsächlich möchten!
Antwort4
beim erneuten Lesen der ursprünglichen Frage stimme ich zu, dass collectl die beste Lösung ist, wenn der Autor nach Echtzeitinformationen sucht. Deshalb habe ich es geschrieben. ;)
wenn Sie mit den Daten etwas Bestimmtes vorhaben, kann ich Ihnen vielleicht helfen, aber dazu müsste ich mehr wissen. Was den Echtzeitgrad betrifft, können Sie jedes beliebige Überwachungsintervall im Sekundentakt wählen.
-markieren