監視入門をHealth エンドポイントパターン
と
データベース監視、
インストール手順と、
前提
OS と
OS
# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core)
Python
# python -V Python 3.6.7
Django
# pip list | grep Django Django 1.11.20
インストールと、 設定
django-health-check
の
インストール
# pip install django-health-check ------------------ Collecting django-health-check Downloading django_health_check-3.12.1-py2.py3-none-any.whl (25 kB) Requirement already satisfied: django>=1.11 in .venv/lib/python3.6/site-packages (from django-health-check) (1.11.20) Requirement already satisfied: pytz in .venv/lib/python3.6/site-packages (from django>=1.11->django-health-check) (2019.1) Installing collected packages: django-health-check Successfully installed django-health-check-3.12.1
urls.py の
変更
ヘルスチェックURLをurls.py
に追記します。 urlpatterns += [ # healthcheck url(r'^health/', include('health_check.urls')), ]
settings.py の
変更
settings.py
にアプリケーションを 追加します。
django-health-check
は複数の アプリケーションに 分かれていて、 チェック対象の ミドルウェアを アプリケーション単位で 選択する 形式に なります。 INSTALLED_APPS = ( ... 'health_check', # required #'health_check.db', # stock Django health checkers DBに保持しないのでコメントアウト 'health_check.cache', 'health_check.storage', #'health_check.contrib.celery', # requires celery celeryは使用していない 'health_check.contrib.psutil', # disk and memory utilization; requires psutil DiskとMemoryの状況は確認したい #'health_check.contrib.s3boto3_storage', # requires boto3 and S3BotoStorage backend #'health_check.contrib.rabbitmq', # requires RabbitMQ broker #'health_check.contrib.redis', # required Redis broker )
ディスクと
# HEALCH_CHECK SETTINGS HEALTH_CHECK = { 'DISK_USAGE_MAX': 90, # percent 'MEMORY_MIN': 100, # in MB }
また、
pip install psutil
Traceback (most recent call last): File "manage.py", line 14, in <module> execute_from_command_line(sys.argv) File ".venv/lib64/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File ".venv/lib64/python3.6/site-packages/django/core/management/__init__.py", line 338, in execute django.setup() File ".venv/lib64/python3.6/site-packages/django/__init__.py", line 27, in setup apps.populate(settings.INSTALLED_APPS) File ".venv/lib64/python3.6/site-packages/django/apps/registry.py", line 116, in populate app_config.ready() File ".venv/lib64/python3.6/site-packages/health_check/contrib/psutil/apps.py", line 11, in ready from .backends import DiskUsage, MemoryUsage File ".venv/lib64/python3.6/site-packages/health_check/contrib/psutil/backends.py", line 4, in <module> import psutil ModuleNotFoundError: No module named 'psutil'
その他、
テスト実行
Django command でhealth_check
という コマンドが 用意されており、 CLIで ヘルスチェックの 実施が 可能です。 # python manage.py health_check CacheBackend ... working DefaultFileStorageHealthCheck ... working DiskUsage ... working MemoryUsage ... working
httpで
アクセスして テスト実行
https://www.monotalk.xyz/health/?format=json
のように、?format=json
を付与すると、 以下のようなjsonデータが 取得できます。 "CacheBackend": "working", "DefaultFileStorageHealthCheck": "working", "DiskUsage": "working", "MemoryUsage": "working"}
?format=json
なしでアクセスすると、 HTML形式で 以下のように 表示されます。 こちらは 実行時間も 取得できます。
httpで
アクセスする 際の 注意点
python manage.py health_check
の実行ユーザーと、 Webアプリの 実行ユーザーが 異なる 場合、 DefaultFileStorageHealthCheck の チェックが パーミッションの 問題で エラーに なります。
同一ユーザーで実行するか、 MEDIA_ROOT
のディレクトリの パーミッションを、 変更する 必要が あります。
Health Check の クライアント
Health Check のwebsite-monitor
と
URL監視は
- labnol/website-monitor: Website Uptime Monitor built with Google Apps Script
- How to Monitor your Website’s Uptime with Google Sheets - Digital Inspiration
参考
以下、
以上です。
コメント