GNU/Linux >> Linux の 問題 >  >> Debian

Ubuntu / DebianにMonit(プロセスとサービスの監視)をインストールする方法

Monit-Linuxのプロセスとサービスの監視

サーバー上のサービスは、稼働していて、本来の機能を実行する必要があります。

サーバー上のシステムサービスの稼働時間と可用性を確保して最大化するには、自動監視が必要です。

これにより、システム管理者は、中断やダウンタイムを最小限に抑えながら、通知を受け取り、問題をできるだけ早く修正できます。

この投稿では、サーバー上のサービスとプロセスを監視し、何かが失敗したときにアラートメールを送信できるMonitと呼ばれるツールを試してみます。

ツール自体は非常に軽量であり、ユーザーは非常に単純なスクリプトスタイルの言語を使用して「テスト」を作成できます。

Monitのインストール

DebianおよびUbuntuベースのシステムでは、Monitはデフォルトのリポジトリで利用できます。 apt-getを使用してインストール

$ sudo apt-get install monit

インストール後、monitはバックグラウンドサービスとして開始され、次のコマンドで確認できます

# service monit status
 * monit is running

Monitの構成

次に行うことは、特定のものを監視するようにmonitを構成することです。 Monitの構成ファイルは、 / etc / monit / monitrcにあります。 UbuntuおよびDebianベースのシステム。

You can either add all configurations to this file - /etc/monit/monitrc, or create additional configuration files in the /etc/monit/conf.d/ directory and monit would automatically read and load all of them
>

構成ファイルの編集を開始して、監視するサービスを追加します。

Monitには、/ var / log / monit.logにログファイルもあります。このファイルには、何かを修正する必要がある場合に役立つ情報が含まれています

構成後、次のコマンドを実行して新しい構成をテストします

# sudo monit -t

すべてのモニターを再起動せずに新しい構成を再ロードします

# sudo monit reload

ウェブインターフェースを有効にする

Webインターフェイスを使用すると、ブラウザからMonitレポートを確認できます。これは、monitを設定およびテストするときに役立ちます。後で、物事を安全に保つために無効にすることをお勧めします。

構成ファイルで「sethttpd」行を見つけて、コメントを外します。行が存在しない場合は、作成するだけです。

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'
#    allow @monit           # allow users of group 'monit' to connect (rw)
#    allow @users readonly  # allow users of group 'users' to connect readonly

ここでhttp:// localhost:2812 /にアクセスすると、MonitWebインターフェイスが開きます。

メールアラートの設定

monitの背後にある全体的な考え方は、予期しないことが発生したときにアラートを受け取ることです。 Monitは自動的にメールを送信できます。 「setalert」という行を見つけて、レポートを配信する電子メールを指定します。使用するメールサーバーも指定します。

set alert [email protected]
set mailserver localhost

ローカルホストで実行されているSMTPサーバー(MTA)があり、メールを適切に配信できることを確認してください。 mailコマンドを使用して、システムが電子メールを送信するように正しく構成されていることを確認します。

アラートのないメールは避けてください -Monitはデフォルトで、実行するすべてのこと、または発生するすべてのことについて電子メールを送信します。たとえば、monitが開始したとき。ただし、アラート固有の電子メールのみが必要です。次のように構成を変更します

set alert [email protected] not on {instance}

上記の構成では、監視の開始/停止時に生成されるインスタンスレポートは電子メールで送信されません。詳細については、アラートのイベントフィルターに関するmonitドキュメントを確認してください。

これは、Monitアラートメールがどのように見えるかです。これは、サーバーでディスク容量テストが実行されて失敗したときに発生します。

Resource limit matched Service server_disk 

	Date:        Thu, 11 Jun 2015 15:41:43
	Action:      alert
	Host:        localhost
	Description: space usage 61.4% matches resource limit [space usage>50.0%]

Your faithful employee,
Monit
>

Apache、Mysql、Postfixなどの監視サービス

次に、Webサーバー、データベースサーバー、メールサーバー、およびその他のデーモンを監視して、サービスが常に完全に稼働していることを確認します。かんたんだよ。

monit構成ファイルに指示を追加し続けるだけで、監視するすべてのサービスを指定でき、Monitはすぐにそれを開始します。

After changing configurations, make sure to run 'sudo monit reload' to bring them in effect.
While testing you can manually turn services on/off and check the monit report from the web interface.

ここにいくつかの例があります-

1。 HTTPサービス-ポート80

次の例では、httpサーバーがポート80でサービスを提供しているかどうかを確認するようにMonitに指示します。そうでない場合は、アラートが生成されます

check host http_server with address localhost
    if failed port 80 protocol http then alert

したがって、httpサーバー(apacheまたはnginx)に問題がある場合は、アラートが生成されます。
同様に、ftp、smtp、imapなどの他のポートのモニターを設定できます。

2。ウェブサイトのステータスを監視する

ポート80を監視するだけでは、Webサイトが稼働していることを確認するのに十分ではありません。ページをフェッチすると、http応答コードが200になるようにする必要があります。必要な構成は次のとおりです

# check that website is working proper
check host binarytides with address www.binarytides.com
    if failed
        port 80
        protocol http
        request "/"
        status = 200
    then alert

「ポート80」、「httpサーバー」、「ステータス200 for / url」のいずれかに失敗すると、アラートが生成されます。これは、サイトが稼働していてユーザーが利用できることを確認するための効果的な方法です。

3。 ApacheWebサーバー-プロセス監視

