Symbolノード証明書モニタリングツール

松本一将
Opening Line
Published in
7 min readSep 28, 2022

Symbolノード証明書モニタリングツールというのを使ってみたいと思います。
github: https://github.com/ishidad2/SYMBOL-CERT

はじめに

この記事はSymbolノードをsymbol-bootstrapで建てた事がある人が対象です。
symbolノードは構築する際にノードSSL証明書というものが必要になります。ノードSSL証明書の有効期限はノードを立ち上げてから約1年(375日後)となっているようです。
このノードSSL証明書は期限切れになる前に自ら更新する必要があります。(詳しくはこちら→https://nemtus.com/bootstrap-renewcertificates/)
※ ノードSSL証明書が期限切れになると、チェーンとの通信が停止し、ノードはフォークした状態になります。期限切れになると、エラーログが出力されます。

今回試す「SYMBOL-CERT」はノードSSL証明書の期限を定期的にチェックして期限前になると通知を行ってくれるツールとなっています。

目次

  1. 事前準備
  2. Quick Start
  3. 実際に通知してみる

事前準備

実行環境

  • OS:Ubuntu 20.04.4 LTS(Symbolノードを実行している環境と同等)

Slack Incoming Webhook URL取得方法

現在の通知方法にはSlackWebHookのみのようです。

SlackWebHookのURLは以下を参考に取得してください。

普段からSlackを使っている人は簡単にできると思います。
もし自身がSlackの管理者でない場合には管理者の人にBotを作ってもらいURLを教えてもらうか、自身で新たにワークスペースを作成しても良いでしょう。
ご自身の環境に合わせて調整してください。

Quick Start

それでは、実際にGithubのQuick Startを習ってやってみます。

まずは、docker-compose.ymlの例を見ていきましょう。

version: "3"
services:
symbol-cert:
image: ishidad2/symbol-cert:latest
environment:
SLACK_WEB_HOOK: "*****************"
HOST: "***************" # IP address or FQDN(xxxx.com xxxx.co.jp)
LIMIT_DAY: 30
# STAGE: 'production' # Don't use production until staging works
volumes:
- /var/run/docker.sock:/var/run/docker.sock
working_dir: /home/docker

上記のYAMLファイルで重要なのは、以下の箇所です。

...
SLACK_WEB_HOOK: "*****************"
HOST: "***************" # IP address or FQDN(xxxx.com xxxx.co.jp)
LIMIT_DAY: 30
# STAGE: 'production' # Don't use production until staging works
...

SLACK_WEB_HOOK

HOST

  • ここは対象としたいサーバーのFQDNかIPアドレスを指定します。(通常は自分のSymbolノードのURLを設定)
    例)sym-main-02.opening-line.jp or 13.68.239.64

LIMIT_DAY

  • ここはノードSSL証明書の有効期限が近づいてきた際に何日前から通知を行うかの設定のようです。数値で設定をします。
    例)100日前から通知して欲しい場合 LIMIT_DAY:100

STAGE: ‘production’
- こちらは次の手順で実際に通知を確認出来ててからコメントを外します。

実際に通知してみる

私の環境の場合、以下のような設定を行いました。(SLACK_WEB_HOOKは悪用されるのを防ぐため公開しないように注意してください)

version: "3"
services:
symbol-cert:
image: ishidad2/symbol-cert:latest
environment:
SLACK_WEB_HOOK: "https://hooks.slack.com/services/T043**--*****++Q/B043Y2JHLRJ/kv**********+++oc"
HOST: "sym-main-02.opening-line.jp" # IP address or FQDN(xxxx.com xxxx.co.jp)
LIMIT_DAY: 30
# STAGE: 'production' # Don't use production until staging works
volumes:
- /var/run/docker.sock:/var/run/docker.sock
working_dir: /home/docker

以下のコマンドを実行して、コンテナを実行します。

docker-compose up -d

コンテナが作成されたら、テストスクリプトを実行します。

docker-compose exec symbol-cert bash ./test.sh

無事に通知が飛べばOKです。

通知が飛ばない場合は、 SLACK_WEB_HOOK のURLが間違っているか、 HOST の指定が正しくない場合ありますので正しい値を設定し直してください。

ここまで確認できたら、一度コンテナを落としてSTAGEをproductionにします。
STAGE:productionにすることによって、1日1回ノードSSL証明書のチェックが(午後00:10にノードSSL証明書の確認、午後00:20にSlackへ通知を行うかどうかが)実行されるようです。

docker-compose down

コメント(#)を外す

...
STAGE: 'production' # Don't use production until staging works
...

再度実行

docker-compose up -d

後はSYMBOL-CERTがノードSSL証明の確認を自動で行ってくれ、証明書の有効期限がLIMIT_DAYで指定日付より近くなったらSlackへ通知が飛んできます。

ちなみに、STAGE: ‘production’後にテストスクリプトを実行すると、コンソールにノードSSL証明書の有効期限は表示されますが、Slackへの通知はありませんでした。
(これは ノードSSL証明書の有効期限が LIMIT_DAY: 30 で指定した30日を切っていないためだと思われます)

--

--