Suchen
Schließen Sie dieses Suchfeld.

qq und die Qumulo-REST-API

Geschrieben von:

Qumulo liefert ungefähr alle zwei Wochen eine neue Version unserer Qumulo Core-Software aus, und mit jeder Version von Qumulo Core veröffentlichen wir eine neue Version der Qumulo-REST-API, zusammen mit a Python-Wrapper als Annehmlichkeit für Python-Sprachentwickler. Dies ist sehr nützlich für Benutzer von höheren Programmiersprachen wie Python oder einer anderen Programmiersprache, die REST-Aufrufe direkt ausführen kann.

Aber was ist mit Systemadministratoren und anderen, die für viele ihrer Aufgaben Bash/Shell-Skripting verwenden? Wie können sie die Leistungsfähigkeit der Qumulo-REST-API nutzen? Für diese Benutzer ist das von Qumulo bereitgestellte qq-Befehlszeilentool (CLI) die Möglichkeit, die Leistungsfähigkeit der REST-API von Qumulo über die CLI und in Shell-Skripten zu nutzen. Die gesamte REST-API von Qumulo wird über qq bereitgestellt.

Dieser Beitrag zeigt Ihnen einige Möglichkeiten, wie Sie Informationen aus Ihrem Qumulo-Cluster über qq direkt in der Shell oder in Bash-Skripten nutzen können, mit einigen Beispielen, die zeigen, wie Sie die Ausgabe von qq in andere Verwaltungsskripts integrieren.

qq . installieren

Der einfachste Weg, qq zu installieren, besteht darin, die Qumulo-REST-API von PyPI (dem öffentlichen Python-Paketindex-Repository) zu installieren:

https://pypi.python.org/pypi/qumulo_api/

Öffnen Sie zum Installieren eine Eingabeaufforderung und führen Sie dann Folgendes aus:

pip install qumulo-api</var/www/wordpress>

Zum Ausführen benötigen Sie Python 2.7 qq. Wenn Sie möchten, können Sie auch laufen qq lokal auf Ihrem Cluster (über SSH), wo es vorinstalliert ist.

Erste Schritte: Anmelden und Anzeigen von Clusterinhalten

Um zu beginnen, müssen Sie sich wie folgt bei Ihrem Qumulo-Cluster anmelden:

qq --host [hostname or IP address] login -u [username] -p [password]</var/www/wordpress>

Dabei sind Benutzername und Passwort Anmeldeinformationen für Ihren Qumulo-Cluster. Bei erfolgreicher Anmeldung wird hinter den Kulissen ein Zugriffstoken erstellt. Während dieses Token gültig ist, müssen Sie für nachfolgende qq-Befehle keinen Benutzernamen und kein Passwort angeben.

Um alle Optionen über die Befehlszeile anzuzeigen, versuchen Sie es auszuführen qq --help</var/www/wordpress>.

Sobald Sie authentifiziert sind, können Sie Informationen zum Clusterinhalt anzeigen. Dieser Befehl listet den Inhalt beginnend im Stammverzeichnis auf:

qq --host music fs_read_dir --path /</var/www/wordpress>

Was einen Inhalt wie diesen zurückgibt (ein paar tausend Ausgabezeilen wurden hier weggelassen…):

