Geekflare APIを使用してサイトがダウンしたときに通知を受け取る方法は?

公開: 2021-08-22

ユーザーがあなたのサイトにアクセスしようとします、あなたは何が起こったのか知っていますか? 表示されません。 以前は理解できなかったエラーがいくつかあります。 ユーザーはイライラしてサイトを離れます。 だから、あなたはそれで何人かの忠実なユーザーを失いました。

この問題を解決する方法は? ユーザーがサイトを見つける前に、どのようにしてサイトについて知ることができますか?

2つの可能な方法があります:

数ドルを費やしてもかまわない場合は、StatusCakeやここに記載されている他のソリューションのような監視ソリューションを利用できます。 ただし、開発者であるか、毎月の費用を支払う準備ができていない場合は、Geekflare APIを利用できます–サイトは稼働していますか?

サイトは稼働していますか? APIは、サイトがさまざまな場所からアップしているかダウンしているかをチェックします。

Gmail経由でサイトがダウンしたときにすぐに通知するPythonコードを紹介します。

Is Site Upの探索から始めましょう API。

サイトは稼働していますか? API

APIをチェックする前に、PythonでAPIを操作するためのrequestsというパッケージをインストールする必要があります。 ただし、Pythonだけを使用する必要はありません。 お好みの言語を使用できます。 ただし、APIリクエストを行うために必要なものを設定していることを確認してください。

したがって、Pythonを使用している場合は、コマンドpip install requestsを使用してrequestsパッケージをpip install requests

他の言語のセットアップを完了し(Python以外を選択した場合)、次の手順に進みます。

次に、GeekflareAPIページに移動します。

GeekflareAPIページ
GeekflareAPIページ

Is Site Up?を含むさまざまなタイプのAPIを見つけることができます この記事で関心のあるAPI。 Geekflare APIを使用するには、RapidAPIを介して取得できるAPIキーが必要です。

GET API KEYボタンをクリックして、RapidAPIに移動します。

GET APIKEYボタン
GET APIKEYボタン

RapidAPIは、次のように新しいタブで開きます。

RapidAPI
RapidAPI

APIキーを取得するためのアカウントを作成する必要があります。 アカウントがない場合は、RapidAPIでアカウントを作成します。 アカウントを作成したら、アカウントにサインインします。

RapidAPIログイン
RapidAPIログイン

あなたはIsSite Upを見つけるでしょう? 私たちが探しているすべてのGeekflareAPIの最上位にあるAPI。 アクティブでない場合は、利用可能な検索を使用して検索し、クリックします。

右側でAPIの使用法を取得します。 右側の[コードスニペット]セクションから[リクエスト付きPython]を選択します。

プログラミング言語
プログラミング言語

Pythonを使用していない場合は、それぞれのパッケージで好みの言語を選択してください。

Is Site Up?を呼び出すためのコードを取得します API。 後で簡単にコードを追加できるように、少し変更してみましょう。 Pythonで変更されたコードを見てください。

 import requests API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "YOUR_API_KEY" } payload = r'{"url": "https://www.geekflare.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data)

上記のコードでRapidAPIから独自のAPIキーでAPI_KEYを交換してください。 ユーザーごとに異なります。 次のようにして、ヘッダパラメータセクション下RapidAPIでそれを見つけるでしょう。

APIキー
APIキー

以下に示すように、サンプルコードに同じAPIキーがあります。

APIキー
APIキー

キーをコピーして、上記のコードに追加します

マルチロケーション

上記のコードは、サイトが1つの場所(米国ニューヨーク州)から稼働しているかどうかを確認します。 ただし、リクエスト本文の場所を使用して、さまざまな場所からテストできます。

他の利用可能な場所は、イングランド(ロンドン)とシンガポールです。 次のように、サイトのURLとともに位置データを渡すことができます。

 { "locations": [ "uk", "us", "sg" ], "url": "geekflare.com" }

リストから好きな場所を渡すことができます。

サイトが稼働しているかどうかに関係なく、データをフェッチするAPIリクエストを作成するためのコードが完成しました。 次に、サイトがダウンしたときにメールを送信するコードをもう少し記述します。 さあ行こう。

