1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Uptime RobotのAPIが割と便利だった話【備忘録】

Last updated at Posted at 2023-03-22

はじめに

LINEのMessaging APIを使ってポモドーロ・テクニック タイマーbotを作ったときに Uptime Robot API が便利だったので備忘録も兼ねて書いていきたいと思います。

使ったもの

・Python
・Flask
フレームワークはFlaskを使用しました。
・Render.com
Render.comにデプロイしました。

・Messaging API
今回はpushメッセージと応答メッセージを使用しています。
・Uptime Robot API
今回最も役に立ったAPIです。render.comでは15分間リクエストがないとスリープしてしまうことへの対策として使用しました。

botのイメージ

img.jpg

Uptime Robot API

コード

import requests

class uptime_robot_monitor():
    ### 初期化 ###
    def __init__(self, key):
        self.url = "https://api.uptimerobot.com/v2/newMonitor"
        self.key = key
          
        self.payload = "api_key=" + self.key + "&format=json&type=1&url='''URL'''&friendly_name=My%20Monitor&interval=300&timeout=10"
        self.headers = {
            'cache-control': "no-cache",
            'content-type': "application/x-www-form-urlencoded"
            }
        
    def new_monitor(self):
        response = requests.request("POST", self.url, data = self.payload, headers = self.headers)

        print(response.text)
        
        self.monitor_id = response.json()["monitor"]["id"]
        
    def delete_monitor(self):
        self.delete_url = "https://api.uptimerobot.com/v2/deleteMonitor"
          
        self.delete_payload = "api_key=" + self.key + "&format=json&id="+str(self.monitor_id)
        self.delete_headers = {
            'cache-control': "no-cache",
            'content-type': "application/x-www-form-urlencoded"
            }

        delete_response = requests.request("POST", self.delete_url, data = self.delete_payload, headers = self.delete_headers)

        print(delete_response.text)

self.keyはアカウント作成後に発行できるAPIキーを入れます。
self.payloadについては以下の表のようになります。

パラメータ 補足
type 1:HTTP(S)
friendly_name モニター名
interval 監視間隔(秒)
timeout 監視時間(秒)

self.monitor_idはモニターのIDで削除する際に必要になります。

Uptime Robot APIの利用に至った経緯

" ポモドーロテクニック "では一般的に25分タスクをこなし3~5分の休憩をはさみ再び25分タスクをこなす……ということを反復するようです。今回のケースではユーザーからの "start" メッセージ以降webhookへのリクエストが無い状態が続くのですが、これが少々厄介な点で、render.com の freeプランでは15分間リクエスト無しでスリープ状態になってしまうため、そのままでは15分後に停止してしまいます。
 タイマースタート後も何かしらのリクエストを送り続けられれば…という中で調べていると Uptime Robotというのを知りました。これを使えば定期的(5分おきなど)にデプロイ先のwebhookURLに対してモニターを立て監視し続けることができる=リクエストを送り続けられる点が良いなと感じました。ところが、アカ作成後にモニターを立てると監視は連続して行われるようで、これがまたちょっとした懸念点でした。というのも、render.com の freeプランでは任意の1つのアカウントで運用している全てのwebサービスで月750時間までという制限があります。一月あたり31日として24時間なので24×31=744になるため、残り6時間となります。他のwebサービスをそこまで運用しているわけではないので、モニターを連続して立てておいても良いのですが、なんとなくタイマーを使わない時間がもったいない気がして、タイマーをスタートした段階でモニターを立て、タイマーが終了した段階でモニターを削除する ことで時間の面は改善できるかと思いAPIを利用することにしました。というのが今回の経緯です笑

おわりに

今回は Uptime Robot APIについて備忘録を兼ねて書いてきました。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?