ディスクの容量をチェックする

今回はターゲットのサーバーにログインしてディスクの利用状況を調べ、利用率が一定の水準を超えて溢れそうであれば警告の表示を行うジョブフローを作成していきます。


動作確認環境

ソフトウェア バージョン
Kompira Enterprise 1.6.2.post4
OS CentOS 8.2.2004

または

ソフトウェア バージョン
Kompira Enterprise 1.6.8
OS CentOS Stream 8

先に、リモートサーバーに接続する設定を行います。詳細は「[事前準備] 接続先のサーバーを登録する」をご覧ください。「server1」という名前の「ノード情報」のオブジェクトが作成されているものとして進めます。

まずはリモートサーバーでコマンドを実行する書き方から確認していきましょう。以下は「[事前準備] 接続先のサーバーを登録する」の接続確認ジョブフローです。

| __node__ = ./server1 |

["whoami"] ->
print($RESULT)

このジョブフローでは、リモートサーバーで “whoami” コマンドを実行して結果を表示します。
1行目: 制御変数 “__node__” にノード情報のオブジェクトを代入します。
2行目: 実行したいコマンドを [” “] の中に記載します。
3行目: 直前処理の結果の標準出力が $RESULT に格納されるので、これを表示します。

さて、それでは上記のジョブフローと同様に、ディスク容量をチェックするためのコマンドを書いていくことにします。ここでは df コマンドを利用します。

まず、df コマンドのターミナルでの実行例は以下のようになります。

$ df
Filesystem     1K-blocks    Used Available Use% Mounted on 
/dev/sda2       18208184 3907916  13368684  23% /
tmpfs             506224     100    506124   1% /dev/shm
/dev/sda1         289293   95986    177947  36% /boot

次に、左から数えて5番目の使用率がしきい値を超えた行のみを表示するようにしてみます。以下はディスク使用率が80% を超えた場合にのみその行が表示される df コマンドの例です。

$ df | awk 'NR != 1 && int($5) > 80  {print $0}'

df コマンドの出力を awk でフィルターしています。具体的には先頭行をカットし、5番目の値が80を上回った行のみを表示しています。(awk コマンドの詳細はここでは解説しませんので、必要に応じてヘルプ等をご確認ください。)

それではこのコマンドをジョブフロー内で使い、さらに if 文で表示を出し分けてみましょう。どのファイルシステムも使用率が80以下なら、”OK” を表示します。

| __node__ = ./server1 |

["df | awk 'NR != 1 && int($5) > 80 {print $0}'"] ->
{ if $RESULT == '' |
  then:
    print("OK")
  else:
    print("** WARNING **") ->
    print($RESULT)
}

しきい値が “80” に固定されていると使いにくいので、これをパラメータ化してみます。

| threshold = 80 |

先ほどのジョブフローは以下のようになります。

| __node__ = ./server1 |
| threshold = 80 |

["df | awk 'NR != 1 && int($5) > $threshold {print $0}'"] ->
{ if $RESULT == '' |
  then: 
    print("OK")
  else: 
    print("** WARNING **") ->
    print($RESULT)
}

以下の画像のように、ジョブフローの画面にパラメータの表示枠が増えています。実行の際にはこの値を変更する事が可能です。(ジョブフローに記載した “80” はデフォルト値になります。)

ここではチェック用の df コマンドを実行して結果を表示してみましたが、これ以外のメンテナンス用のコマンドを実行することも可能です。また実行時に条件を変更する場合には、パラメータ化しておくと扱いが楽になります。

実際にシステム運用においてサーバーの監視を行う場合は、Nagios や Zabbix などの監視ツールを使用することが多いかと思います。

しかし今回のジョブフローは、複数台存在するサーバーにおいて、とあるコマンドの実行結果をとりあえず見てみたいときや、何らかの事情で対象サーバーに監視ツールのエージェントをインストールできない場合に重宝します。

TOP