こんにちは、SWX3人目の熊谷(悠)です。
CloudWatchモニタリングスクリプトを使用すると、収集したディスクスペースの使用状況がAWSコンソールの「CloudWatch > メトリクス > すべてのメトリクス > Linux システム > Filesystem, InstanceId, MountPath」にカスタムメトリクスとしてレポートできます。
今回、EC2からリモート(Direct Connect 経由でWindowsサーバへ)マウントしているファイルシステムがレポートされなかったので、AWSサポートに問い合わせた際の回答内容と対処方法です。
事前環境情報
$ cat /etc/system-release Amazon Linux release 2 (Karoo) $ uname -a Linux hogehuga.ap-northeast-1.compute.internal 4.14.77-81.59.amzn2.x86_64 #1 SMP Mon Nov 12 21:32:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ aws --v aws-cli/1.15.80 Python/2.7.14 Linux/4.14.77-81.59.amzn2.x86_64 botocore/1.10.79
$ ~/aws-scripts-mon/mon-put-instance-data.pl --version CloudWatch-PutInstanceData version 1.2.2
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/nvme0n1p1 30G 15G 16G 47% / /dev/nvme1n1 90G 17G 74G 19% /data //172.16.10.250/d/HOGE/HUGA/PIYO 500G 411G 90G 83% /mount
CloudWatchモニタリングスクリプトのcron設定変更前
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/ --disk-path=/data --from-cron > /dev/null 2>&1
AWS 認証情報の設定等CloudWatchモニタリングスクリプトを動作させる設定は完了済みです。
対処
ドキュメントに記載の通り、レポート対象として追加するマウント先ディスクパス--disk-path=/mount
を追加します。
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/ --disk-path=/data --disk-path=/mount --from-cron > /dev/null 2>&1
EC2にアタッチしたEBS等であれば上記設定の追記のみでメトリクスに追加できますが、
レポート対象にリモートマウント先が含まれている場合はCloudWatchモニタリングスクリプトを以下のように修正します。
# line:549 修正前 my @df = `/bin/df -k -l -P $df_path`; # 修正後 my @df = `/bin/df -k -P $df_path`;
原因
スクリプト内で行っている df
コマンドに付与されている -l
オプションによって対象がローカルファイルシステムに限定されていた為だったようです。
試しに実行してみると確かに/mount
のファイルシステムが出力されませんでした。
$ /bin/df -k -l -P / /data /mount ファイルシス 1024-ブロック 使用 使用可 容量 マウント位置 /dev/nvme0n1p1 31444972 14970380 16474592 48% / /dev/nvme1n1 94361600 17768200 76593400 19% /data
因みに$df_path
の中身は--disk-path=PATH
オプションで指定したパスですが、デバッグ用に以下の通りスクリプトに追記すると実行時に出力が確認できるそうです。
# line:316 $df_path .= ' '.$path; # 以下行を追記 print "df_path: $df_path"
$ ~/aws-scripts-mon/mon-put-instance-data_test.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/ --disk-path=/data --disk-path=/mount df_path: /df_path: / /datadf_path: / /data /mount Successfully reported metrics to CloudWatch. Reference Id: abcdefgh-ijkl-mnop-qrst-uvwxyz123456
サポートについて
Q.修正すると、本スクリプトはサポート対象外となるでしょうか?
A.本スクリプトはサンプルスクリプトとして提供させていただいているものであり、ベストエフォートでの対応とさせていただいております。今回の修正は軽微なものですので、今後お問い合わせいただく際に、本ケースの ID、スクリプトのバージョン、スクリプトの修正内容を共有していただくことで、他の者でもベストエフォートでの対応を行わせていただけるとかと存じます。
修正後も継続してサポートいただけるのは嬉しい限りですね!
「スクリプトのバージョン」と「スクリプトの修正内容」を共有すれば誰でも問い合わせが可能かな、と思いました。
参考
Amazon EC2 Linux インスタンスのメモリとディスクのメトリクスのモニタリング - Amazon Elastic Compute Cloud
熊谷 悠司 (記事一覧)