0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry PiをMuninで監視サーバにする

Last updated at Posted at 2024-11-03

はじめに

余っているRaspberryPizeroで何かできないかと考えMuninを使用して監視サーバにすることにしました。

前提

今回使用した環境

ハードウェア : Raspberrypizero WH
OS : Raspbian GNU/Linux 12 (bookworm)

用語など

Muninでは監視サーバをマスタ、監視対象の端末をノードと称します。

構築

マスタのインストール

まずは監視サーバの準備をしていきます。

  1. Apacheのインストール
    bash
    $ sudo apt-get install apache2
    
  2. Muninのインストール
    bash
    $ sudo apt-get install munin
    
  3. Apacheの動作確認
    ローカルエリアネットワーク内の別端末からブラウザでApacheにアクセスしてみます。
    URL : http://<マスタをインストールした端末のIP or 名前>
    スクリーンショット 2024-11-03 9.31.55.png
  4. apacheのコンフィグ設定
    bash
    $ ls /etc/munin
    apache24.conf  munin-node.conf  plugin-conf.d  static
    munin-conf.d   munin.conf       plugins        templates
    
    バージョンによりコンフィグファイルの名称が異なる様です。今回の場合はapache24.confが対象です。おそらくですがいずれのバージョンでもapacheXX.confというファイルを探せば良いと思います。
    bash
    $ sudo nano apache24.conf
    //変更前
    <Directory /var/cache/munin/www>
        Require local
        Options None
    </Directory>
    
    //変更後
    <Directory /var/cache/munin/www>
        Order allow,deny
        Allow from all
        Require all granted
        Options None
    </Directory>
    
    このコンフィグファイルのフォーマットもバージョンによって微妙に異なる様ですが、/var/cache/munin/wwwの部分を変更すると覚えておけば良いでしょう。
  5. コンフィグファイルのシンボリックリンクをApacheのディレクトリに作成
    bash
    $ sudo ln -s /etc/munin/apache24.conf /etc/apache2/sites-enabled/munin.conf
    
    注)変更したコンフィグファイルの名称に適ほど置き換えてください。今回はapache24.confのシンボリックリンクを作成しています。
  6. Muninの動作確認
    ローカルエリアネットワーク内の別端末からブラウザでMuninにアクセスしてみます。
    URL : http://<マスタをインストールした端末のIP or 名前>/munin
    スクリーンショット 2024-11-03 9.52.02.png
    この段階ではまだノードが登録されていないためマスタ(監視サーバ自体)のみの情報が表示できます。

ノードの追加

それでは監視の対象になるノードの追加をしていきます。

  1. ノードのインストール(ノード(監視の対象となる端末)で実施)
    bash
    $ sudo apt-get install munin-node
    
  2. Muninノードのコンフィグファイルに追加(ノード(監視の対象となる端末)で実施)
    bash
    $ sudo nano /etc/munin/munin-node.conf
    //追加
    # A list of addresses that are allowed to connect.  This must be a
    # regular expression, since Net::Server does not understand CIDR-style
    # network notation unless the perl module Net::CIDR is installed.  You
    # may repeat the allow line as many times as you'd like
    
    allow ^127\.0\.0\.1$
    allow ^::1$
    allow ^<マスタのIPアドレス>$ ⇨ 追加行
    
  3. ノードの再起動(ノード(監視の対象となる端末)で実施)
    bash
    $ sudo systemctl restart munin-node
    
  4. ノードの追加(マスタ(監視サーバ)側で実施)
    bash
    $ sudo nano /etc/munin/munin.conf
    //追加
    # a simple host tree
    [localhost.localdomain]
        address 127.0.0.1
        use_node_name yes
    [<任意の名前>.localdomain] ⇨ 追加行
        address <追加するノードのIPアドレスまたは名前> ⇨ 追加行
        use_node_name yes ⇨ 追加行
    

しばらくすると新しいノードが追加され確認できるようになります。
ちなみに.localdomeinの部分はグループ名と考えると良いかもしれません。こちらも任意に変更することができます。

アラートをGmailで飛ばす

exim4とmailutilのインストール

bash
sudo apt install exim4
sudo apt install mailutils

exim4の設定

bash
sudo dpkg-reconfigure exim4-config

exim4の設定はダイアログで設定を行います。

  1. General type of mail configuration:
    • mail sent by smarthost; received via SMTP or fetchmailを選択
  2. System mail name:
    • 特に指定するドメインなどが無い場合 localhost を入力
  3. IP-addresses to listen on for incoming SMTP connections:
    • 127.0.0.1 ; ::1 を入力
  4. Machines to relay mail for:
    • 未入力
  5. IP address or host name of the outgoing smarthost:
    • smtp.gmail.com:587 を入力
  6. Hide local mail name in outgoing mail?
    • No を選択
  7. Keep number of DNS-queries minimal (Dial-on-Demand)?
    • No を選択
  8. Delivery method for local mail:
    • mbox format in /var/mail/ を入力
  9. Split configuration into small files?
    • No を選択

/etc/exim4/passwd.clientの編集

bash
sudo nano /etc/exim4/passwd.client

以下を入力して保存する。この際Googleアカウントに二段階認証設定をしている場合は通常のGoogleアカウントのパスワードではなく、アプリパスワードを発行して入力する必要がある。
アプリパスワードを作成していない場合はこちらを参照して作成してください。

gmail-smtp.l.google.com:<メールアドレス>:<アプリ パスワード>
*.google.com:<メールアドレス>:<アプリ パスワード>
smtp.gmail.com:<メールアドレス>:<アプリ パスワード>

設定を反映する

bash
sudo update-exim4.conf

テストメールを送信する

bash
sudo echo "test mail massage" | mail -s "test mail" <送信先メールアドレス>

Muninのアラート設定

bash
sudo nano /etc/munin/munin.conf

変更箇所

# 送信コマンド
# フォーマット contact.<通知先名>.command mail -s "<件名>" <送信先メールアドレス>
contact.admin.command mail -s "Munin Alart ${var:worst}: ${var:group}::${var:host}::${var:plugin}" <送信先メールアドレス>

# 送信するアラートレベル設定
# フォーマット contact.<通知先名>.always_send <障害レベル設定>
contact.admin.always_send warning critical

# 送信設定
# フォーマット contacts <通知先名>
contacts admin

# アラートレベルと閾値を設定(ノード追加した際に追加した各ノードの項に追記する)例えばcpu80%をWarning、90%をcriticalとしたい場合
# フォーマット <plugin名>.<インターナル名>.<障害レベル> <閾値>
# a simple host tree
[<ホスト名>]
    cpu.user.warning 80
    cpu.user.critical 100
  • 通知先名は任意に設定可能、通知先名を分けて複数行書くこともできるので通知先エイリアスといってもいいかもしれない
  • 件名部分で使用できる変数はこちらが参考になる
  • plugin名はmunin-node-configureコマンドやls /etc/munin/pluginsで確認する
  • インターナル名はsudo munin-run <plugin名> configコマンドや、実際のmuninの画面(各グラフをクリックし際に下の方に表示される表)で確認する
  • 通知したくないノードがある場合はcontacts noとすることで通知されなくなる

その他

プラグインの設定確認コマンド

bash
sudo munin-run <plugin名> config

それでは、良きラズパイライフを!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?