Checksonの紹介

開発プロセスにおいて、自分が構築したシステムを監視することは非常に重要な部分です。何か問題が発生したときに、すぐに修正できるかどうかを知ることが大切です。

サーバー監視用のツールは既にたくさんありますし、ウェブアプリケーションやREST APIの監視ソリューションもたくさんあります。ただ、監視が求められるワークフローが複雑で、特に複数のシステムやプロトコルをまたがる場合、既存のツールでは十分でないことがよくあります。Checksonは、こういったシナリオを非常に柔軟に扱うことに焦点を当てています。監視チェックを設定する基本的な手順は次のとおりです:

  • お好きなプログラミング言語でスクリプトを書き、必要なライブラリを使用する
  • 期待通りに動くまでローカルでスクリプトを実行する
  • スクリプトをDockerイメージにラップして、レジストリにプッシュする
  • スクリプトが定期的にクラウドで実行されるようにChecksonを設定する
  • スクリプトが失敗した場合に通知を受ける

それだけです。

例を見てみましょう。購買プロセスを監視したいと想像してください。次のようなスクリプトを書きます。

  • REST API経由で注文を行う
  • 別のAPIを使用して注文が正常に処理されたかを検証する
  • たとえばMailTrapを使用して、確認メールが送信されたかを検証する
  • 注文をキャンセルする

Pythonでは、このようになるでしょう:

import requests
import os

def main():
  try:
    # 注文を行う
    response = requests.post('https://example.com/api/order', json={'product': '123'})
    response.raise_for_status()

    # 注文を検証する
    response = requests.get('https://example.com/admin-api/order/123')
    response.raise_for_status()

    if response.json()['status'] != 'confirmed':
      raise Exception('Order not confirmed')

    # メールを検証する
    email = get_latest_email_from_mailtrap()
    if 'Thank you for your purchase' not in email.subject or '123' not in email.body:
      raise Exception('Issue with email')

  except:
    os.exit(1)
  finally:
    # 注文をキャンセルする
    requests.delete('https://example.com/admin-api/order/123')


if __name__ == '__main__':
  main()

全画面モードにする

Checksonのチェックはしばしばスモークテストとして機能します。それらが失敗したとき、何か問題があることを知ることができ、さらなる調査を行うことができます。

ご覧の通り、多くのコンポーネントが同時にチェックされているにもかかわらず、スクリプトはとてもシンプルで読みやすく保たれています。また、ローカルで実行して期待通りに動作するまで繰り返せるので、開発がとても簡単です。その後、Dockerイメージにラップしてプッシュし、定期的に実行されるようにChecksonに渡すだけです。

Dockerfileはこんな感じになります:

FROM python:3.10-slim

COPY . /app
WORKDIR /app
RUN pip install requests

ENTRYPOINT ["python", "app.py"]

全画面モードにする

それから、イメージをビルドして、例えばDocker Hubにプッシュできます:

docker build -t someuser/my-checkson-check:1.0 .
docker push someuser/my-checkson-check:1.0

全画面モードにする

Checkson Web UIを使用するか、Checkson CLIを使用してチェックを設定できます:

checkson create order-check \
  --image someuser/my-checkson-check:1.0 \
  --email someuser@example.com

全画面モードにする

一行で、これにより10分ごとに実行される新しいチェックが作成され、通知チャンネルが設定されます。チェックが失敗した場合、メールを受け取ります。

ご覧の通り、私たちはかなり複雑なワークフローをシンプルなスクリプトでモデル化しました。また、チェックを作成するためにCheckson CLIを使用しました。後のブログポストでは、Dockerイメージの構築方法とCI/CDパイプライン内でのチェックの設定方法を探求します。

Checksonについての詳細は、checkson.ioで確認できます。

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/stefanhudelmaier/introducing-checkson-4oid