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

Python Web Application Monitoring in Mackerel

i2tsuki
April 27, 2017

Python Web Application Monitoring in Mackerel

i2tsuki

April 27, 2017
Tweet

More Decks by i2tsuki

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. 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

    View Slide

  6. uWSGI Workers

    View Slide

  7. uWSGI Requests

    View Slide

  8. uWSGI Listen Queue

    View Slide

  9. 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

    View Slide

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

    View Slide

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

    View Slide

  12. Gunicorn Workers

    View Slide

  13. Gunicorn Requests

    View Slide

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

    View Slide

  15. mackerel-plugin-uwsgi-vassal

    View Slide

  16. Enjoy Python Hack!

    View Slide