Djangoでの管理コマンドの実行の監視

多くの場合、多くのプロジェクトでバックグラウンドタスクが使用されます。 しかし、大多数は、何らかの理由で、監視を使用しません。 Sentry、NewRelic、ネイティブErrorReportingなどのサービスについて話している。 コマンドの実行時間、エラー、プロセスの完了方法に関するレポートはありません。 その結果、レポートまたはcrmに十分なデータがない場合、または統計が不完全/不正確である場合、プロジェクトがどのように正しく機能し、困惑するかは誰にもわかりません。 これは、常にではなく、すぐに顕著ではありません。 つまり、プロジェクトの完了後、ずっと後に発見されます。



ジュニアは常にサービスとその存在を知っているわけではありません。 しかし、それにもかかわらず、そのようなことを記録するツールの必要性はなくなりません。 正しいcrontabセットアップのように。 cron-aを使用してエラーを監視できますが、これらは単なるアラートですが、何が起こっているのかが必ずしも明確ではありません。 また、最初のエラーが発生した瞬間も示しません(後で他の誰かがアラートを構成した場合)。 さらに、特定の間隔でスクリプトがどのように機能したかの進行状況を知ることが重要です。 たとえば、統計を使用して、データベースで原価計算と日次挿入を実行します。 毎日多くのデータがあります。 肥大化したテーブルのため、ブレーキはすぐに始まります。 コードをリファクタリングする必要があることは明らかです。パーティション、インデックスを作成し、いくつかの最適化を実行できます。 また、スクリプトの実行と動作をしばらく監視します。 過去の投稿で、PinbaEngineについて言及しました。 しかし、すべてのプロジェクトがそのような束を設定できるわけではありません。 設定しても、コードを変更し、この作成のためにインターフェースをキャストする必要があります。 いつも欲しくないもの。 この投稿では、 django-mmcと呼ばれる小さなバッテリーと、これらを適切に構成する方法についてお話したいと思います。



プロジェクト作成



$ pip install virtualenvwrapper $ mkvirtualenv habr $ pip install Django $ django-admin.py startproject habr
      
      





私は、経験豊富な人でさえ、virtualenvwrapperのようなおいしいものを使用していないことに気付きました。 便利なもの。 あなたはここでそれについて読むことができます



バッテリーの取り付け



 $ cd habr/ $ pip install django-mmc
      
      







mmcバッテリーをINSTALLED_APPSに追加し、データベースを同期します。

 $ ./manage.py syncdb --noinput
      
      





ここで、アプリの初期化まで、initファイルのどこかで必要なライブラリコンポーネントを初期化します。

インポートを追加し、habr / __ init__.pyファイルを呼び出します。

 from mmc.mixins import inject_management inject_management()
      
      





これでセットアッププロセスが完了しました。 どうやら複雑なことはなく、既存のプロジェクトにバッテリーを簡単に接続できます。



確認する



確認するには、いくつかのコマンドを実行し、Web Northを開始する必要があります。

 $ ./manage.py createsuperuser $ ./manage.py syncdb $ ./manage.py runserver
      
      





これで、プロジェクトの管理部分で結果を検証するだけになりました。

これを行うには、アドレスhttp://127.0.0.1:8000/admin/mmc/mmclog/にアクセスします



結果



そして最後に、私たちが目指していた結果:





cronのセットアップ



cronから通知を受信する場合は、crontabの先頭に次の行を追加します。

 SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games MAILTO=habr@local.host
      
      





最初の2行は、パスと実行可能ファイルを検索するパスを示しています。 MAILTOは、バックグラウンドタスクの出力結果の送信元アドレスを示します。



最新バージョンでは、ホストまたは特定のコマンドを無視する機能が追加されています。 ログには、スクリプトが食べたピークメモリが表示されます。

管理パネル+ Sentryで指定されたメールアドレスへの通知の可能性。



このバッテリーは、プロジェクト内の問題のある領域を特定し、どのチームが正しく動作しないか、特定の期間に落ちるかを見つけ、この問題を解消するのに役立ちました。 初心者と経験豊富なユーザーの両方に役立つことを願っています。



All Articles