こんな感じで、Nginxの受信フレームをグラフ化する。
デバッグログからFluentdでMackerel APIを叩く感じ。
ビルド
NginxのHTTP/2パッチがTrunkに取り込まれたので、改めてビルド。
wget http://hg.nginx.org/nginx/archive/tip.tar.gz tar zxvf ./tip.tar.gz cd ./nginx #<reision number> ./auto/configure --with-http_ssl_module \ --with-http_v2_module \ --with-debug
nginx.conf
error_log /usr/local/nginx/logs/error.log debug; server { listen 443 ssl http2 ; ssl_prefer_server_ciphers on; ssl_ciphers AESGCM:HIGH:!aNULL:!MD5; server_name localhost; ssl_certificate server.crt; ssl_certificate_key server.key; location / { root /usr/share/www; } }
td-agent.conf
<source> type tail path /usr/local/nginx/logs/error.log pos_file /var/log/td-agent/nginx-debug.log.pos tag nginx format multi_format format /^(?<time>[^ ]* [^ ]*) \[(?<level>[^\]]*)\] [^:]*:.*process http2 frame type:(?<frame_type>[0-9]+) f:(?<flag>[0-9]+) l:(?<length>[0-9]+) sid:(?<sleam_id>[0-9]+)$/ </source> <match nginx> type datacounter tag nginx.frame unit minute count_key frame_type pattern1 DATA 0 pattern2 HEADERS 1 pattern3 PRIORITY 2 pattern4 RST_STREAM 3 pattern5 SETTINGS 4 pattern6 PUSH_PROMISE 5 pattern7 GOAWAY 6 pattern8 WINDOW_UPDATE 7 pattern9 CONTINUATION 8 </match> <match nginx.frame> type mackerel api_key your_key service your_service metrics_name frame.${out_key} out_keys nginx_unmatched_count,nginx_DATA_count,nginx_HEADERS_count,nginx_PRIORITY_count,nginx_SETTINGS_count,nginx_GOAWAY_count,nginx_CONTINUATION_count,nginx_UNKOWN_count </match>
デバッグログ出すのはやっぱ辛さを感じる...