目次

ESXi6.0環境のデータストアを監視しSlackに通知するようにした


目次

家庭用サーバはESXi6.0u3で構築している。

6.5にアップデートしていないのは、蟹のNICチップドライバでカスタムISOを作る必要があるためである。そしてそれは色々とめんどくさいからでもある。

それはさておき、各仮想マシンのOS用途データストア(もといSSD)が160GBしかなく、貧弱。

放っておくと、3−6ヶ月で枯渇して肝心なときに停止しているため、週ごとに使用量を監視してSlackに連携するためのスクリプトを書いた。

利用したのは、以下のように、ESXiのWelcome画面。

当初mob画面を使えるようにして、SDKから引っ張れないかなと思っていたが、よくよくみたら、ESXiからマウントしているデータストアのファイルを取り出せるのだった。

ご丁寧に、各データストアの容量と空容量が表示されるのでそれを利用することにした。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
## esxiのデータストア情報を取得してSlackに通知
#
declare -a array=()
DIR={SCRIPT PATH}
arry=`curl -sik -H ‘Accept:application/json’ \
-u "username:password" \
-X GET https://${ESXi IP}/folder?dcPath=ha-datacenter | \
grep -oP "dsName.*" | \
sed -e "s/dsName.*DS[1-3]\">;/ /g" -e "s/<;\/a>;<;\/td>;
/ /g"; \  
-e ";s/<\/td>
/ /g" -e "s/<;\/td>;<;\/tr>;//g"|awk '{print}'`
URL="Slack のWebhookURL"
#複数のデータストアをマウントしている為、上記配列から監視したい対象のデータストアの容量のみ取得
#バイト単位のデータで表示されているため、GB単位に変更する
Num=`echo $arry|cut -d " " -f 12`
Num=`echo $Num/1024/1024/1024|bc`
curl -X POST --data-urlencode 'payload={"channel": "#esxi-check", \
"username": "監視さん", "text": " [データストア]は['$Num']GBの空容量だよ 枯渇に注意" }' $URL

データストア名= DS-1,DS-2,DS-3 といった名前を前提にスクレイピングしたのち、本当に欲しい(OS用途の)SSDのデータストアのデータのみを取得する為に、取得したの中身をcutしている。

※てかarryにしているけれど、多分配列になっていない。cutしているし。恥ずかしい…

ESXiはバイト単位でデータをブラウズしてくれる為、1024で割ってGBにして表示している。