Danke für das Feedback

Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)

Tutorial — Lastausgleich von Syslog-Meldungen mithilfe von Protokollerweiterungen

Das auf der NetScaler-Appliance verfügbare Syslog-Protokoll funktioniert nur für die auf der NetScaler-Appliance generierten Nachrichten. Es führt keinen Lastenausgleich für die von externen Knoten kommenden Nachrichten durch. Um den Lastenausgleich solcher Nachrichten zu erreichen, müssen Sie die Funktion für Protokollerweiterungen verwenden und die Logik zum Analysieren von Syslog-Nachrichten mithilfe der Programmiersprache Lua 5.2 schreiben.

Code zum Analysieren von Syslog-Nachrichten

Im Code ist nur die TCP-Client-Daten-Callback-Funktion definiert - client.on_data (). Für Serverdaten wird keine Callback-Funktion hinzugefügt und der Server zum Client verwendet den schnellen nativen Pfad. Der Code identifiziert die Nachrichtengrenze anhand des nachfolgenden Zeichens. Wenn das TCP-Paket mehr als eine Syslog-Nachrichten enthält, teilen wir das Paket basierend auf dem nachfolgenden Zeichen und Lastverteilung jeder Nachricht.

--[[ Syslog event handler for TCP client data ctxt - TCP client side App processing context. data - TCP Data stream received. --]] function client.on_data(ctxt, payload) local message = nil local data_len local data = payload.data local trailing_character = "\n" ::split_message:: -- Get the offset of trailing character local new_line_character_offset = data:find(trailing_character) -- If trailing character is not found, then wait for more data. if (not new_line_character_offset) then goto need_more_data end -- Get the length of the current message data_len = data:len() -- Check whether we have more than one message -- by comparing trailing character offset and -- current data length if (data_len > new_line_character_offset) then -- If we have more than one message, then split -- the data into two parts such that first part -- will contain message upto trailing character -- offset and second part will contain -- remaining message. message, data = data:split(new_line_character_offset) else message = data data = nil end -- Send the data to the backend server. ns.send(ctxt.output, "EOM", {data = message}) goto done ::need_more_data:: -- Wait for more data ctxt:hold(data) data = nil goto done ::done:: -- If we have more data to parse, -- then do parsing again. if (data) then goto split_message end end
Die offizielle Version dieses Inhalts ist auf Englisch. Für den einfachen Einstieg wird Teil des Inhalts der Cloud Software Group Dokumentation maschinell übersetzt. Cloud Software Group hat keine Kontrolle über maschinell übersetzte Inhalte, die Fehler, Ungenauigkeiten oder eine ungeeignete Sprache enthalten können. Es wird keine Garantie, weder ausdrücklich noch stillschweigend, für die Genauigkeit, Zuverlässigkeit, Eignung oder Richtigkeit von Übersetzungen aus dem englischen Original in eine andere Sprache oder für die Konformität Ihres Cloud Software Group Produkts oder Ihres Diensts mit maschinell übersetzten Inhalten gegeben, und jegliche Garantie, die im Rahmen der anwendbaren Endbenutzer-Lizenzvereinbarung oder der Vertragsbedingungen oder einer anderen Vereinbarung mit Cloud Software Group gegeben wird, dass das Produkt oder den Dienst mit der Dokumentation übereinstimmt, gilt nicht in dem Umfang, in dem diese Dokumentation maschinell übersetzt wurde. Cloud Software Group kann nicht für Schäden oder Probleme verantwortlich gemacht werden, die durch die Verwendung maschinell übersetzter Inhalte entstehen können.
Tutorial — Lastausgleich von Syslog-Meldungen mithilfe von Protokollerweiterungen