[WTFutil]Urlcheckモジュールを利用してターミナル上でURLの監視を行う

2022.11.20
  • t_o_dと申します。
  • 普段WTFutilというツールを利用して、端末(ターミナル等)内であらゆる情報を集約して可視化できるようにしています。
  • 今回はUrlcheckというURL監視モジュールを利用する方法を記録いたします。

結果

  • 本記事で行う手順で以下のように対象のURLの応答ステータスをターミナル上に表示することが可能です。

  • また監視ログが以下のようなファイルとして出力されます。

環境

  • mac OS Monterey 12.6

手順

インストール

  • ※インストール済みの方はスキップしてください。
  • 以下のコマンドで最新のWTFutilをインストールします。
brew tap wtfutil/wtfutil
brew install wtfutil
  • インストール後、以下のコマンドで起動確認及び設定ファイル確認を行います。
# 起動
# 抜ける時は「q」押下
wtfutil

# 設定ファイル確認
# 起動時に自動で作成されます。
ls ~/.config/wtf

config.yml

対象リンクの準備

  • 監視対象のURLを用意します。
  • 今回は以下を対象とします。
    • https://status.slack.com/api/v2.0.0/current : slackステータスチェック
    • localhost:8000 : 8000ポートで動作するHTTPサーバー
    • localhost:8001 : 8001ポートで動作するHTTPサーバー
  • 上記の「localhost:800*」はターミナルで以下のコマンドをうち用意します。
    • ※以下以外で用意できる方はスキップしてください。
# 8000ポート
python3 -m http.server 8000

# 8001ポート
# 別端末を起動してうつ。
python3 -m http.server 8001

設定ファイルの記述

  • 対象のURLが用意できたらWTFutlの設定を行います。
  • WTFutilでは単一のyamlファイルに表示したい情報の設定を記述していきます。
  • そのため~/.config/wtf/config.ymlに以下の内容を記述します。
wtf:
  colors:
    border:
      focusable: darkslateblue
      focused: orange
      normal: gray
  grid:
    columns: [32, 32, 32, 32, 90]
    rows: [10, 10, 10, 4, 4, 90]
  refreshInterval: 1
  mods:
    urlcheck:
      enabled: true
      urls:
        - https://status.slack.com/api/v2.0.0/current
        - http://localhost:8000
        - http://localhost:8001
      position:
        top: 0
        left: 0
        height: 2
        width: 2
      refreshInterval: 10
  • 上記の内容で今回の表示内容に対応する箇所は「urlcheck」の部分です。
  • refreshInterval」の部分で監視サイクル時間を設定しています。
    • ※今回の設定では10秒にしています。
  • ※既存の設定に組み込む場合、position設定を任意の値に設定してください。

起動

  • 設定ファイル記述後、再度wtfutilというコマンドをうち以下のような表示になっていることを確認します。

  • 次に8001ポートで動作しているHTTPサーバーを以下のコマンドで終わらせます。
# 8001ポートのkill
kill $(lsof -i :8001 -t)
  • config.ymlの「refreshInterval」に設定した時間後、以下のようにWTFutilでの画面上の8001ポートのリンクがERRORとなっていることを確認します。

ログファイルの確認

  • urlcheckモジュールではUIとは別に監視ログがテキストファイルとして出力されます。
  • 場所は~/.config/wtfにあるため、以下のコマンドで確認します。
cat ~/.config/wtf/log.txt 

yyyy/MM/DD hh:mm:ss log.go:23: [urlcheck] http://localhost:8001: Head "http://localhost:8001": dial tcp [::1]:8001: connect: connection refused
*************************
  • ここまで正常に動作すれば完了です。

まとめ

  • WTFutilはyamlを設定するだけで簡単にターミナルにあらゆる情報を集約することが可能です。
  • 普段よく見るURLを設定するだけでコマンド1つで迅速に確認できるので非常に便利だと感じました。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。