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?

GASとスプシでお手軽Symbolノード監視

Posted at

はじめに

Google SpreadSheetとGASを使って手軽にSymbolブロックチェーンのDualノードを監視する試み。
GASで定期実行しつつ、ノードを監視してエラーがあったらスプレッドシートに記載&通知できます。

監視内容

  • 死活監視: ノードAPIへのリクエストタイムアウト
  • ヘルスチェック: DB・APIの状態監視
  • ブロック高監視: 他ノードとの同期遅延検出
    • 他のノードとの差分を取るため2つ以上のノードを設定してください。他人のノードでOK
    • ただし、その他人のノードのエラーも通知されます。。。
  • SSL証明書: 期限切れの検出

必要なもの

  • Googleアカウント
  • 監視したいSymbolノードのURL
  • (オプション) Slack通知用のWebhookまたはBot Token
    • 無い場合はメールで通知します

セットアップ手順

1. Googleスプレッドシートの準備

1-1. 新しいスプレッドシートを作成

  • Google Driveにアクセスし、新しいスプレッドシートを作成
  • シート名を mainnet に変更

1-2. スプレッドシートの設定

以下のTSVデータをコピーして、A1セルから貼り付けてください:

ノード監視シート		基準ブロック高	=max(G4:G)		ブロックしきい値	5			
									
	ノードURL	Status	ErrorType	DB	API	BlockHeight	エラー発生日時	エラー最終通知日時	無効
	https://your-node1.example.com:3001	Running		up	up	1,670,000			
	https://your-node2.example.com:3001	Running		up	up	1,670,000			

こんな感じ(D1セルは数式です)

image.png

1-3. プルダウンの設定

必須ではないですが、以下の列にデータ入力規則を設定しておくと色分けされてわかりやすいです。

image.png

C列(Status):

  • Running
  • Error
  • Delay

E列(DB):

  • up
  • down
  • unknown

F列(API):

  • up
  • down
  • unknown

J列(無効):

  • 無効
  • (空白)
    • 無効と入力するとそのノードに対するチェックはされません

2. Google Apps Scriptの設定

2-1. GASプロジェクトの作成

  1. スプレッドシートから「拡張機能」→「Apps Script」を選択
  2. 新しいGASプロジェクトが作成されます

2-2. コードの追加

GitHubからコードを取得:
以下のリンクからGASコードをコピーしてください:
GitHub - Symbol Node Monitoring Code

2-3. プロパティの設定(任意)

GASの設定で、プロパティストアに以下の値を設定できます:

設定方法: GAS画面左メニューの「設定」→「スクリプトプロパティ」

image.png

プロパティ名 説明 必須
EMAIL_ADDRESS 通知先メールアドレス 任意(Slack通知設定ずみの場合は通知しない)
SLACK_WEBHOOK_URL SlackのWebhook URL 任意(Slack Botで通知する場合は不要)
SLACK_TOKEN SlackのBot Token 任意(WebhookURLで通知する場合は不要)
SLACK_CHANNEL 通知先Slackチャンネル 任意(WebhookURLで通知する場合は不要)

何も設定しないとトリガーを設定したGoogleアカウントのGmailに通知されます。

3. Slack通知の設定(任意)

3-1. Webhook URLを使用する場合

  1. Slackワークスペースの設定から「アプリ」を選択
  2. 「Incoming Webhooks」アプリを検索・追加
  3. 通知したいチャンネルを選択してWebhook URLを取得
  4. GASプロパティストアのSLACK_WEBHOOK_URLに設定

3-2. Bot Tokenを使用する場合

  1. Slack APIでアプリを作成
  2. Bot Tokenを取得
  3. GASプロパティストアのSLACK_TOKENSLACK_CHANNELに設定

4. トリガーの設定

4-1. 定期実行の設定

  1. GAS画面左メニューの「トリガー」を選択
  2. 「トリガーを追加」をクリック
  3. 以下の設定で作成:
    • 実行する関数: main
    • イベントのソース: 時間主導型
    • 時間ベースのトリガーのタイプ: 分ベースのタイマー
    • 時間の間隔: 5分おき

image.png

4-2. 権限の許可

初回実行時に、Googleアカウントへのアクセス許可が求められるので承認してください。

使い方

ノードの追加

  1. スプレッドシートのB列に監視したいノードURLを追加
  2. 自動で監視が開始されます

ノードの無効化

J列に「無効」と入力すると、そのノードの監視を停止できます。

通知の仕組み

エラー通知

  • ノードに異常が検出されると、最初のエラーから30分間隔で通知
  • 件名:🚨 Symbol Node Monitoring - Error - [ドメイン名]

復旧通知

  • エラー状態から正常に復旧した場合に1回だけ通知
  • 件名:✅ Symbol Node Monitoring - Recovery - [ドメイン名]

監視内容の詳細

1. 死活監視

  • 各ノードに5秒以内のレスポンス要求
  • タイムアウト時は「Error」状態に設定

2. ヘルスチェック

  • /node/health エンドポイントでDB・API状態を確認
  • 異常時は「Error」状態に設定

3. ブロック高監視

  • /chain/info エンドポイントでブロック高を取得
  • 設定しきい値より遅延している場合「Delay」状態に設定

4. SSL証明書監視

  • SSL証明書のエラーを検出
  • 期限切れ等の場合「Error」状態に設定

カスタマイズ

しきい値の調整

  • スプレッドシートG1セルでブロック遅延のしきい値を変更可能
  • デフォルトは5ブロック

通知間隔の変更

  • Code.jsNOTIFICATION_INTERVAL定数で変更可能
  • デフォルトは30分(30 * 60 * 1000ミリ秒)

testnet環境の監視

  • testnetという名前のシートを作成すると通知なしで監視可能
  • main関数内の該当行のコメントアウトを解除
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?