サイトがダウンしているときにメールを受信する

PythonでGmailを介してメールを送信する方法の詳細なチュートリアルを見つけるGmailからメールを送信するために特別に設計されたyagmailと呼ばれるパッケージを使用する次のコードを使用します。

Gmailアカウントからメールを送信する前に、 [安全性の低いアプリを許可する]オプションをオンにする必要があります。 ここでオンにできます。

コードを見てみましょう。

 def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "[email protected]" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, )

yagmailの完全なチュートリアルはここにあります。

これで、APIリクエストとメール送信のコードができました。 次のステップは、APIリクエストから不正なステータスを受け取ったときにsend_mailを呼び出すことです。

では、サイトがダウンまたはアップしていることをどのようにして知ることができますか? Is Site Upをリクエストすると、 API、それは次のようにいくつかのデータで応答します。

 {'timestamp': 1629556759685, 'apiStatus': 'success', 'apiCode': 201, 'message': 'Site is up.', 'meta': {'url': 'https://www.geekflare.com', 'followRedirect': False, 'test': {'id': 'eu0frmah05mids55elkjgevkzd8ur3vk'}}, 'data': [{'country': 'United States', 'city': 'New York', 'description': 'Site is up.', 'statusCode': 301, 'reasonPhrase': 'Moved Permanently'}]}

その中にメッセージと呼ばれるキーがあります。 キーメッセージの値は、サイトが稼働しているか停止しているかを示します。 したがって、次の2種類のメッセージになります。

  • サイトが稼働しています。
  • サイトがダウンしています。

私はあなたが今それを手に入れたと思います。 そのため、「サイトがダウンしています。」というメッセージが表示されたらメールを送信します。 最終的なコードは次のようになります。

 import requests import yagmail API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "API_KEY" } payload = r'{"url": "https://www.abcd.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "[email protected]" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down.': ## extracting the errors from different locations locations_data = data['data'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below.\n\n" for location in locations_data: mail_content += f"{location['city']}, {location['country']} - {location['error']}\n" mail_content += "\nCheck the error and resolve them as soon as possible." send_mail(mail_content)

メールの内容は自由に更新できます。 サイトがダウンするたびにメールの送信が完了しました。 上記のコードで受信したサンプルメールをご覧ください。

サイトダウンメール
サイトダウンメール

しかし、まだ問題があります。

コードを実行して、サイトが稼働しているかどうかを確認する必要があります。 どのくらいの頻度で実行しますか? ええ、それはあなたの好みに依存します。 1時間ごとにチェックする必要があるとしましょう。

ターミナルまたはコマンドラインを開いて、1時間ごとにコードを実行できます。 しかし、それは反復的なプロセスであり、退屈なものです。 そして時々私達はそれをチェックするのを忘れることができます。 したがって、1時間ごとにコードを自動的に実行する必要があります。

ここでは、cronを使用して、1時間ごとにコードを自動的に実行できます。 設定方法を見てみましょう。

cronセットアップ

UNIXベースのオペレーティングシステムでcronを設定する手順を見てみましょう。

  • ターミナルを開きます。
  • コマンドcrontab -eを実行すると、ターミナルでcrontabファイルが開きます。
  • キーiを押して、INSERTモードに入ります。
  • 次に、cronパターン、Pythonディレクトリ、およびコードファイルディレクトリを追加します。 以下の例をご覧ください。

0 * * * * /usr/bin/python3 /home/sample.py

cron
cron

1時間ごとにコードを実行するパターンを設定しました。 ただし、要件に基づいて毎分に設定する必要がある場合があります。 したがって、Crontab Guruまたは他のcronツールを使用して、スケジュールのcronパターンを生成できます。

それでおしまい。 サイトがダウンしたときに通知を受け取るためのセットアップが完了しました。

結論

cronを使用して、24時間年中無休で実行されるクラウドサーバーでスクリプトを定期的に実行するようにスケジュールし、サイトがダウンしたときに電子メールで通知を受け取ります。 自動化は多くの時間を節約し、私たちのために働きます。 したがって、この記事で行ったようにそれを利用してください。

ハッピーモニタリング