sehr spezifische iostat-Ausgabe in Echtzeit erforderlich

sehr spezifische iostat-Ausgabe in Echtzeit erforderlich

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 iostatgewü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! awkFü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

verwandte Informationen