{ „child_count“: 131, „files“: [ (...) { „blocks“: „1“, „change_time“: „2017-01-04T22:59:52.909017431Z“, „child_count“: 30, „ creation_time“: „2016-03-15T20:12:07.722559693Z“, „datablocks“: „0“, „file_number“: „3“, „group“: „17179869184“, „group_details“: { „id_type“: „ NFS_GID", "id_value": "0" }, "id": "3", "metablocks": "1", "mode": "0777", "modification_time": "2017-01-04T22:59:52.909017431 Z“, „name“: „users“, „num_links“: 30, „owner“: „12884901888“, „owner_details“: { „id_type“: „NFS_UID“, „id_value“: „0“ }, „path“ : „/users/“, „size“: „15360“, „symlink_target_type“: „FS_FILE_TYPE_UNKNOWN“, „type“: „FS_FILE_TYPE_DIRECTORY“ } ], „id“: „2“, „paging“: { „next“: "", "prev": "/v1/files/%2F/entries/?before=4190957568&limit=16" }, "path": "/" }

Diese Ausgabe veranschaulicht einige Dinge über qq und die Qumulo REST API:

  1. Die Ausgabe von qq-Befehlen erfolgt im JSON-Format
  2. Bei einigen qq-Befehlen kann die Ausgabe sehr ausführlich sein

Das Unix-Philosophie besteht darin, „Programme zu schreiben, um Textströme zu verarbeiten“, und das ist auch die Grundlage des Shell-Scriptings unter Unix. Während das JSON-Format Text ist, ist es üblicher, durch Kommas oder Tabulatoren getrennte Werte an nachfolgende Befehle weiterzuleiten. Um die Ausgabe von qq-Befehlen prägnanter zu gestalten und verschiedene Formate auszugeben, verwenden wir für diesen Blog-Beitrag das beliebte jq-Befehlszeilen-JSON-Prozessor um zu veranschaulichen, wie Sie qq besser in andere CLI-Tools integrieren können (auf einem Mac können Sie jq mit Homebrew installieren; Informationen zu Linux, Windows und anderen Varianten finden Sie auf der Tool-Website).

Nehmen wir anhand des obigen Beispiels einen Teil der Ausgabe von qq und verwenden Sie jq, um das Lesen und die Wiederverwendung in anderen Tools zu erleichtern (es gibt ein Tutorial für jq, das Ihnen zeigt, was Sie tun können):

qq --host music fs_read_dir --path /media | jq '[.path, .id, .files[0].blocks] | @csv'</var/www/wordpress>

Dadurch werden der Pfad, die ID und der Blockwert des ersten von fs_read_dir zurückgegebenen Eintrags im CSV-Format zurückgegeben, etwa so:

"\"/media/\",\"1000003\",\"1\""</var/www/wordpress>

Das könnte dann an andere Tools weitergeleitet werden, die das CSV-Format erwarten. Beachten Sie, dass Sie Dateien und Verzeichnisse auch mit qq und der REST-API erstellen können. Die gängigere Methode besteht jedoch darin, Freigaben mit NFS oder SMB bereitzustellen und auf diese Weise Inhalte im Cluster zu erstellen.

Informationen zu Ihrem Cluster sowie zum Anzeigen und Erstellen von Benutzern, Gruppen und NFS- oder SMB-Freigaben

Angenommen, Sie möchten die Kapazität und den Status aller Slots (Festplatten) in Ihrem Cluster abrufen, die Ergebnisse nach Slot sortieren und die Ergebnisse dann in einer CSV-Datei als Teil eines IT-Statusberichts speichern. Sie könnten Folgendes ausführen:

qq --host music cluster_slots | jq '[ .[] | {"cap":.capacity, "slot":.slot_type, "state":.state }] | sort'</var/www/wordpress>

Sie können Gruppen erstellen:

qq --host music auth_add_group --name "My Test Group"</var/www/wordpress>

{ "gid": "", "id": "1026", "name": "My Test Group", "sid": "S-1-5-21-1203876804-525990034-1406135336-1026" } Erweiterte Identität Informationen für Gruppe 1026: [ { "id_type": "LOCAL_GROUP", "id_value": "My Test Group" } ]

Und fügen Sie Benutzer zur Gruppe hinzu:

qq --host music auth_add_user --name "My_Test_User" --primary-group "My Test Group" -p junk</var/www/wordpress>

{ „id“: „1027“, „name“: „My_Test_User“, „primary_group“: „1026“, „sid“: „S-1-5-21-1203876804-525990034-1406135336-1027“, „uid“ : "" } Erweiterte Identitätsinformationen für Benutzer 1027: [ { "id_type": "LOCAL_USER", "id_value": "My_Test_User" }, { "id_type": "LOCAL_GROUP", "id_value": "My Test Group" } ]

Und dann erstellen Sie ein Verzeichnis und fügen eine Freigabe für die neue Gruppe hinzu:

qq --host music fs_create_dir --name "my_test" --path "/"</var/www/wordpress>

Mit:

qq --host music smb_add_share --name "my_test_smb_share" --fs-path "/my_test/"</var/www/wordpress>

Oder wenn Sie NFS verwenden:

qq --host music nfs_add_share --fs-path "/my_test/" --export-path "/my_nfs_export" --no-restrictions</var/www/wordpress>

Leistung: Abrufen von Analysen und aggregierten Daten

Einer der leistungsstärksten Aspekte der Qumulo REST API sind die Echtzeitanalysen und aggregierten Daten über das Dateisystem, die über unsere REST API bereitgestellt werden. Mit qq werden diese Daten auch Benutzern zugänglich gemacht, die Bash-Skripte verwenden.

Angenommen, Sie möchten alle aktuellen Aktivitäten im Cluster abrufen und in tabellarischer Form anzeigen, ähnlich wie Iostat und andere Werkzeuge. Um die aktuelle Aktivität abzurufen, können Sie einfach Folgendes ausführen:

qq --host music current_activity_get | jq '.entries | sort_by(.ip)'</var/www/wordpress>

Wie alle qq-Befehle werden auch hier JSON-basierte Daten zurückgegeben – in diesem Fall die aktuelle Clusteraktivität wie Datei- und Metadatendurchsatz und IOPs – gruppiert nach Client-IP-Adresse:

 

Diese Daten können dann an andere Tools wie Überwachungstools weitergeleitet werden.

Weiterführende Literatur und Tools

Es gibt ein gutes Tutorial dazu JSON und das JQ-Tool hier.

Wenn Sie derzeit Qumulo-Kunde sind, finden Sie weitere Informationen unter Qumulo-Community-Site (suchen Sie in Konversationen nach „qq“).

Verwandte Artikel

Nach oben scrollen