Munin のエラーを Nagios で通知する方法

# 背景
保守運用業務にて、リソース（CPU、メモリ、ディスク使用率、各種IO etc）監視でのエラーをアラート通知システム（エラーと復旧時にメール通知する）に乗せたという話です。
リソース監視に Munin を、アラート通知に Nagios を使用しています。

（既存のリソース監視・アラート通知システムに大きな改修を加えないという条件のもと実施したので、Munin、Naigos、プラグイン各種のインストールの説明は省いています。）
# システム構成
![Network diagram.png](https://qiita-image-store.s3.amazonaws.com/0/57642/80c5f802-1179-3614-d8ab-dbb4f50d36ad.png)
# Munin とは
リソース監視を行うミドルウェアです。（[デモはこちら](http://demo.munin-monitoring.org/munin-monitoring.org/demo.munin-monitoring.org/)）
過去を含めたリソースを可視化できて見やすいですが、エラーが発生した場合のアラート通知をつけることが割と手間がかかります。
<img width="1432" alt="munin.png" src="https://qiita-image-store.s3.amazonaws.com/0/57642/c745e8e8-a85e-e841-bbd4-c962464a6b31.png">
# Nagios とは
統合監視ツールです。（[デモはこちら](http://nagiosxi.demos.nagios.com/nagiosxi/index.php?locale=en_EN) ID:jdoe,PW:jdoe）
ホスト、リソース監視ができ、エラー発生時・復旧時のメール通知をサポートしているので、使いやすいです。リソースの可視化はできません。
<img width="1426" alt="nagios.png" src="https://qiita-image-store.s3.amazonaws.com/0/57642/016a76bc-c4c1-3f99-966b-abcd106f98eb.png">
# Munin と Nagios 連携方法
## Munin 側（サンプル）
### 1. command の定義
[詳細はこちら](http://sourceforge.net/p/nagios/nrpe/ci/cef36584d8223a686e200cb64f753390ad372048/tree/sample-config/nrpe.cfg.in)

```/usr/local/nagios/nrpe.cfg
command[check_logfiles]=/usr/lib/nagios/plugins/check_logfiles --config /etc/nrpe/conf.d/munin_alert.cfg
```

### 2. check_logfiles の設定
[詳細はこちら](https://labs.consol.de/nagios/check_logfiles/)

```/etc/nrpe/conf.d/munin_alert.cfg
unlink /tmp/seekfilse

@searches = ({
  logfile => '/var/lib/limits',
  warningpatterns => [
      '.*state warning' ]
  criticalpatterns => [
      '.*state critical' ],
  options => ''allyoucaneat
});
```

#### /var/lib/limits について（サンプル）
[詳細はこちら](http://guide.munin-monitoring.org/en/latest/reference/munin-limits.html)

```/var/lib/limits
myserver1;df;_dev_sda1;warning Value is 95.99. Warning range (:85) exceeded
myserver1;df;_dev_sda1;state warning
myserver1;if_err_eth2;trans;unknown Value is unknown.
myserver1;if_err_eth2;trans;state unknown
```

## Nagios 側（サンプル）
### 1. service の定義
[詳細はこちら](https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html#service)

```/usr/local/nagios/etc/service.cfg
define service{
        service_description             Munin-Alert
        host_name                       munin-server
        check_command                   check_nrpe!check_logfiles
        use                             service-template
        }

```

### 2. command の定義
[詳細はこちら](https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html#command)

```/usr/local/nagios/etc/commands.cfg
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
```

### 3. host の定義
[詳細はこちら](https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html#host)

```/usr/local/nagios/etc/hosts.cfg
define host{
        host_name               munin-serve
        alias                   munin-serve
        address                 ipaddress
        use                     linux-server
        }
```

# 結果
Munin でのエラーを Nagios で検知、アラート通知もできました。
現物はお見せできないのですが、Munin と Nagios 連携をプラグインなどを入れずに簡単にできたので保守運用業務としては良い結果でした。