web-dev-qa-db-ja.com

ディスクが90%を超えていっぱいになっている場合、cfengine3にlow_disk_spaceクラスを追加するにはどうすればよいですか?

ディスクがほぼいっぱいになったときにアクションを実行できるように、cfengine3にクラスを設定したいと思います。

2
joeforker

これが私がそれをした方法です。 repair_failedニーモニックは、修復を試行しないため、「必要な空きディスク容量が少ないことが検出されました」には実際には適合しませんが、結果としてクラスを追加する方法のようです。余分なohnoクラスがなくても、ディスクの空き容量を完全に詳しく説明できますが、最終的には、条件への反応として、一時ディレクトリやバキュームデータベースなどをクリアしたいと思います。

bundle agent storage
{
storage:
    "/" volume => low_disk_space;

reports:
    ohno::
       "Oh noes!";
}

body volume low_disk_space {
        freespace => "10%";
        repair_failed => { "ohno" };
}
3
joeforker

パーティションの使用可能なスペースを返す関数 diskfree を使用できます

これは簡単な例です(はい、私にはたくさんの空き容量があります):

body common control {
    bundlesequence => { "test_free_space" };
}

bundle agent test_free_space {
    vars:
        "free" int => diskfree("/home");
        "min_free_space" int  => "200000000";
    classes:
        "not_enough_size" expression => isgreaterthan("$(min_free_space)", "$(free)");

    reports:
        not_enough_size::
            "There is not enough space left on /home";
}

よろしく

2
Nicolas Charles