Edited at

monit.serviceをsystemdで常時起動処理をさせるために色々メモ


systemdとは

linuxの起動処理やシステム管理を行う

前から使われていたのがSysvinit

現在、代替えとしてUbuntuはUpstart、Fedora 15やCentOS 7、Red Hat Enterprise Linux 7はSystemdです。


ユニットとは

centOS7でデーモンの制御対象のこと。systemctlコマンドで制御を行う。

以下のコマンドでファイル単位で確認できる。

$ systemctl list-unit-files -t service

monit.service enabled
NetworkManager-dispatcher.service enabled
NetworkManager-wait-online.service disabled
NetworkManager.service enabled

ここでenableになっているユニットは自動起動が有効との意味。無効になっているユニットはつまり他のユニットに依存するものなので自動起動の設定が不可能とのこど。

# ユーザごと個別の設定が可能。

# ここに同名のファイル(/usr/libのシンボリックリンク)を配置することにより優先される。
$ /etc/systemd/system
# RPMから直接ファイルが提供される場所であり、システムのデフォルト設定
$ /usr/lib/systemd/system


monitのプロセスが落ちても自動で起動させる方法

$ sudo cp -p /usr/lib/systemd/system/monit.service /etc/systemd/system/

$ sudo vi /etc/systemd/system/monit.service
[Service]セクションに "Restart=always" を追加して保存する
→ discが変更されたのでreload
$ sudo systemctl daemon-reload


monitを使うために注意するべき点

ネットワーク障害/アクセス集中による高負荷などで連続してモニタに失敗した場合monitのmonitorが止まることがあるため、以下のcronの設定が必要

*/30 * * * * /usr/sbin/monit monitor all


参考

http://www.unix-power.net/centos7/systemctl.html

http://equj65.net/tech/systemd-boot/