ウェブアプリの外形監視をするときには、外形監視用のエンドポイントURLを用意することが多いと思います。
外形監視用のエンドポイントでは、アプリからデータベースなど各種ミドルウェアへの接続が正常であるかなどをチェックしますが、チェック項目はサービスによって異なることがほとんどです。
django-health-checkを使うと、汎用の外形監視用のエンドポイントをすぐに用意でき、設定によりチェック項目を変更できます。
インストール
pip install django-health-check
試してみる
今回は health_check.db
を使って、データベース接続のチェックを実施してみます。
アプリの有効化とURL追加
settings.py:
INSTALLED_APPS = [ # ... 'health_check', # 必須 'health_check.db', # データベースのチェックをする場合に追加 ]
urls.py:
from django.urls import path, include urlpatterns = [ # ... path('ht/', include('health_check.urls')), ]
DBマイグレーション
health_check.db
はチェック用のテーブルを作成して操作するので、アプリを INSTALLED_APPS
に追加したら、 migrate
を実行します。
python manage.py migrate
実行する
runserverを起動して、 /ht/
にアクセスすると、チェック結果が表示されます。
デフォルトではHTMLで表示されます。
?format=json
のようにクエリ文字列を指定すると、結果をJSON形式で返すこともできます。
何をチェックしているのか
health_check.db
は実際にどのような操作をしてチェックしているのか、ソースコードを確認してみます。
https://github.com/revsys/django-health-check/blob/master/health_check/db/backends.py
- TestModelというモデルのレコードを1件作成(=INSERT)
obj.save()
- 作成したレコードを削除(=DELETE)
obj.delete()
このようなコードでした。「データベースに接続できること」「データベースに書き込みができること」をチェックしていますね。
データベース以外にもcache, storage, celery, boto, rabbitmq, redisなど、標準で用意されているバックエンドがあります。
カスタムのバックエンドを作成するのも簡単なので、使いやすそうです。