プロセスは、特定のpidファイルを使用して監視されます。たとえば、Debian Apache Webサーバーでは、/ var / run / apache2 / apache2.pidにpidがあり、apacheが実行されているかどうかを確認できます。

# Monitor Apache and restart if not running, also alert
check process apache with pidfile /var/run/apache2/apache2.pid
    start program = "/etc/init.d/apache2 start"
    stop program  = "/etc/init.d/apache2 stop"

上記は、指定されたpidファイルからプロセスを監視するようにmonitに指示します。ここで、monitが実行中のプロセスを検出しない場合、「startprogram」パラメーターで指定されたコマンドを使用してプロセスを開始しようとします。デフォルトでは、monitは再起動時にアラート(電子メール)も生成します。

監視のみ

monitがapacheを再起動せず、イベントについて通知するだけの場合は、別の種類の構成を使用してください

# Alert if apache not running
check process apache with pidfile /run/apache2/apache2.pid
    if does not exist then alert

4。ポート3306でMysqlを確認します-ポート監視

この例では、pidを使用せずに、3306のサービスポートに接続して直接mysqlデータベースを監視します。

プロトコルでポート番号だけを確認するには、次の構成を使用します-

# check just port 3306
check host localmysql with address localhost
    if failed port 3306 protocol mysql then alert

次の構成では、mysqlプロセスをチェックし、実行されていない場合は再起動します。また、ポート3306サービスもチェックします。

check process mysql_server with pidfile /var/run/mysqld/mysqld.pid
   start program = "/etc/init.d/mysql start"
   stop program = "/etc/init.d/mysql stop"
   if failed host 127.0.0.1 port 3306 protocol mysql then alert

5。 Postfixメールサーバーとポートを監視する

それでは、postfixメールサーバーを監視するための設定をセットアップしましょう。構成は以前の構成と同じですが、pidファイルとポート番号が異なります

check host localpostfix with address localhost
    if failed port 25 protocol smtp then alert

プロセスを監視し、失敗時に再起動するには、これを使用します-

check process postfix with pidfile /var/spool/postfix/pid/master.pid
   start program = "/etc/init.d/postfix start"
   stop  program = "/etc/init.d/postfix stop"
   if failed port 25 protocol smtp then restart
And do not forget that while postfix is down, monit might not be able to send any emails (unless there are other mail servers specified). But monit would send them once the mail server is up again.

6。繰り返しアラートを送信

デフォルトでは、Monitはアラートを2回だけ生成します。テストが失敗したときと成功したとき。

同じ失敗したテストに対して繰り返しアラートを受け取りたい場合(たとえば、重要すぎる場合)、次の構成を使用します。

set alert [email protected] with reminder on 15 cycles

上記の構成はグローバル設定であり、15回のチェック/サイクルごとにすべてのアラートを送信します。

特定のテストに対してのみアラートを繰り返すには、次のような特定のテスト基準内でアラートディレクティブを指定します

check filesystem datafs with path /dev/sda1
  alert [email protected] with reminder on 1 cycles
  if space usage > 80% for 5 times within 5 cycles then alert

リマインダーの回数を減らして繰り返したい場合は、「10サイクルのリマインダー」などを使用してください。

監視ステータスの確認

これには、monithttpデーモンが実行されている必要があります。

$ sudo monit status
The Monit daemon 5.8.1 uptime: 0m
Process 'apache'
  status                            Running
  monitoring status                 Monitored
  pid                               1335
  parent pid                        1
  uid                               0
  effective uid                     0
  gid                               0
  uptime                            1h 52m
  children                          7
  memory kilobytes                  29556
  memory kilobytes total            241604
  memory percent                    0.3%
  memory percent total              2.9%
  cpu percent                       0.0%
  cpu percent total                 0.0%
  data collected                    Fri, 05 Dec 2014 11:11:18
System 'enlightened'
  status                            Running
  monitoring status                 Monitored
  load average                      [0.05] [0.26] [0.35]
  cpu                               3.7%us 0.8%sy 0.0%wa
  memory usage                      3613152 kB [44.2%]
  swap usage                        0 kB [0.0%]
  data collected                    Fri, 05 Dec 2014 11:11:18

または、http:// localhost:2812 /のWebインターフェイスをチェックして、すべてのステータスをチェックします

結論

上記の例は、Monitを使用して監視タスクを設定する非常に簡単な例のみを示しています。

Monitは、ネットワークホストへのping、外部スクリプトの実行、特定の値の出力のテストなど、はるかに複雑なことを実行できます。

-
https://mmonit.com/monit/documentation/monit.html

で完全なドキュメントを確認してください

Monit wikiページの構成例には、さまざまなサービスのモニターを構成する方法に関する例がたくさんあります-

http://mmonit.com/wiki/Monit/ConfigurationExamples

フィードバックや質問がある場合は、以下のコメントでお知らせください。


Debian
  1. Ubuntu、Debian、LinuxMintにPython3.7をインストールする方法

  2. Debian11にSuricataをインストールする方法

  3. プロセス監視のために Linux に Monit をインストールして構成する方法

  1. UbuntuとDebianのKodiにNetflixをインストールする方法

  2. Debian/UbuntuにWebminをインストールして設定する方法

  3. Debian9にMonitをインストールして設定する方法

  1. Ubuntu20.04およびDebian10にCTparentalをインストールする方法

  2. Ubuntu 18.04 /Ubuntu16.04およびDebian9にIcinga2をインストールする方法

  3. Debian 9 /Ubuntu16.04にMonitをインストールして使用する方法