Protokollierungsantwort mithilfe des Nginx-Ingress-Controllers

Protokollierungsantwort mithilfe des Nginx-Ingress-Controllers

Aus regulatorischen Gründen versuche ich, die gesamte Antwort zu protokollieren, wenn ich den Nginx-Ingress-Controller für Kubernetes verwende. Aus der Dokumentation und anderen Antworten hier geht hervor, dass ich die Direktive body_filter_by_lua_block verwende.

Meine Configmap zum Einrichten sieht so aus

apiVersion: v1
kind: ConfigMap
metadata:
 name: nginx-configuration
 namespace: ingress-nginx
 labels:
   app.kubernetes.io/name: ingress-nginx
   app.kubernetes.io/part-of: ingress-nginx
data:
 server-snippet: | 
   lua_need_request_body on;

   set $resp_body '';
   body_filter_by_lua_block {
       local resp_body = string.sub(ngx.arg[1], 1, 1000)
       ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
       if ngx.arg[2] then
           ngx.var.resp_body = ngx.ctx.buffered
       end
   }
 log-format-upstream: |
   Response body: $resp_body

Beim Empfang einer Anfrage wird Folgendes protokolliert:

Response body:

Es scheint, dass $resp_body leer ist. Ich habe den Verdacht, dass dies damit zusammenhängen könnte, dass body_filter_by_lua_block später als die Protokollierung ausgeführt wird. Es sollte jedoch in der Inhaltsphase ausgeführt werden, während die Protokollierung in der späteren Protokollierungsphase erfolgen sollte.

Wahrscheinlich übersehe ich hier etwas Offensichtliches, aber ich glaube, ich habe die meisten Kombinationen ausprobiert.

verwandte Informationen