チェックプラグイン - check-tcp

check-tcp はTCPによるサーバーとの接続監視を行うプラグインです。

指定可能なオプション

オプション 省略形 説明 初期値
--service サービス名を指定(対応サービス一覧を参照)
--hostname -H 疎通確認先のホスト名もしくはIPアドレス
--port -p 疎通確認先のポート番号
--send -s サーバーに送信する文字列
--expect-pattern -e サーバーからのレスポンスに期待する正規表現パターン
--quit -q サーバーから切断する際に送信する文字列
--ssl -S TLS接続の要否 false
--unix-sock -U unixソケット
--no-check-certificate 証明書検証の実施要否 false
--timeout -t 接続タイムアウト時間(秒) 10
--maxbytes -m 指定バイト数以上のデータを受信した場合にコネクションを切断
--delay -d データ送信してから応答をポーリングするまでの待ち時間(秒)
--warning -w Warningとする応答時間(秒)
--critical -c Criticalとする応答時間(秒)
--escape -E --quitで指定した文字列に\n \r \t \\ を含む場合にエスケープを行う(未指定の場合は--quitで指定した文字列の末尾に\r\nを追加) false
--error-warning -W プラグインが異常終了した際のアラートステータスをWARNINGに設定する CRITICAL
--expect-closed -C ポート/unixソケットが閉じられているかを確認する。閉じているならOK、開いているなら--error-warningオプションの設定によってCriticalまたはWarningとなる。このオプションは接続のみを検査する false

対応サービス一覧

--serviceに対応したサービス名を指定すると、各サービス名に対応したオプションによるチェックをします。

サービス名 --port --send --expect-pattern --quit --ssl
FTP 21 ^220 QUIT
POP 110 ^\+OK QUIT
SPOP 995 ^\+OK QUIT
IMAP 143 ^\* OK a1 LOGOUT
SIMAP 993 ^\* OK a1 LOGOUT
SMTP 25 ^220 QUIT
SSMTP 465 ^220 QUIT
GEARMAN 7003 version\n \A[0-9]+\.[0-9]+\n\z

エージェントへの設定例

localhost4224番ポートの接続をチェックし、接続に3秒以上かかる場合はWarning、5秒以上かかる場合はCriticalとする設定は以下のようになります。

[plugin.checks.check-tcp-sample]
command = ["check-tcp", "-H", "localhost", "-p", "4224", "-w", "3", "-c", "5"]

上記設定をターミナルなどから直接実行して確認するには、以下のように実行してください。

check-tcp -H localhost -p 4224 -w 3 -c 5

IPv6アドレスを指定する場合は[::1]のように半角括弧[]で囲む形式で指定します。

[plugin.checks.check-tcp-v6-sample]
command = ["check-tcp", "-H", "[::1]", "-p", "4224", "-w", "3", "-c", "5"]

Tips

check-tcpプラグインは接続チェックの際に、簡易的なメッセージのやりとりの正しさをチェックできます。

--service オプションを指定すると、対応しているプロトコルに応じたメッセージのチェックを併せて行いますが、--send--expect-patternを合わせることで独自プロトコルの監視にも代用できます。

例えばHTTPレスポンスのステータスラインのリーズンフレーズが想定したメッセージであることをチェックするには、以下のような設定ができます。

[plugin.checks.tcp_http404]
command = ["check-tcp", "-H", "localhost", "-p", "80", "-s", "GET / HTTP/1.1\\r\\n\\r\\n", "-e", "HTTP/1.1 404 Bad Request", "-E"]

事前に動作確認する場合は、以下のように実行します。

check-tcp -H localhost -p 80 -s "GET / HTTP/1.1\r\n\r\n" -e "HTTP/1.1 404 Bad Request" -E

リポジトリ

https://github.com/mackerelio/go-check-plugins/tree/master/check-tcp