2017-09-29 5 views
0

nginx émet la norme ISO860 correcte dans ce format:Comment puis-je obtenir notre nginx access_log pour ne pas mettre: dans le décalage de fuseau horaire?

2017-09-29T15:39:06+00:00 

Ce qui est génial, sauf AWS CloudWatch ne fonctionne que lorsque: n'est pas dans le décalage horaire. Comme ceci:

2017-09-29T15:39:06+0000 

Nous devons produire un format horaire que CloudWatch peut interpréter. CloudWatch est "cassé" car il utilise les fonctions de temps dans python 2.7.

Répondre

1

Il n'y a pas de voie directe en tant que telle. Mais il est possible de personnaliser le format des journaux et de modifier les variables. On peut donc l'utiliser pour l'entraînement ce

events { 
    worker_connections 1024; 
} 
http { 

map $time_iso8601 $time_aws { 
    ~(.*):(00) "$1$2"; 
} 

log_format new_format '$remote_addr - $remote_user [$time_aws] ' 
        '"$request" $status $body_bytes_sent ' 
        '"$http_referer" "$http_user_agent"'; 
access_log /dev/stdout new_format; 
server { 
    listen 80; 
    location/{ 
     return 200 "test"; 
    } 
} 

} 

Cela me donne ci-dessous un accès journal

172.19.0.1 - - [2017-09-29T16:43:55+0000] "GET /tarun HTTP/1.1" 200 51 "-" "curl/7.47.0" 

Alors maintenant, il vous suffit de faire correspondre le format à la façon dont vous voulez