nginx-1.7.1ã§syslogã«ãã°ãé£ã°ããããã«ãªã£ãã®ã§è©¦ãã¦ã¿ã
nginxã®ã¢ã¯ã»ã¹ãã°ãã¨ã©ã¼ãã°ãsyslogã«ç´æ¥é£ã°ãæ©è½ã¯商用版のNGINX Plusã§ã®ã¿æä¾ããã¦ããã®ã ãã1.7.1ã§ãªã¼ãã³ã½ã¼ã¹çã«ããã®æ©è½ãåãè¾¼ã¾ããã
Changes with nginx 1.7.1 27 May 2014 *) Feature: the "error_log" and "access_log" directives now support logging to syslog.
æ©é試ãã¦ã¿ãã
docker-nginx
syslogãµã¼ãã®ãã¹ãåã¯ä»®ã«logserverã¨ããã
Dockerfile
FROM centos:latest ADD nginx.repo /etc/yum.repos.d/ RUN yum install -y nginx ADD access_log.conf /etc/nginx/conf.d/ EXPOSE 80 CMD ["/usr/sbin/nginx", "-g", "daemon off; error_log syslog:server=logserver,facility=local2 notice;"]
nginx.repo
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
access_log.conf
access_log syslog:server=logserver,facility=local1 main;
å ·ä½çãªæ¸å¼ã¯公式のDocumentationを参照ã
docker-rsyslog
syslogãåãããµã¼ãã¯ãããªæããã
Dockerfile
FROM centos:latest RUN yum install -y rsyslog ADD remote.conf /etc/rsyslog.d/ CMD ["/sbin/rsyslogd", "-c5", "-n"]
remote.conf
$ModLoad imudp $UDPServerRun 514 $AllowedSender UDP, 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 local1.* /var/log/nginx_access_log local2.* /var/log/nginx_error_log
AllowedSenderã§0/0ãæ¸ããªãã£ãã®ã§ãªããããµãããã£ã¨è¯ãæ¸ãæ¹ãªããã®ãã
åä½ç¢ºèª
Jun 3 10:53:33 c65d458cb3e9 nginx: 127.0.0.1 - - [03/Jun/2014:10:53:33 -0400] "GET / HTTP/1.1" 200 612 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.6.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
ã¨ã©ã¼ãã°
Jun 3 10:53:23 c65d458cb3e9 nginx: 2014/06/03 10:53:23 [notice] 23#0: start worker processes Jun 3 10:53:23 c65d458cb3e9 nginx: 2014/06/03 10:53:23 [notice] 23#0: start worker process 25
ãããããªãããã¨æãã§ãããããããsyslogã«ã¯ï¼è¡ãããã®æåæ°å¶éããããããé·ããã°ã ã¨ãå°»ãéåãã¦æ®å¿µãªãã¨ã«ãªãã
Jun 3 11:42:42 c65d458cb3e9 nginx: 127.0.0.1 - - [03/Jun/2014:11:42:42 -0400] "GET /12345678901234(ä¸ç¥)012345678
syslogèªä½ã¯2048æåããããä¸éã«ãªãããã ããæå ã§è©¦ããéãã¯2043æåãä¸éã«ãªã£ãããã®ãããã®è©³ç´°ã¯èª¿ã¹ã¦ãªãã
nginxã®æ´¾çã§ç¬èªã«syslog対å¿ããã¦ããTengineã§ã試ãããã2043æåããããä¸éã«ãªãã®ã¯åãã ã£ããsyslogã®å¶ç´ã ããããããããã
ã¾ã¨ã
ãã°ãã³ã³ããå ã«èç©ããªããã¨ã§ããImmutable Infrastructureã£ã½ããªããã1ã³ã³ãã1ããã»ã¹ãå®ç¾ã§ãã¦ããã®ã ãsyslogã«ã¯æåæ°å¶éãããã®ã§æ³¨æã
ã¡ãªã¿ã«nginxããç´æ¥fluentdã«é£ã°ããnginx-fluentd-moduleã試ããã®ã ããåä¿¡å´fluentdã«fluent-plugin-udpãå¿ è¦ãªã®ã¯ã¾ãè¯ãã¨ãã¦ããè¨å·ãªã©ã®ã¨ã¹ã±ã¼ãå¦çå¨ããæªããæãã§è¥å¹²å¾®å¦ã ã£ãããã¡ãããã®å ç´¹ä»ã§ããã°ã¨æãã
追è¨
@matsuu nginxã®syslogåºåã¯NGX_MAX_ERROR_STR(2048ã§å®ç¾©)ã«syslogã®ããããå ããæåæ°ã®ãããã¡ãæã£ã¦ãã¦ãè²ã
ãã©ãã¤ãã¦å®è³ª2000æååå¾ã§ããã
— Takashi Takizawa (@ttkzw) 2014, 6æ 3