GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

healthchecks

healthchecks – pingを待ち受けるDjangoアプリケーションで、pingが遅れているときに警告を送信し

投稿日:

pingを待ち受けるDjangoアプリケーションで、pingが遅れているときに警告を送信し ます。https://healthchecks.io

健康チェック

healthchecksはあなたのcronの仕事の監視役です。 これは、あなたのcronジョブからのpingとWebインターフェイスをリッスンするWebサーバーです。

それはここに住んでいます: http : //healthchecks.io/

ビルディングブロックは次のとおりです。

  • Python 3
  • Django 1.11
  • PostgreSQLまたはMySQL

開発のためのセットアップ

これらは、開発環境でDjangoアプリケーションのヘルスチェックを設定するための手順です。

  • プロジェクトコードとvirtualenv用のディレクトリを準備する:

      $ mkdir -p ~/webapps
      $ cd ~/webapps
    
  • 仮想環境を準備します(virtualenvを使うと、pipを得ることができます。すぐに使用して要件をインストールします)。

      $ virtualenv --python=python3 hc-venv
      $ source hc-venv/bin/activate
    
  • プロジェクトコードをチェックアウト:

      $ git clone https://github.com/healthchecks/healthchecks.git
    
  • virtualenvに要件(Django、…)をインストールする:

      $ pip install -r healthchecks/requirements.txt
    
  • healthchecksはデフォルトでSQLiteデータベースを使用するように設定されています。 PostgreSQLまたはMySQLデータベースを使用するには、 hc/local_settings.pyファイルを作成および編集します。 必要に応じてコピーして編集できるテンプレートがあります:

      $ cd ~/webapps/healthchecks
      $ cp hc/local_settings.py.example hc/local_settings.py
    
  • データベーステーブルとスーパーユーザーアカウントを作成します。

      $ cd ~/webapps/healthchecks
      $ ./manage.py migrate
      $ ./manage.py createsuperuser
    
  • 開発サーバーを実行します。

      $ ./manage.py runserver
    

http://localhost:8080でサイトが実行されているはずです。スーパーユーザとしてDjango管理サイトにログインするには、 http://localhost:8080/adminにアクセスしてくださいhttp://localhost:8080/admin

構成

サイトの設定はhc/settings.py保存されていhc/settings.py 追加の設定はhc/local_settings.pyファイルから読み込まれます(存在する場合)。 このファイル(ファイルシステムのsettings.pyすぐ隣にある)を作成し、必要に応じて設定を上書きすることができます。

上書きするための便利な設定キーは次のとおりです。

SITE_ROOTは、電子メールや通知で使用するpingの完全修飾URLを構築するために使用されます。 例:

SITE_ROOT = "https://my-monitoring-project.com"

SITE_NAMEのデフォルト値は「Mychecks」で、テンプレート全体で使用されます。 インストールをパーソナライズするには、それを自分の名前に置き換えます。 例:

SITE_NAME = "My Monitoring Project"

REGISTRATION_OPENは、サイト訪問者が新しいアカウントを作成できるかどうかを制御します。 プライベートヘルスチェックインスタンスを設定しているが、公にアクセス可能である必要がある場合(たとえば、クラウドサービスがpingを送信できる場合など)、これをFalse設定します。

新しいユーザー登録を閉じると、選択的にユーザーをチームアカウントに招待することができます。

データベース構成

データベース設定はhc/settings.py保存され、 hc/local_settings.py上書きすることができます。 デフォルトのデータベースエンジンはSQLiteです。 PostgreSQLを使用するには、存在しない場合はhc/local_settings.py作成し、必要にhc/local_settings.pyて次のように変更します。

DATABASES = {
    'default': {
        'ENGINE':   'django.db.backends.postgresql',
        'NAME':     'your-database-name-here',
        'USER':     'your-database-user-here',
        'PASSWORD': 'your-database-password-here',
        'TEST': {'CHARSET': 'UTF8'}
    }
}

MySQLの場合:

DATABASES = {
    'default': {
        'ENGINE':   'django.db.backends.mysql',
        'NAME':     'your-database-name-here',
        'USER':     'your-database-user-here',
        'PASSWORD': 'your-database-password-here',
        'TEST': {'CHARSET': 'UTF8'}
    }
}

また、 hc/local_settings.pyを使用して、次のように環境変数からデータベース構成を読み取ることもできます。

import os

DATABASES = {
    'default': {
        'ENGINE':   os.environ['DB_ENGINE'],
        'NAME':     os.environ['DB_NAME'],
        'USER':     os.environ['DB_USER'],
        'PASSWORD': os.environ['DB_PASSWORD'],
        'TEST': {'CHARSET': 'UTF8'}
    }
}

