Ubuntu 14.04でIcingaを使用してサーバーとサービスを監視する方法

前書き

このチュートリアルでは、Ubuntu 14.04でのオープンソース監視システムであるIcingaのインストールについて説明します。 基本的な設定について説明しますので、Webインターフェースを介してネットワークサービスとホストリソースを監視できます。 また、リモートシステムにエージェントとしてインストールされるNagios Remote Plugin Executor(NRPE)を使用して、ローカルリソース(ディスク使用量、ログインユーザー数など)を監視します。

Icingaは、ホストとサービスをチェックし、それらのステータスを通知する一般的なオープンソース監視システムです。 IcingaはNagiosのフォークであるため、互換性があり、多くの類似点を共有しています。Nagiosと比較すると、開発サイクルがより俊敏であるため人気が高まっています。

前提条件

このチュートリアルを完了するには、Ubuntu 14.04 VPSへのルートアクセスが必要です。 それを設定する手順はここにあります(ステップ3と4):Initial Server Setup with Ubuntu 14.04

また、メール通知機能をセットアップする場合は、Postfixを適切に構成する必要があります。 そのための手順は、How To Install and Setup Postfix on Ubuntu 14.04にあります。 PostfixはIcingaパッケージと一緒にインストールされますが、Icingaのセットアップ後に構成できます。

Icingaをインストールする

パッケージを使用してIcingaをインストールします。 また、MySQLをDBMSとして使用します。PostgreSQL、SQLite、およびOracleは、サポートされている他のオプションです。

次のコマンドを実行して、Icinga PPAをパッケージマネージャーに追加します。

sudo add-apt-repository ppa:formorer/icinga

次に、aptパッケージデータベースを更新します。

sudo apt update

次に、aptを使用してIcingaとMySQLをインストールします。

sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client

これで、Icingaのインストールに関する一連のプロンプトが表示されます。 プロンプトのリストと、それらに答える方法は次のとおりです。

  • MySQL構成:新しいMySQLルートユーザーパスワードを入力します

  • PostFix構成:「インターネットサイト」を選択します

  • PostFix構成:完全修飾ドメイン名(example.comなど)を入力します

  • icinga-cgiの構成:「icingaadmin」ユーザーのパスワードを入力します(Icingaにアクセスするためのログイン)。

  • icinga-commonの構成:「いいえ」を入力して外部コマンドを有効にします

  • icinga-idoutilsの構成:dbconfig-commonを使用してicinga-idoutilsのデータベースを構成するには、「はい」と入力します

  • icinga-idoutilsの構成:データベースタイプとして「mysql」を選択します

  • icinga-idoutilsの構成:MySQLルートパスワード(上記で割り当てたもの)を入力します

  • icinga-idoutilsの構成:新しいicinga-idoutilsデータベースユーザーパスワードを入力します

Icingaがインストールされましたが、開始する前にいくつかの設定を行う必要があります。 Apache HTTPサーバーとPostfixはそのプロセスの一部としてインストールされていることに注意してください。

Apacheユーザー(www-data)をnagiosグループに追加します。

sudo usermod -a -G nagios www-data

起動時にido2dbデーモンを有効にして、データベースにIcingaイベントと構成を保存します。 Icingaのデフォルト構成を編集します。

sudo vi /etc/default/icinga

IDO2DBの値をyesに変更して、次のようにします。

IDO2DB=yes

保存して終了します。 次に、ido2dbサービスを開始します。

sudo service ido2db start

サンプルのidoutils.cfgファイルをIcingaのアクティブな構成にコピーして、idomodモジュールを有効にします。

sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg

これでIcingaが構成され、開始する準備ができました。

sudo service icinga restart

Icingaユーザーインターフェースを試してみましょう。

Icingaユーザーインターフェイスへのアクセス

http://yourhost/icingaに移動し、Icingaのインストール中に設定したicingaadminログインを使用してログインします。

Icingaが1つのホスト、localhost(Icingaサーバー)、および次のような7つのサービスを監視していることがわかります。

Icinga Initial Overview

上の行は、単一の監視対象ホストが「稼働中」であることを示し、下の行は、7つの「OK」監視対象サービスがあることを示しています。

localhostのステータスが「ダウン」の場合、pingコマンドのアクセス許可を変更する必要がある場合があります。 次のコマンドを実行して、nagiosユーザーがpingコマンドを使用できるようにします。

sudo chmod u+s `which ping`

監視するホストとサービスをさらに追加しましょう!

Icingaで監視する方法

Icingaでホストとサービスを監視するには、主に2つの方法があります。

  1. 「公開されているサービス」の監視

  2. データを収集してIcingaに送信するために、リモートホストにインストールされているエージェントを介した監視

Icinga Monitoring Methods

最初の方法では、公開されているサービスとは、ローカルネットワークまたはインターネット経由でアクセス可能なサービスを指します。 一般的な例には、HTTP、メール、SSH、およびICMP pingが含まれます。 この方法は、エージェントをインストールできない(またはインストールしたくない)システムを監視したり、ネットワークインターフェイスに面したユーザーを監視したりする場合に便利です。

2番目の方法を実装するには、NRPEをエージェントとしてリモートホストにインストールして、ローカルリソースを監視します。 これにより、Icingaは、ディスク使用量、実行中のプロセス、最初の方法では達成できないその他のシステム統計などを監視できます。

方法1:公的に利用可能なサービスの監視

最初の方法はリスニングサービスを監視するだけなので、この方法の設定はすべてIcingaサーバーで行われます。 このメソッドではいくつかのことを監視できるため、Webサーバーのパブリックインターフェイスを監視する方法を示します。

