Upptimeとは、OSSの死活監視ソフトウェアです。
GitHubのサービス(GitHub Actions,GitHub Pages,GitHub Issues)のみを使って、サービスごとに以下のような死活監視を行うことができます。
使用するGitHubのサービス | 機能 |
---|---|
GitHub Actions | 5分毎に特定のWebサイト監視 |
GitHub Pages | 監視ステータスを表示するWebサイト |
GitHub Issues | サイトがDownした時の報告 |
その他にも、監視するHTTPステータスコード、Slackやメール、SMS通知などを設定することができます。
私は、サイト監視に「UptimeRobot」と言うSaaSの無料プランを使っていますが、
と言う人には「Upptime」が向いているかなと思います。
(ちなみに、UptimeRobotはこちら)
それでは自身のリポジトリを作成して、Upptimeを構築してみます。
Upptimeを構築する
公式サイトのGetting startedに沿って進めていきます。
簡単に構築することが出来て、10分あればデフォルトの状態を作成することができます。
リポジトリ作成
上記のリポジトリに移動して、「Use this template」をクリックします。
画面が遷移したら、以下の設定をします。
- Repository name: 任意でOK
- Include all branches: チェック
この状態で「Create repository from template」をクリックすると、
「Repository name」で入力した名前で、自身のリポジトリが作成されます。
作成したリポジトリに移動したら、必要な設定をしていきます。
まずはGitHubのWeb上で行う設定をしていきます。
GitHub Pages設定
UpptimeのWebサイトは、デフォルトでgh-pagesブランチに作成されます。
このブランチをGitHub Pagesで公開する設定をします。
リポジトリの「Settings」にあるGitHub Pagesの設定に移動します。
「Source: gh-pages /(root)」で「Save」をクリックします。
Secrets設定
Upptimeで使用されるGitHub Actionsでは、監視やWebサイトの作成だけでなく、リポジトリ更新も行います。
つまり、GitHub Actionsの処理中にリポジトリを編集する権限が必要になるので、Actionsで使用するPAT(Personal Access Token)を作成する必要があります。
Personal Access Token の作成
GitHubのサイトから、右上のアイコンをクリックして「Settings」を開きます。
次に、「Developer settings」 > 「Personal access tokens」に移動して、「Generate new token」をクリックします。
GitHubのパスワードが求めらるので、入力すると以下の画面になります。
「Note」には、何のtokenであるか分かるような名前を入力します。
(私は「upptime」とだけ入れました)
「repo」と「workflow」にチェックを入れたら、画面下までスクロールして、「Generate token」をクリックするとtokenが作成されます。
このtokenはリポジトリの設定に必要となるので、メモっておきましょう。
また、このtokenがあればリポジトリにアクセスできてしまうので、取り扱いには注意してください。
Repository Secrets
作成したPATをRepository Secretsに登録します。
リポジトリに戻って、「Settings」 > 「Secrets」の順に開きます。
「New repository secret」をクリックして、
- Name: GH_PAT
- Value: 先ほど作成したPAT
を入力し、「Add secret」をクリックします。
以上で、リポジトリに関する設定は完了です。
設定ファイルの修正
Upptimeの設定は、リポジトリ配下にある.upptimerc.yml
の1つのファイルで定義されています。
masterブランチでこのファイルを修正することで、全体の設定をすることが出来ます。
私の.upptimerc.yml
は以下のようになっています。
ここでは、Upptimeを構築する上で必須となる項目を設定していきます。
変更する箇所を抜粋したものは以下になります。
owner: ymmmtym # GitHub username repo: upptime # GitHub repository名 sites: # 監視するサイトの名前とURLをリスト形式で書く - name: Google url: https://www.google.com status-website: cname: <カスタムドメイン名> # カスタムドメインを使用しない場合はコメントアウトする baseUrl: /<リポジトリ名> # カスタムドメインを使用する場合はコメントアウトする name: Upptime # 監視サイトの名前
私の場合は、ymmtym.github.io
のドメインにymmmtym.com
と言うカスタムドメインを使っていますが、
Upptimeには使用していないので、cnameはコメントアウトしてbaseUrlをコメントインしています。
修正する内容をまとめると以下のようになります。
項目 | 説明 |
---|---|
owner | GitHubのユーザ名 |
repo | リポジトリ名 |
sites | 監視するサイトのリストを name:, url: 形式で追加 |
(status-website) | ここから監視サイトの設定 |
cname | カスタムドメイン名 |
baseUrl | /リポジトリ名 |
name | 監視サイト名 |
上記の修正をしてcommitすると、"Setup CI"というworkflowが実行され、完了するとUpptimeが構築されています。
http://<GitHubユーザ名>.github.io/<リポジトリ名>
にアクセスすると、Upptimeにアクセスできます。
サイト監視については、Upptimeのwebサイトが更新されるだけでなくREADME.md
も更新されるので、かっこいいREADMEが勝手に作成されるところも、少し気に入っています。
また、サイトがDownするとIssueが作成されます。
HTTPステータスコードと、Response Timeも書いてありますね。
サイトが復旧すると自動的にIssueがCloseされます。
さいごに
以上でUpptimeを構築することが出来ました。
デフォルトの状態ではありますが、監視の詳細設定や通知方法なども解説できればと思います。