Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2015-06-25_gotanda.pm5

 2015-06-25_gotanda.pm5

Plackのアクセスログの話

SUZUKI Masashi

June 24, 2015
Tweet

More Decks by SUZUKI Masashi

Other Decks in Technology

Transcript

  1. アクセスログが 出力される場所 アプリケーションサーバ Plack, Rack, mod_perl etc... リバースプロキシ Apache, Nginx,

    Perlbal etx... 本当に小規模なアプリならリバースプ ロキシが無い場合もあるでしょう 12
  2. ログの項目1 16 nginx apache vhost $host %{Host}i host $remote_addr %h

    uri $request_uri %U%q method $request_method %m protocol $server_protocol %H status $status %>s size (response) $body_bytes_sent %B reqsize (request) $request_length %I
  3. ログの項目2 17 nginx apache referer $http_referer %{Referere}i ua $http_user_agent %{User-agent}i

    reqtime $request_time %T apptime $upstream_respon se_time runtime $upstream_http_x_ runtime %{X-Runtime}o
  4. ログを出力する(Nginx) 21 log_format ltsv_log 'time:$time_iso8601\t' 'host:$remote_addr\t' 'vhost:$host\t' 'user:$remote_user\t' 'upstream:$upstream_addr\t' 'method:$request_method\t'

    'protocol:$server_protocol\t' 'uri:$request_uri\t' 'status:$status\t' 'ua:$http_user_agent\t' 'referer:$http_referer\t' 'size:$bytes_sent\t' 'reqsize:$request_length\t' 'reqtime:$request_time\t' 'apptime:$upstream_response_time\t' 'runtime:$upstream_http_x_runtime\t'; access_log /var/log/nginx/access.log ltsv_log;
  5. ログを出力する(Plack) 23 use File::Spec::Functions qw(catfile); use File::RotateLogs; $logger = File::RotateLogs->new(

    logfile => catfile('/var/log/plack', "$project_name.access.%Y_%m%d.log"), linkname => catfile('/var/log/plack', "$project_name.access.log"), ); enable 'AxsLog', logger => sub { $logger->print(shift); }, error_only => ($ENV{PLACK_ENV} || '') eq 'production' ? 1 : 0, long_response_time => ($ENV{PLACK_ENV} || '') eq 'production' ? 0.3 : 0, format => join( "\t", 'time:%{%Y-%m-%dT%H:%M:%S%z}t', 'host:%h', 'vhost:%{Host}i', 'user:%u', 'method:%m', 'protocol:%H', 'uri:%U%q', 'status:%>s', 'ua:%{User-agent}i', 'referer:%{Referer}i', 'size:%b', 'retime:%T', 'runtime:%{X-Runtime}o', 'pid:%P', );
  6. Fluentdによるログ転送 27 1.in_tail アクセスログを読み込む access log access log 2.(in|out)_forward 転送する

    4.out_file 集約したログを出力 webサーバ群 ログ集約サーバ 3.ログを集約する
  7. 33

  8. 34