Monitは、Linuxオペレーティングシステム用のオープンソースプロセス監視ツールであり、Webブラウザを使用してシステムプロセスを監視できます。また、必要に応じて、特定のプロセスをオンラインに戻すことができるように、特定のプロセスのメンテナンスまたは修復を自動的に実行します。
Monitは、タイムスタンプの変更、チェックサムの変更、またはサイズの変更について、プログラム、ファイル、ディレクトリ、およびデバイスの管理と監視にも使用できます。さまざまなTCP/IPネットワークチェック、プロトコルチェックを実行することに限定されず、そのようなチェックにSSLを利用できます。
ログファイルに記録し、カスタマイズ可能なメッセージを介してユーザーに通知します。
このガイドは、MonitをCentOS 7 /RHEL7にインストールするのに役立ちます。
Monitのインストール
EPELリポジトリを有効にして、最新バージョンのMonitをダウンロードします。
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
YUMコマンドを使用してMonitをインストールします。
yum -y install monit
次のコマンドを使用して監視を開始します。
monit
出力:
Starting Monit 5.25.1 daemon with http interface at [localhost]:2812
モニットの状態を確認してください。
monit status
出力:
Monit 5.25.1 uptime: 0m System 'server.itzgeek.local' status OK monitoring status Monitored monitoring mode active on reboot start load average [0.01] [0.05] [0.04] cpu 0.0%us 0.0%sy 0.0%wa memory usage 170.2 MB [29.0%] swap usage 0 B [0.0%] uptime 4m boot time Sun, 09 Feb 2020 04:55:42 data collected Sun, 09 Feb 2020 05:00:00
Monitの構成
Monitの主な設定ファイルは/etc/monitrcです。要件に合わせて、Monit構成ファイルにいくつかの変更を加えます。
vi /etc/monitrc
デフォルトでは、monitは30秒間隔でサービスをチェックするように設定されています。この設定は、以下の行を変更することで変更できます。
set daemon 30
アラートはによって構成できます。
set mailserver mx.itzgeek.local port 25
アラートテンプレートは、構成ファイル自体にあります。この記事の下部にある補足情報を参照してください。
ログ設定は、次のファイルを使用して変更できます。
set log /var/log/monit
MonitWebインターフェイスを有効にする
Monitは、構成されたサービスを監視および管理するためのWebインターフェースも提供します。デフォルトでは、monitは2812ポートでリッスンしますが、設定する必要があります。
monit構成ファイルを編集します。
vi /etc/monitrc
httpdポート2812を探し、次のエントリを変更します。
FROM:
set httpd port 2812 and use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' #with ssl { # enable SSL/TLS and set path to server certificate # pemfile: /etc/ssl/certs/monit.pem #}
TO:
set httpd port 2812 and use address 0.0.0.0 # only accept connection from localhost allow 0.0.0.0/0 # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' #with ssl { # enable SSL/TLS and set path to server certificate # pemfile: /etc/ssl/certs/monit.pem #}
上記の設定から、monitは2812でリッスンし、管理者ユーザーは任意のネットワークからWebインターフェースにアクセスできるようになります。
monitをリロードします。
systemctl restart monit
起動時にMonitを自動起動します。
systemctl enable monit
ポート2812で実行されているMonitWebインターフェイスへのアクセスを許可するようにファイアウォールを構成します。
firewall-cmd --permanent --add-port=2812/tcp firewall-cmd --reload
AccessMonitWebインターフェイス
Webブラウザーを開き、以下のURLにアクセスします。
http://your.ip.addr.ess:2812または
http://your.fq.dn:2812前の手順で説明したユーザー名とパスワードを使用します。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042710250285.png)
Monitのホームページは次のようになります。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042710250306.png)
Monitを使用して監視するためのサービスを構成する
Webインターフェースが起動したら、監視するサービスの設定を開始できます。
サービス監視構成ファイルは/etc/monit.d/ディレクトリに配置できます。
SSHサービス用に構成します。
vi /etc/monit.d/sshdmonitor
以下の情報を使用してください。
check process sshd with pidfile /var/run/sshd.pid start program "/usr/bin/systemctl start sshd.service" stop program "/usr/bin/systemctl stop sshd.service" if failed port 22 protocol ssh then restart
syslogのサービスを構成します。
vi /etc/monit.d/syslogmonitor
以下の情報を使用してください。
check process syslogd with pidfile /var/run/syslogd.pid start program = "/usr/bin/systemctl start rsyslog.service" stop program = "/usr/bin/systemctl stop rsyslog.service"
HTTPの構成サービス。
vi /etc/monit.d/httpdmonitor
以下の情報を使用してください。
check process httpd with pidfile /var/run/httpd/httpd.pid start program "/usr/bin/systemctl start httpd.service" stop program "/usr/bin/systemctl stop httpd.service" if failed port 80 protocol http then restart
構成したら、monit構文をテストします
monit -t
出力:
Control file syntax OK
変更を有効にするには、リロードします。
monit reload
Webインターフェイスにアクセスします。今設定した新しいサービスが表示されます。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042710250319.png)
サービスをクリックすると、特定のサービスに関する詳細情報が表示されます。ここでは、サービスの開始、停止、再開などのアクションを実行したり、監視を無効にしたりできます。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042710250460.png)
テストモニタリング
次に、テストのためにHTTPサービスを停止します。
systemctl stop httpd
30秒待つと、monitはsyslogを自動的に開始します。モニットログで見つけることができます。
cat /var/log/monit.log
出力:
[UTC Feb 9 05:18:00] error : 'httpd' process is not running [UTC Feb 9 05:18:00] info : 'httpd' trying to restart [UTC Feb 9 05:18:00] info : 'httpd' start: '/usr/bin/systemctl start httpd.service' [UTC Feb 9 05:18:31] info : 'httpd' process is running with pid 1959
Monitを使用したメールアラート
特定のサービスが失敗したときにシステム管理者に警告するために、Monitで利用可能な事前定義された警告テンプレートがあります。
構成ファイルを編集します。
vi /etc/monitrc
要件に応じて、以下のアラートテンプレートを更新できます。
set mail-format { from: Monit <monit@$HOST> subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Your faithful employee, Monit @ ITzGeek }
ここで受信者アドレスを設定します。注:すべての種類のアクションに関するアラートを受け取ります
set alert root@localhost
ユーザーが開始したサービスの再起動について警告したくない場合は、以下の構成を追加してください。
set alert root@localhost not on { instance, action }
最後に、メールを受信できるようにメールサーバーの設定を行います。ここでは、ローカルリレーを使用して、端末を介してメールアラートを読み取り、テストを検証できるようにしています。
set mailserver localhost
サービスをリロードします。
monit reload
アラートの例
Monitは、HTTPプロセスに関する電子メールをrootユーザーに送信しました。
cat /var/spool/mail/root
メール:
From [email protected] Sun Feb 9 05:22:48 2020 Return-Path: <[email protected]> X-Original-To: root@localhost Delivered-To: [email protected] Received: from server.itzgeek.local (localhost [IPv6:::1]) by server.itzgeek.local (Postfix) with ESMTP id 670E21082B34 for <root@localhost>; Sun, 9 Feb 2020 05:22:48 +0000 (UTC) From: "Monit" <[email protected]> To: [email protected] Subject: monit alert -- Does not exist httpd Date: Sun, 09 Feb 2020 05:22:48 GMT X-Mailer: Monit 5.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Does not exist Service httpd Date: Sun, 09 Feb 2020 05:22:48 Action: restart Host: server.itzgeek.local Description: process is not running Your faithful employee, Monit @ ITzGeek From [email protected] Sun Feb 9 05:23:18 2020 Return-Path: <[email protected]> X-Original-To: root@localhost Delivered-To: [email protected] Received: from server.itzgeek.local (localhost [IPv6:::1]) by server.itzgeek.local (Postfix) with ESMTP id B22AF1082B37 for <root@localhost>; Sun, 9 Feb 2020 05:23:18 +0000 (UTC) From: "Monit" <[email protected]> To: [email protected] Subject: monit alert -- Exists httpd Date: Sun, 09 Feb 2020 05:23:18 GMT X-Mailer: Monit 5.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Exists Service httpd Date: Sun, 09 Feb 2020 05:23:18 Action: alert Host: server.itzgeek.local Description: process is running with pid 2139 Your faithful employee, Monit @ ITzGeek
または
Mutt(yum install -y mutt)電子メールクライアントを使用します。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042710250538.png)
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042710250529.png)
結論
それで全部です。 CentOS 7 /RHEL7でMonitを正常に構成しました。