monitで監視しているプロセスをunmonitorしてメンテナンスする


monitでプロセス監視（落ちてたら再起動する）設定をしていると、メンテナンス時に勝手に立ち上げてくれてしまったり、逆に面倒な事が起きるので、その場合の手順を纏めておきます。

参考：[CentOS 6.5にmonitをインストールしてプロセス監視をする](http://qiita.com/ksworks/items/0f3bbfa9e0ba49b5ef06)

前提条件は、`monit`のWebインタフェースが空いていて、コマンドからのモニター設定が可能になっている事です。

※コマンドからじゃなくて直接Webでunmonitor/monitorするのでもいいのだけども、大概メンテナンスするときってコマンドライン使っていると思うので、そのまま出来た方が便利

ここでは、仮に`varnish`のメンテナンス(設定変更とかバージョンアップとか)で監視を停止する場合を想定します。

### 監視状況の確認(status/summary)

```bash:状態確認
$ sudo service varnish status
varnishd (pid  12371) を実行中...
$ sudo monit summary | grep varnish
Process 'varnish'                   running
$ sudo monit status
(略)
Process 'varnish'
  status                            running
  monitoring status                 monitored
  pid                               12371
  parent pid                        1
  uptime                            1m 
  children                          1
  memory kilobytes                  83940
  memory kilobytes total            172900
  memory percent                    4.4%
  memory percent total              9.2%
  cpu percent                       0.0%
  cpu percent total                 0.0%
  data collected                    Sat Jul dd hh:mm:ss yyyy
```

簡単に状態を確認する場合は`monit summary`で見るのが早いです。プロセス名で`grep`しておけば、一行で確認できます。

詳細な状況が見たいのであれば`monit status`で表示できますが、メンテナンスの為の事前状態確認としては、ここまで見る必要はないでしょう(^_^;)

### 監視停止(stop/unmonitor)

```bash:監視とサービスの停止
$ sudo monit unmonitor varnish
$ sudo monit summary | grep varnish
Process 'varnish'                   not monitored
$ 
$ sudo service varnish status
varnishd (pid  12371) を実行中...
$ 
$ sudo monit stop varnish
$ sudo monit summary | grep varnish
Process 'varnish'                   not monitored
$ sudo service varnish status
varnishd は停止しています
```

`monit unmonitor`で監視のみの停止が出来ます。`monit stop`で、監視だけでなくてサービス停止もしてくれます。

通常、メンテナンスする場合は一気に落としてしまうと思うので、`monit stop`の方がてっとり早い気がします。

### 監視再開(start/monitor)

```bash:監視とサービスの起動
$ sudo monit start varnish
$ sudo service varnish status
varnishd (pid  12841) を実行中...
$ sudo monit summary | grep varnish
Process 'varnish'                   initializing
$ sleep 60
$ sudo monit summary | grep varnish
Process 'varnish'                   running
$ 
$ sudo monit unmonitor varnish
$ sudo monit summary | grep varnish
Process 'varnish'                   not monitored
$ sudo monit monitor varnish
$ sleep 60
$ sudo monit summary | grep varnish
Process 'varnish'                   running
```

こちらは完全に逆パターンで、`monit start`でサービス再開とモニタ再開を両方してくれますし、`monit monitor`でモニタのみの再開になります。

initialize状態は次の監視周期でrunningに(正常に動いていれば)変わります。

こちらは、メンテナンス後にいきなり監視も再開というのも乱暴なので、事前に動作確認は別途(`service XXXX start`などで)確認した上で、`monit monitor`で再開する方が多い気がします。

### 参考資料：USAGE

```bash:usage
$ monit -h
Usage: monit [options] {arguments}
Options are as follows:
 -c file       Use this control file
 -d n          Run as a daemon once per n seconds
 -g name       Set group name for start, stop, restart, monitor and unmonitor
 -l logfile    Print log information to this file
 -p pidfile    Use this lock file in daemon mode
 -s statefile  Set the file monit should write state information to
 -I            Do not run in background (needed for run from init)
 -t            Run syntax check for the control file
 -v            Verbose mode, work noisy (diagnostic output)
 -H [filename] Print SHA1 and MD5 hashes of the file or of stdin if the
               filename is omited; monit will exit afterwards
 -V            Print version number and patchlevel
 -h            Print this text
Optional action arguments for non-daemon mode are as follows:
 start all      - Start all services
 start name     - Only start the named service
 stop all       - Stop all services
 stop name      - Only stop the named service
 restart all    - Stop and start all services
 restart name   - Only restart the named service
 monitor all    - Enable monitoring of all services
 monitor name   - Only enable monitoring of the named service
 unmonitor all  - Disable monitoring of all services
 unmonitor name - Only disable monitoring of the named service
 reload         - Reinitialize monit
 status         - Print full status information for each service
 summary        - Print short status information for each service
 quit           - Kill monit daemon process
 validate       - Check all services and start if not running

(Action arguments operate on services defined in the control file)
```