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前の手順で説明したユーザー名とパスワードを使用します。
Monitのホームページは次のようになります。
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インターフェイスにアクセスします。今設定した新しいサービスが表示されます。
サービスをクリックすると、特定のサービスに関する詳細情報が表示されます。ここでは、サービスの開始、停止、再開などのアクションを実行したり、監視を無効にしたりできます。
テストモニタリング
次に、テストのために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 monit@server.itzgeek.local Sun Feb 9 05:22:48 2020
Return-Path: <monit@server.itzgeek.local>
X-Original-To: root@localhost
Delivered-To: root@localhost.itzgeek.local
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" <monit@server.itzgeek.local>
To: root@localhost.itzgeek.local
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: <1581225768.436064379@server.itzgeek.local>
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 monit@server.itzgeek.local Sun Feb 9 05:23:18 2020
Return-Path: <monit@server.itzgeek.local>
X-Original-To: root@localhost
Delivered-To: root@localhost.itzgeek.local
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" <monit@server.itzgeek.local>
To: root@localhost.itzgeek.local
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: <1581225798.13854367@server.itzgeek.local>
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)電子メールクライアントを使用します。
結論
それで全部です。 CentOS 7 /RHEL7でMonitを正常に構成しました。