この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の9日目です。
それでは9日目は check-tcp
です。
check-tcpはTCP Socketを監視してくれるプラグインです。
インストールと設定手順
至れり尽くせりなので公式ドキュメントに手順が書いてあるのじゃ!!
使い方
至れり尽くせりなので公式ドキュメントに使い方が書いてあるのじゃ!!
オプション一覧
README.mdにあるけど表記しました。
# check-tcp -h Usage: check-tcp [OPTIONS] Application Options: --service= Service name. e.g. ftp, smtp, pop, imap and so on -H, --hostname= Host name or IP Address -p, --port= Port number -s, --send= String to send to the server -e, --expect-pattern= Regexp pattern to expect in server response -q, --quit= String to send server to initiate a clean close of the connection -S, --ssl Use SSL for the connection. -U, --unix-sock= Unix Domain Socket --no-check-certificate Do not check certificate -t, --timeout= Seconds before connection times out (default: 10) -m, --maxbytes= Close connection once more than this number of bytes are received -d, --delay= Seconds to wait between sending string and polling for response -w, --warning= Response time to result in warning status (seconds) -c, --critical= Response time to result in critical status (seconds) -E, --escape Can use \n, \r, \t or \ in send or quit string. Must come before send or quit option. By default, nothing added to send, \r\n added to end of quit Help Options: -h, --help Show this help message
ベーシックなSocket監視
check-tcpは指定したProtocolやPortの死活監視です。 例としてTCPポート 80のhttpへの接続に10秒以上かかった場合のアラートとftpの死活監視の例です。
[plugin.checks.tcp_80] command = "check-tcp --hostname localhost --port 80 --warning 10 --critical 10" [plugin.checks.ftp] command = "check-tcp --service=ftp -H localhost"
このように気軽に死活監視をすることができます。 これは自分自身の場合はプロセス監視でもいいですが外部から見たい時に特に有効です。 httpは外形監視がありますがメールやftpが正しく動いているか確認したい場合にぜひご活用ください。
NLBはpingを返さない
これは読んで字のごとく…
実際にMackerelでもスライドにあるとおり、NLBを使っているのでcheck-tcpを有効活用しています。 NLBを使っていたり、今後も使う予定がある方はぜひご検討ください!
Gearmanの監視
ミドルウェアの監視の例ですと GEARMAN は --service
でサポートされています。
check-tcpの便利なシーンにミドルウェアのポート監視があります
皆さんもよく使うミドルウェアの監視の仕組みとしてcheck-tcpをご検討ください。
fluentdを監視する
check-tcpで実際に監視すると良いミドルウェアの代表例がfluentdです!
fluentdの forward
のデフォルトは 24224
ですし HTTP input
の場合は 9880
をデフォルトで使います。
そこで利用しているPortを監視することでfluentdの死活監視が出来ます。
これは公式にも推奨された方法です。
# check-tcp -H localhost -p 24224 TCP OK: 0.000 seconds response time on localhost port 24224
このようにシンプルにミドルウェアを死活監視することができるのもcheck-tcpのメリットです。
UNIX Domain Socketを監視する
check-tcpは基本的にはTCPソケットを監視するためのプラグインです。
しかし -U
または --unix-sock=
のオプションでUNIX Domain Socket指定することができます。
つまりUNIX Domain Socketを監視することができるのです。
UNIX Domain Socketは例えばアプリケーションとmemcachedやRedisが同居している場合にアプリケーションから接続するときはUNIX Domain Socketを利用する手法がよく取られます。
この手法はTCP Socketを使うよりもスループットが上がります。
そうなると勿論、接続しているUNIX Domain Socketも監視したいですよね。
そこでもcheck-tcpは大活躍です!!
ちなみにUDP ソケットの監視は対応していません。
このようにcheck-tcpプラグインはシンプルな実装ですが色んな使い方が柔軟に出来るプラグインです。 使い方を覚えて是非ご活用ください。
それでは明日は忘れた頃に助けてくれるディスク監視です。