次のコマンドを使用して、ホストの名前でファイルを作成します(yourhostを独自のホスト名に置き換えます)。

sudo vi /etc/icinga/objects/yourhost.cfg

次に、host_nameの値を独自のホスト名(両方の場所)に置き換え、aliasをホストの説明に置き換え、addressをホストのパブリックIPの値に置き換えて以下を追加します。住所:

define host {
        use                     generic-host
        host_name               web-1
        alias                   A Web Server
        address                 107.170.xxx.xxx
}

define service {
        use                     generic-service
        host_name               web-1
        service_description     HTTP
        check_command           check_http
}

保存して終了します。 Icinga構成を再ロードして、変更を有効にします。

sudo service icinga reload

方法2:エージェントを介した監視

前述のように、エージェントとしてNRPEを使用して、Icingaのリモートホストデータを収集します。 つまり、この方法で監視されるすべてのホストにNRPEをインストールする必要があり、各ホストのデータを受信するようにIcingaサーバーも構成する必要があります。

NRPEのインストールについて見ていきましょう。

リモートホストへのNRPEのインストール

監視するホストで、aptを更新します。

sudo apt update

次に、NRPEとNagiosプラグインをインストールします。

sudo apt install nagios-plugins nagios-nrpe-server

ルートファイルシステムの名前を検索します(監視したい項目の1つであるため)。

df -h /

NRPE構成のファイルシステム名を使用して、ディスク使用量を監視します(おそらく/dev/vdaです)。 次に、nrpe.cfgを開いて編集します。

sudo vi /etc/nagios/nrpe.cfg

NRPE構成ファイルは非常に長く、コメントでいっぱいです。 検索して変更する必要がある行がいくつかあります。

  • server_address:このホストのプライベートIPアドレスに設定します

  • allowed_hosts:IcingaサーバーのプライベートIPアドレスに設定します

  • command[check_hda1]/dev/hda1をルートファイルシステムと呼ばれるものに変更します

前述の3行は次のようになります(適切な値に置き換えてください)。

server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda

このファイルには、Icingaサーバーがそれらを使用するように構成されている場合に実行される他のいくつかの「コマンド」が定義されていることに注意してください。 また、server_port=5666が設定されているため、NRPEはポート5666でリッスンすることに注意してください。 そのポートをブロックしているファイアウォールがある場合は、必ずIcingaサーバーに対して開いてください。

保存して終了します。 次に、NRPEを再起動して、変更を有効にします。

sudo service nagios-nrpe-server restart

監視するホストでNRPEのインストールと構成が完了したら、これらのホストを監視を開始する前にIcingaサーバー構成に追加する必要があります。

Icingaサーバー構成へのリモートホストの追加

Icingaサーバーで、監視するリモートホストごとに/etc/icinga/objectsで新しい構成ファイルを作成します。 yourhostをホストの名前に置き換えます。

sudo vi /etc/icinga/objects/yourhost.cfg

次のホスト定義を追加し、host_name値をリモートホスト名(この例では「wordpress-1」を使用)に置き換え、alias値をホストの説明に置き換え、addressリモートホストのプライベートIPアドレスを使用した値:

define host {
        use                     generic-host
        host_name               wordpress-1
        alias                   My first wordpress server
        address                 10.128.xxx.xxx
        }

次に、監視するサービスにこれらのサービスブロックを追加します。 check_commandの値は、ステータスのしきい値を含め、監視対象を決定することに注意してください。 ホストの構成ファイルに追加できる例をいくつか示します。

ping:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

SSH(notifications_enabledを0に設定すると、サービスの通知が無効になります):

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
        }

負荷:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Load
        check_command                   check_load!5.0!4.0!3.0!10.0!6.0!4.0
        }

現在のユーザー:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Users
        check_command                   check_users!20!50
        }

ディスクスペース:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Disk Space
        check_command                   check_all_disks!20%!10%
        }

use generic-serviceの意味がわからない場合は、デフォルトで定義されている「generic-service」と呼ばれるサービステンプレートの値を継承しているだけです。

保存して終了します。 Icinga構成を再ロードして、変更を有効にします。

sudo service icinga reload

すべてのリモートホストを監視するためのIcingaの設定が完了したら、ユーザーインターフェースを確認しましょう。

ユーザーインターフェイスの例

いずれかの監視方法を使用していくつかのホストで監視を設定した後、Icingaユーザーインターフェイス(http://youricingaserver.com/icinga、acingaadminログイン)に移動し、[サービスの詳細]リンクをクリックします。 監視を設定したすべてのサービスのリストが表示されます。

例として、上記の構成ファイルを使用して監視されている2つのホストを次に示します。 web-1 HTTPサービスは通常のHTTPポートを介して監視されており、WebサーバーがOKステータスで応答していることを示し、wordpress-1は監視対象サービスがすべてOKであることを示しています。 s。

Icinga User Interface Example

Icingaには多くの機能があるため、ホストやサービスについて発見できることを確認するために、インターフェースを自由に閲覧してください。

結論

ホストとそのサービスの一部を監視しているので、どのサービスが自分にとって重要であるかを把握するために時間をかけることができます。そうすれば、それらの監視を開始できます。 また、ディスク使用率が警告またはクリティカルのしきい値に達したとき、またはメインWebサイトがダウンしたときに電子メールを受信するように通知を設定することもできます。これにより、状況を迅速に、または問題が発生する前に解決できます。

がんばろう!

Related