hagetak's blog

どうも、はげたかです。

munin を導入し、8080ポートで公開/メールが送信できない問題

概要

日頃からメンテナンスできていないサーバ(絶賛稼働中:ユーザも存在する)がある。(ユーザは身内)

何か起きたときの初動が遅れてしまうのは、嫌なので munin で監視することにする。

ある程度の知識があれば簡単にできるが、調べてもでてこないことを実施したので、記録として残す。

条件

  • さくらVPSIPアドレス xxx.xxx.xxx.xxx) で稼働中。
    • IPアドレス(port 80)にアクセスすると、プロジェクト画面
      • /munin でアクセスできない
    # こんな感じで設定
    <VirtualHost *:80>
        <Directory /var/www/project_name>
            ServerName xxx.xxx.xxx.xxx
        </Directory>
    </VirtualHost>

やったこと

  • 通常のインストール
  • /munin以外でアクセスするようにした
    • ポートを変えて回避
  • 閾値を超えたらメール通知をさせる
    • ココでハマッた

munin インストール

yum install munin
service munin-node start

# basic 認証設定
htpasswd -m /etc/munin/munin-htpasswd munin

# port を変更して、munin を確認できるように変更する
vi /etc/httpd/conf.d/munin.conf
Listen 8080
NameVirtualHost xxx.xxx.xxx.xxx:8080

<VirtualHost xxx.xxx.xxx.xxx:8080>
ServerName xxx.xxx.xxx.xxx:8080
# munin install 時に発行された内容
# ...
# ...
</VirtualHost>

設定するための準備

# ディスク関係
$ munin-run df             
_dev_vda3.value 19.8722218428188
_dev_vda1.value 30.4904706457799

# CPU関係
$ munin-run cpu
user.value 73024010
nice.value 12247
system.value 4216490
idle.value 7275145677
iowait.value 526483
irq.value 1414
softirq.value 298340
steal.value 3071780
guest.value 0

muninの設定ファイルを変更

vim /etc/munin/munin.conf

閾値は適当。追々調整していく。

# For those with Nagios, the following might come in handy. In addition,
# the services must be defined in the Nagios server as well.
#contact.nagios.command /usr/bin/send_nsca nagios.host.comm -c /etc/nsca.conf
 
contact.email.command mail -s "Munin-notification for ${var:group}::${var:host}" "your-mail@address.com"
contact.email.always_send warning critical

# a simple host tree
[your-service-name]
    address 127.0.0.1
    use_node_name yes

    # For disk
    df._dev_vda1.warning 50
    df._dev_vda1.critical 80

    df._dev_vda3.warning 50
    df._dev_vda3.critical 80

    # For CPU
    cpu.user.warning 40
    cpu.user.critical 80
    contacts email

テスト送信

sudo -u munin sh -c "/usr/share/munin/munin-limits --contact email --force"

メールが飛んだら、munin の設定は以上。

munin でメールが送信できない

上記のテスト送信を実行時、下記のエラーが発生した。

$ sudo -u munin sh -c "/usr/share/munin/munin-limits --contact email --force"
sh: -c: line 0: unexpected EOF while looking for matching `"'
sh: -c: line 1: シンタックス エラー: 期待してないファイルの終了

対策

原因は分からず、下記のように変更したら回避した。(そもそも別の問題が合ったのかもしれない)

# your-mail@address.com => "your-mail@address.com"
# 上の例では既に`"`付きで対応済み
contact.email.command mail -s "Munin-notification for ${var:group}::${var:host}" "your-mail@address.com"