サーバーを監視するMonitのインストールと設定方法

この記事では、Ubuntu Server 20.04または24.04を使用することを想定しています。

モチベーション

Monitは、Linuxサーバー上のサービス、プロセス、ファイル、ファイルシステムを監視・管理するためのシンプルで軽量なツールです。プロアクティブな機能を備えているため、サーバーの自動化に最適です。以下に、Ubuntu Server 20.04および24.04へのMonitのインストール、設定、および使用方法の詳細な手順を示します。

代替案

NetdataはWordOpsに付属しており、サーバーの統計情報を表示するのに適しています。しかし、Monitのようなプロアクティブな監視機能はありません。Kibana、Zabbix、Nagiosのような他のツールも人気がありますが、セットアップが難しく、より多くのシステムリソースを消費します。

モニターをインストールする

幸運なことに、MonitはUbuntuのリポジトリに含まれている:

sudo apt update
sudo apt install monit

基本構成

Monit のメイン設定ファイルは次の場所にあります。 /etc/monit/monitrc.編集する前に、バックアップを作成することをお勧めします:

sudo cp /etc/monit/monitrc /etc/monit/monitrc.backup

デフォルトでは、Monitは2分(120秒)ごとにサービスをチェックします。この値は、以下の行を編集することで変更できます。私たちは1分ごとにチェックすることを好みます:

セットデーモン60

Monitには独自のメールサーバーが付属していますが、より堅牢なものが必要ですし、すでにsendmailの設定も済んでいるので、sendmailをMTAとして使い、設定をlocalhostに向けることにしましょう(このパラメーターはデフォルトでコメントされているので、その上に貼り付ければOKです):

メールサーバーを設定する localhost

について メールフォーマット パラメータはメール構造のすべての側面を定義するので、そのすべての行のコメントを解除する必要があります:

from:モニット <モ************@*****le.com>

Monitからのすべてのアラートを受信するEメール(通常はご自身のビジネスEメール)を設定します:

セットアラート アル****@*****le.com

Monit は、Web ベースのステータスページを提供するためにも、コマンドラインコマンドを処理するためにも、組み込み HTTP インターフェイスを使用します。Web インターフェイスを有効にしたくない場合でも、エンドポイントを確立して Monit を適切に管理するには、有効で完全な設定ブロックを提供する必要があります。

httpdのポート2812を設定し、localhostアドレスを使用する。
 ローカルホストを許可する
 allow admin:monit # require user 'admin' with password 'monit'

リモートアクセスを許可するには ローカルホスト を適切なサーバーIPまたはドメインに設定し、安全な認証情報を設定する。

追加設定ファイルを含める:

主設定ファイルとは別に、Monit は以下の追加設定ファイルを含むことができます。 /etc/monit/conf-enabled/。.このディレクトリの中にいくつかのモニターを追加し、サーバーで使用するサービスのほとんどをカバーすることになるが、最も重要なセキュリティから始めよう。

成功したSSHログインを監視する

誰かがSSH経由で私たちのサーバーにログインに成功したときはいつでも知る必要があるからだ。このアラートは シレシュ@エリトマス と名付けよう。 ssh_logins.conf:

ssh_logins ファイルを /var/log/auth.log パスでチェックする。
  マッチ "/etc/monit/whitelist_ips.regex" を無視する。
  もし "Accepted publickey "にマッチしたら、警告を出す。

ファイルの1行に1つのIPを追加する /etc/monit/whitelist_ips.regex すべてのアラートを受信したい場合は、コメント/削除してください。

LEMPスタックをモニターする

その名にふさわしい lemp.conf このモニターは、ストレージ、CPU、RAMなどのシステムリソース、NGINX、PHP、MySQL(ここではMariaDB)をカバーします。の計算式は次のとおりです。 ロードアブジー は1.5×CPUコア数:

# rootファイルシステムのファイルシステム使用量をチェックする
ファイルシステム rootfs をパス / でチェックする。
    ディスク使用量が 90% を超えたら警告 # ディスク使用量が 90% を超えたら警告

# localhost上のシステムパフォーマンスメトリックをチェックする
チェックシステムlocalhost
    if loadavg (1min) > 6 then alert # 1分間の平均負荷が6を超えたらアラート。
    loadavg (5min) > 4 ならアラート # 5 分間の平均負荷が 4 を超えたらアラート
    メモリ使用量が 90% を超えたら警告 # メモリ使用量が 90% を超えたら警告
    CPU 使用率が 15 回連続で 80% を超えた場合、# 警告
    cpu usage > 80% for 15 cycles then alert # 総CPU使用量
    cpu usage (user) > 70% ならアラート # User CPU usage
    cpu usage (system) > 30% ならアラート # System CPU usage
    もし cpu usage (wait) > 20% なら、アラート # I/O 待機 CPU 使用率

