CloudMonkeyを利用して、スナップショットの作成日を取得する
クラウドで毎日スナップショットを取得していますが、たまに失敗している場合があるので、スナップショットを作成した日時を取得してメールするようにしたい。スナップショットの情報は「CloudMonkey」で取得してその情報を加工してメールで飛ばすスクリプトを作成します
cloudmonkeyは「CloudMonkeyをインストール」の記事でインストール方法を紹介していますので参考にして下さい
スナップショットの情報は、以下のように「cloudmonkey list snapshots」で取得できます
$ cloudmonkey list snapshots count = 5 snapshot: name = www01_test id = xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx account = xxxxxxxxxxxxxxxxx created = 2023-04-26T05:10:30+0900 domain = xxxxxxxxxxxxxxxxx domainid = xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx intervaltype = DAILY physicalsize = xxxxxxxxxx revertable = False snapshottype = DAILY state = BackedUp tags: virtualsize = xxxxxxxxxxx volumeid = xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx volumename = xxxxxxxxxx volumetype = DATADISK zoneid = xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx ================================================================================
上記の情報を変数に入れて、加工して以下のようにメールを送信するスクリプトを作成しました
$ vim snapshot_info.sh #!/bin/bash snapshot_info=`cloudmonkey list snapshots filter=name,created` while read -r line; do # name情報をテキストに出力 if [[ $line == name* ]]; then echo $line >> /var/tmp/snapshots_list.txt fi #createdをテキストに出力。日付のフォーマットは 2023/04/26 12:00:00のに変更 if [[ $line == created* ]]; then t_created=`echo "$line" | awk -F "=" '{print $2}'` snapshot_date=`date -d "$t_created" +"%Y/%m/%d %H:%M:%S"` echo "created = $snapshot_date" >> /var/tmp/snapshots_list.txt # created 2日以上古い場合は警告 ut_created=$(date -d "$snapshot_date" +%s) now=$(date +%s) days_old=$(( (now - ut_created) / 86400 )) if [[ $days_old -ge 2 ]]; then echo "[Warning] Snapshot $snapshot_date is $days_old days old." fi # 改行 echo "" >> /var/tmp/snapshots_list.txt fi done <<< "$snapshot_info" # MAIL subject="Cloud Snapshot list" cat /var/tmp/snapshots_list.txt | mail -s "$subject" admin@example.com
簡単に説明すると、以下になります
- 「cloudmonkey list snapshots」でスナップショットの情報を取得して変数(snapshot_info)に入れます
- 変数(snapshot_info)を呼び出して、「name」の文字を含む場合はテキストファイル(/var/tmp/snapshots_list.txt)に出力します
- 「created」の文字を含む場合は、その値を取得します。また日付のフォーマットを"%Y/%m/%d %H:%M:%S"として見やすくします
- 日付をテキストファイルに出力します
- 作成日がスクリプトの実行日より2日より前の場合は警告メッセージを、テキストファイルに出力します
- 変数の値が無くなるまで2~5の処理を繰り返します
- 最後にテキストファイルの内容をメール送信します
ディスカッション
コメント一覧
まだ、コメントがありません