Slide 1

Slide 1 text

Python Web Application Monitoring in Mackerel id:kizkoh Hatena Co., Ltd. 2017-04-27 Mackerel Meetup #10 Tokyo #mackerelio

Slide 2

Slide 2 text

Python Web Application Application - WSGI に則ったインターフェイスを持つ

Slide 3

Slide 3 text

Python Web Application WSGI WSGI は Python の Web アプリケーション規格

Slide 4

Slide 4 text

uWSGI 高機能な WSGI 対応 Web サーバ Python(WSGI) 以外にも対応 Ruby Perl (PSGI) PHP Java Lua

Slide 5

Slide 5 text

uWSGI --stats オプション[1] JSON 形式でメトリクスの出力をサポート 出力されるメトリクス Backlog (処理待ちリクエスト)、worker 数、処理リクエスト数に対応 Busy Worker, Idle Worker 累計処理リクエスト数 mackerel-plugin-uwsgi-vassal でサポート [1] "The uWSGI Stats Server — uWSGI 2.0 documentation" http://uwsgi- docs.readthedocs.io/en/latest/StatsServer.html

Slide 6

Slide 6 text

uWSGI Workers

Slide 7

Slide 7 text

uWSGI Requests

Slide 8

Slide 8 text

uWSGI Listen Queue

Slide 9

Slide 9 text

Gunicorn シンプルな WSGI 対応 Web サーバ uWSGI と違い Python(WSGI) のみ対応 --statsd_host オプション[1] Worker の状態(busy, idle) を区別できない [1] "Settings — Gunicorn 19.7.1 documentation"" http://docs.gunicorn.org/en/stable/settings.html#statsd-host

Slide 10

Slide 10 text

モニタリングのために WSGI ミドルウェア作った!

Slide 11

Slide 11 text

WSGI Status[1] アプリケーション(WAF)の前段に置く 通過するときにメトリクスを出力する uwsgi の stats と同じフォーマットでファイルに出力 [1] "wsgi_status 0.2.5 : Python Package Index" https://pypi.python.org/pypi/wsgi_status/

Slide 12

Slide 12 text

Gunicorn Workers

Slide 13

Slide 13 text

Gunicorn Requests

Slide 14

Slide 14 text

Python Web Application Monitoring uWSGI 細かなメトリクスを収集できる 設定に慣れが必要、運用が難しい Gunicorn WSGI status をミドルウェアとして挟む 設定項目が少ない、運用が簡単 uWSGI, Gunicorn 両方とも Mackerel でモニタリングできる!!

Slide 15

Slide 15 text

mackerel-plugin-uwsgi-vassal

Slide 16

Slide 16 text

Enjoy Python Hack!