access_log_json
SKILL.md
access_log_json
El access log en formato JSON del gateway es el registro primario de todas las peticiones recibidas. Incluye el trace_id inyectado por el gateway para correlacionar con los logs de los microservicios downstream.
When to use
Activar desde el inicio del proyecto. Es la fuente de verdad para análisis de rendimiento, detección de ataques y auditoría de accesos.
Instructions
- Definir formato JSON en
nginx.conf:log_format json_combined escape=json '{' '"time":"$time_iso8601",' '"remote_addr":"$remote_addr",' '"method":"$request_method",' '"uri":"$uri",' '"status":$status,' '"duration":$request_time,' '"bytes_sent":$bytes_sent,' '"trace_id":"$http_x_trace_id",' '"user_agent":"$http_user_agent"' '}'; access_log /var/log/nginx/access.log json_combined; - Inyectar
X-Trace-IDsi no viene en el request:$request_idcomo fallback. - Propagar
X-Trace-IDal upstream:proxy_set_header X-Trace-ID $http_x_trace_id; - Configurar Promtail para leer
/var/log/nginx/access.logy enviar a Grafana Loki con labeljob="nginx". - Excluir de los logs:
GET /health,GET /ready,GET /metrics(demasiado verbosos, sin valor). - Retención de access logs: 90 días en Loki para logs normales, indefinido para logs de 4xx/5xx.
Notes
- Nunca loguear el
Authorizationheader ni el body de las peticiones — contienen JWTs e imágenes. - El campo
trace_idpermite seguir una sesión KYC desde el access log hasta los spans de Jaeger. - Para IPs de usuarios, considerar hashearlas en logs de Loki si hay requisitos GDPR estrictos.