# Nginx ウェブサーバプロセス (HTTPS) のチェック
nginxプロセスをpidファイル/var/run/nginx.pidでチェックする。
    起動プログラム = "/usr/sbin/service nginx start"
    停止プログラム = "/usr/sbin/service nginx stop"
    if cpu > 80% for 2 cycles then alert # CPU usage exceeds 80% for 2 consecutive checks アラート
    if failed host 127.0.0.1 port 443 protocol https then restart # Nginx が HTTPS で応答しない場合は再起動する。

# MySQLデータベースサーバーのプロセスをチェックする
pidファイル/var/run/mysqld/mysqld.pidでプロセスmysqldをチェックする。
    起動プログラム = "/usr/sbin/service mysql start"
    停止プログラム = "/usr/sbin/service mysql stop"
    if cpu > 80% for 2 cycles then alert # CPU使用率が2回連続で80%を超えたら警告する。
    if failed unixsocket /var/run/mysqld/mysqld.sock then restart # Unixソケットが応答しない場合、MySQLを再起動する。

# PHP8.3のPHP-FPMプロセスをチェックする
php8.3-fpm プロセスを pidfile /var/run/php/php8.3-fpm.pid でチェックする。
    起動プログラム = "/usr/sbin/service php8.3-fpm start"
    stop program = "/usr/sbin/service php8.3-fpm stop" プログラムを停止します。
    if cpu > 80% for 2 cycles then alert # CPU 使用率が 2 回連続で 80% を超えたらアラート

Redisの監視

Redisモニタリングは別のファイルに追加しよう、 redis.confWordPressを実行するのに重要ではないので、必要に応じて無効にすることができます:

# Redisの監視(Unixソケットを使用)
プロセスredisをpidファイル/var/run/redis/redis-server.pidでチェックする。
    起動プログラム = "/usr/sbin/service redis-server start"
    停止プログラム = "/usr/sbin/service redis-server stop"
    
    # プロセスリソースの監視
    CPU 使用量 > 80% が 5 サイクル続いたらアラート
    メモリ使用量 > 75% ならアラート
    もしchildren > 255が5サイクル続くとアラート
    
    グループredis

# エラーがないかRedisのログファイルをチェックする
ファイルredis_logをパス/var/log/redis/redis-server.logでチェックする。
    ERROR" にマッチしたらアラート
    もし "CRITICAL "にマッチしたらアラート
    グループredis

モニター Fail2Ban

同じ方法論を使って、次のように付け加えよう。 fail2ban.conf:

プロセスfail2banをpidファイル/var/run/fail2ban/fail2ban.pidでチェックする。
    グループサービス
    起動プログラム = "/etc/init.d/fail2ban force-start"
    停止プログラム = "/etc/init.d/fail2ban stop"
    もしunixsocket /var/run/fail2ban/fail2ban.sockが失敗したら、再起動する。
    5サイクル以内に5回再起動したらタイムアウト

ファイルfail2ban_logをパス/var/log/fail2ban.logでチェックする
    もし "ERROR|WARNING "にマッチしたら、アラートを出す

ClamAVを監視する

先にインストールしたClamAVがサーバー上でウイルスやマルウェアを検出したかどうかを知る必要があります。 clamav.conf このように見える:

# ClamAVログファイルに検出を示す変更がないか確認する。
ファイルclamav_logをパス/var/log/clamav/clamav.logでチェックする。
  if match "FOUND" then alert

機密ファイルの完全性を監視

Monitは、重要なファイルや頻繁に変更されるべきではないファイルを監視し、変更が起こるたびにアラートを出すことができます。このアクティビティは通常「ファイル整合性監視」と呼ばれます。 fim.conf で、その中にファイルをリストアップする:

# WordPressの設定ファイルの変更を監視する
wp_configファイルをパス/var/www/example.com/wp-config.phpでチェックする。
    チェックサムが変更されたらアラート

whitelist_ipsファイルをパス/etc/monit/whitelist_ips.regexでチェックする。
    チェックサムが変更されたらアラート

Monitサービスを有効にして開始する

起動時に Monit が自動的に起動するようにする:

sudo systemctl enable monit

次にMonitサービスを開始します:

sudo systemctl start monit

Monitサービスのステータスは、以下の方法で確認できます:

sudo systemctl status monit

Monitの設定をテストする

Monitの設定を本番環境に置く前に、テストしてください:

sudo monit -t
sudo monit reload
sudo monit status

について モニターステータス コマンドを実行すると、Monitが現在監視しているすべてのサービスとプロセスが一覧表示されます。

設定エラーがあれば、Monitはそれを表示し、それに応じて修正することができます。

このページは役に立ちましたか?

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です