Kompira

Menu Menu

Enterprise Technical information

ジョブフローの簡単な例 ディスクの容量をチェックする

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

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

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

 

| __node__ = ./server1 |
["whoami"] ->
print($RESULT)

 

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

さてディスク容量をチェックするためのコマンドを書いていくことにします。ここでは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 | 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}'" ] ->
[ msg = $RESULT ] ->
{ if (msg == '') |
  then: print("OK")
  else: print("** WARNING **") -> print(msg)
}

 

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

 

| threshold = 80 |

 

先のジョブフローは次の様になります。

 

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

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

 

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

パラメータ枠

 

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

システム運用の実務においてサーバーの監視を行う場合は、nagiosやzabbixなどの監視ツールを使用することが多いかと思いますが、複数台あるサーバーのあるコマンドの実行結果をとりあえず見てみたいときや、何らかの事情で対象サーバーに監視ツールのエージェントをインストールできない場合に重宝します。

スタートガイド

Kompiraジョブフローの基礎

ジョブフローの簡単な例

Kompiraの機能

外部との連携