ESXiの特定のログで特定のメッセージが出た際にvCSAからメールが送信されるように仕込む
前回 と 前々回 の記事は標題の内容が実施したかったための準備だった。 本記事で紹介するスクリプトを理解するためには前提になるので、まだ読んでいない方は一読してほしい。 この記事では、ESXi の任意のログファイルに任意の文字列が記録された際に、vCSA 経由で任意のメッセージを送信するための雛形となるスクリプトを紹介する。 雛形スクリプト 以下のスクリプト (monitorLogFileAndInvokeAction.sh) を作成した #!/bin/sh logfile="/var/run/log/vmkernel.log" message="hogehogehoge" vcsa_ipaddress="<vcsa_ip>" id_rsa_filepath="<path_to_privatekey>" sender_address="<address sent from>" rcpt_address=<address sent to> action(){ ssh -i $id_rsa_filepath $vcsa_ipaddress "echo $1 | sendmail -v -f $rcpt_address $sender_address" } monitorLogFileAndInvokeAction () { tail -fn0 $logfile | \ while read line; do echo "$line" | grep "$message" if [ $? = 0 ] then action "`date`" fi done } monitorLogFileAndInvokeAction 太字に部分は、環境や目的に合わせて適切な値を代入する必要がある。 今回の例では、監視するログファイルとして vmkernel.log を指定し、トリガーとなるメッセージとして h...