メールを送信する

ヘルスチェックは電子メールメッセージを送信できる必要があるため、ログインリンクとアラートをユーザーに送信できます。 hc/local_settings.py SMTPサーバーの設定を入れます:

EMAIL_HOST = "your-smtp-server-here.com"
EMAIL_PORT = 587
EMAIL_HOST_USER = "username"
EMAIL_HOST_PASSWORD = "password"
EMAIL_USE_TLS = True

詳細については、Djangoのドキュメント「 Sending Eメール」を参照してください。

ステータス通知の送信

healtchecksには、 sendalerts管理コマンドが付属しています。このコマンドは、状態を変更するチェックのためにデータベースを継続的にポーリングし、必要に応じて通知を送信します。 アクティブ化されたvirtualenv内で、 sendalertsコマンドを手動で実行することができます。

$ ./manage.py sendalerts

本番環境では、 supervisorやsystemdなどのプロセスマネージャーからこのコマンドを実行することをお勧めします。

データベースのクリーンアップ

時間とともに使用されるhealthchecksデータベースのサイズは大きくなります。 非アクティブなユーザーアカウント、ユーザーに割り当てられていない古いチェック、送信する電子メールメッセージのレコード、受信したpingのレコードなど、古いデータをプルーニングすることができます。 タスクごとに別々のDjango管理コマンドがあります:

  • api_pingテーブルから古いレコードを削除します。 チェックごとに、最近のpingを100個保存します:

    $ ./manage.py prunepings
    
  • ユーザーに割り当てられていない2時間以上経過した小切手を削除します。 そのようなチェックは、ランダムな訪問者とウェルカムページを読み込んでいるロボットの副産物であり、決してアカウントを設定しません。

    $ ./manage.py prunechecks
    
  • 送信された通知の古いレコードを削除します。 チェックごとに、同じチェックのために保存された最も古いpingより古い通知を削除します。

    $ ./manage.py prunenotifications
    
  • 次のいずれかの条件に該当するユーザーアカウントを削除します。

  • アカウントは6か月以上前に作成され、ユーザーはログインしていません。これらは、サインアップ時に無効な電子メールアドレスを入力したときに発生します。

  • 最後のログインは6ヶ月以上前であり、アカウントにはチェックはありません。 ユーザーがアカウントを使用するつもりはなく、削除したいと考えているします。

    $ ./manage.py pruneusers
    

データでこれらのコマンドを最初に試してみると、実際のデータベースではなく、データベースのコピーでテストすることをお勧めします。 本番環境では、定期的に自動化されたデータベースバックアップを設定する必要があります。

統合

不和

Discordの統合を有効にするには、以下が必要です。

  • 新しいアプリケーションをhttps://discordapp.com/developers/applications/meに登録してください
  • DiscordアプリケーションにリダイレクトURIを追加します。 URI形式はSITE_ROOT/integrations/add_discord/です。 たとえば、 localhost:8000開発サーバーを実行している場合、リダイレクトURIはhttp://localhost:8000/integrations/add_discord/
  • あなたのDiscordアプリのクライアントIDとクライアント秘密を調べてください。 それらをあなたのhc/local_settings.pyファイルにDISCORD_CLIENT_IDおよびDISCORD_CLIENT_SECRETフィールドとして追加してください。

プッシュオーバー

Pushover統合を有効にするには、以下が必要です。

  • https://pushover.net/apps/buildに新しいアプリケーションを登録する
  • アプリケーションでサブスクリプションを有効にして、URLサブスクリプションタイプを有効にしてください
  • hc/local_settings.pyにアプリケーショントークンとサブスクリプションURLをPUSHOVER_API_TOKENおよびPUSHOVER_SUBSCRIPTION_URLとしてPUSHOVER_API_TOKENPUSHOVER_SUBSCRIPTION_URL

電報

  • BotFatherに話しかけてテレグラムボットを作成します。 ボットの名前、説明、ユーザー画像を設定し、 “/ start”コマンドを追加します。

  • ボットを作成したら、ボットの名前とトークンを取得します。 hc/local_settings.pyファイルに、 TELEGRAM_TOKENフィールドとTELEGRAM_TOKENフィールドとして追加します。

  • settelegramwebhook管理コマンドを実行します。 このコマンドは、テレグラムのsetWebhook API呼び出しを呼び出して、テレグラムにチャネルメッセージを転送する場所を通知します。

    $ ./manage.py settelegramwebhook
    Done, Telegram's webhook set to: https://my-monitoring-project.com/integrations/telegram/bot/
    

これを行うには、 SITE_ROOTが正しく、 “https://”スキームを使用する必要があります。







-healthchecks
-, , , , ,

執筆者: