Monitは、Linuxオペレーティングシステム用のオープンソースのプロセス監視ツールであり、システムプロセスの監視に役立ちます。サービス/プロセスがダウンするたびに、特定のプロセスのメンテナンスと修復が自動的に行われ、確実にオンラインに戻されます。
Monitは、プログラム、ファイル、ディレクトリ、ファイルシステム、TCP / IPネットワークチェック、プロトコルチェックの管理と監視にも使用でき、そのようなチェックにSSLを利用できます。
ログファイルに記録し、カスタマイズ可能なメッセージを介してユーザーに通知します。
このガイドは、CentOS 8 /RHEL8でMonitをセットアップするのに役立ちます。
Monitのインストール
MonitはまだCentOS8/ RHEL 8のrpmとしてパッケージ化されていないため、必要なビルドツールをインストールします。
dnf install -y git gcc glibc make glibc-devel kernel-headers autoconf automake libtool bison flex libzip-devel pam-devel openssl openssl-devel
コンパイル用にMonitソースコードのクローンを作成します。
git clone https://bitbucket.org/tildeslash/monit.git
次の一連のコマンドを使用してMonitをコンパイルします。
cd monit ./bootstrap ./configure make make install
Monitの構成
機能性
ダウンロードしたソースから/etcディレクトリにmonitrcファイルをコピーします。
cp monitrc /etc/
要件に合わせて、Monit構成ファイルにいくつかの変更を加えます。
vi /etc/monitrc
デフォルトでは、Monitは30秒間隔でサービスをチェックするように設定されています。この間隔は、以下の行を変更することで変更できます。
set daemon 30
受信トレイでアラートを受信するようにメールサーバーを設定できます。
set mailserver mx.itzgeek.local port 25電子メールアラートは、構成ファイル自体にある組み込みのテンプレートを使用してカスタマイズできます。詳細については、この記事の下部にあるMonitによるメールアラートを参照してください。
ログの設定は、以下のファイルを使用して変更できます。
set log /var/log/monit.log
以下の行のコメントを外してください。ここにサービス監視ファイルを配置します。
include /etc/monit.d/*
Webインターフェイス
Monitは、構成されたサービスを監視および管理するためのWebインターフェースも提供します。デフォルトでは、Monitは2812ポートでリッスンしますが、設定する必要があります。
Monitの構成ファイル/etc/monitrcを編集します。
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 (drop if you use M/Monit) 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を自動起動するsystemdファイルを作成します。
vi /lib/systemd/system/monit.service
以下の設定を使用してください。
# This file is systemd template for monit service. To # register monit with systemd, place the monit.service file # to the /lib/systemd/system/ directory and then start it # using systemctl (see below). # # Enable monit to start on boot: # systemctl enable monit.service # # Start monit immediately: # systemctl start monit.service # # Stop monit: # systemctl stop monit.service # # Status: # systemctl status monit.service [Unit] Description=Pro-active monitoring utility for unix systems After=network.target Documentation=man:monit(1) https://mmonit.com/wiki/Monit/HowTo [Service] Type=simple KillMode=process ExecStart=/usr/local/bin/monit -I ExecStop=/usr/local/bin/monit quit ExecReload=/usr/local/bin/monit reload Restart = on-abnormal StandardOutput=null [Install] WantedBy=multi-user.target
systemdデーモンをリロードします。
systemctl daemon-reload
Monitサービスを開始します。
systemctl start 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インターフェースが起動すると、監視する他のサービスの設定を開始できます。
mkdir /etc/monit.d/
構成ファイルは/etc/monit.d/ディレクトリに配置できます。
syslogのサービスを構成します。
vi /etc/monit.d/syslogmonitor
以下の情報を使用してください。
check process SysLog with pidfile /var/run/rsyslogd.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をリロードして、変更を有効にします。
systemctl reload monit
Webインターフェイスにアクセスします。今設定した新しいサービスが表示されます。
サービスをクリックすると、特定のサービスに関する詳細情報が表示されます。ここでは、サービスの開始、停止、再開などのアクションを実行したり、監視を無効にしたりできます。
モニタリングのテスト
次に、テストのためにHTTPサービスを停止します。
systemctl stop httpd
30秒待つと、Monitはsyslogを自動的に開始します。 Monitログで見つけることができます。
cat /var/log/monit.log
出力:
[EST Jan 27 20:37:03] error : 'HTTPD' process is not running [EST Jan 27 20:37:03] info : 'HTTPD' trying to restart [EST Jan 27 20:37:03] info : 'HTTPD' start: '/usr/bin/systemctl start httpd.service' [EST Jan 27 20:37:38] info : 'HTTPD' process is running with pid 25270
特定のサービスに障害が発生したときにシステム管理者に警告するために、Monitで使用可能な事前定義された警告テンプレートがあります。このデモでは、ローカルリレー(メールサーバー)を使用してrootユーザーに警告します。
構成ファイルを編集します。
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 }
すべてのタイプのアクションに関するアラートを受信するには、ここで受信者アドレスを設定します
set alert root@localhost
ここで受信者アドレスを設定して、ユーザーが開始したサービスの再起動時にアラートを出さないようにします。
set alert root@localhost not on { instance, action }
最後に、メールを受信できるようにメールサーバーの構成を設定します。
set mailserver localhost
ここでは、ローカルリレーdnf install -y sendmail &&systemctl start sendmailを使用して、端末を介して電子メールアラートを読み取り、アラートメカニズムを確認できるようにしています。
サービスをリロードします。
systemctl reload monit
アラートの表示
Monitは、HTTPプロセスに関する電子メールをrootユーザーに送信しました。
cat /var/spool/mail/root
出力:
To: [email protected] Subject: monit alert -- Does not exist HTTPD Date: Tue, 28 Jan 2020 01:44:05 GMT X-Mailer: Monit 5.27.0 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: Mon, 27 Jan 2020 20:44:05 Action: restart Host: centos8.itzgeek.local Description: process is not running Your faithful employee, Monit @ ITzGeek From [email protected] Mon Jan 27 20:44:47 2020 Return-Path: <[email protected]> Received: from centos8.itzgeek.local (localhost [127.0.0.1]) by centos8.itzgeek.local (8.15.2/8.15.2) with ESMTP id 00S1ilKL026285 for <root@localhost>; Mon, 27 Jan 2020 20:44:47 -0500 From: "Monit" <[email protected]> To: [email protected] Subject: monit alert -- Exists HTTPD Date: Tue, 28 Jan 2020 01:44:47 GMT X-Mailer: Monit 5.27.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Exists Service HTTPD Date: Mon, 27 Jan 2020 20:44:47 Action: alert Host: centos8.itzgeek.local Description: process is running with pid 26069 Your faithful employee, Monit @ ITzGeek
または
アラートを表示するには、メールクライアントであるmutt dnf install-ymuttを使用します。
結論
それで全部です。 CentOS 8 /RHEL8でMonitを正常に構成しました。