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 | |
| --status-as | 監視ステータスの上書き。たとえば UNKNOWN=CRITICAL と記述した場合、監視ステータスが UNKNOWN のときは CRITICAL になる。カンマ区切りで複数指定が可能 |
||
| --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 |
エージェントへの設定例
localhostの4224番ポートの接続をチェックし、接続に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