Ubuntu14.04でIcingaを使用してサーバーとサービスを監視する方法
序章
このチュートリアルでは、Ubuntu14.04へのオープンソース監視システムであるIcingaのインストールについて説明します。 いくつかの基本的な構成について説明するので、Webインターフェイスを介してネットワークサービスとホストリソースを監視できます。 また、リモートシステムにエージェントとしてインストールされるNagios Remote Plugin Executor(NRPE)を利用して、ローカルリソース(ディスク使用量、ログインユーザー数など)を監視します。
Icingaは、ホストとサービスをチェックし、それらのステータスを通知する、人気のあるオープンソースの監視システムです。 IcingaはNagiosのフォークであるため、互換性があり、多くの類似点を共有しています。Nagiosと比較すると、開発サイクルがより機敏であるため、人気が高まっています。
前提条件
このチュートリアルを完了するには、Ubuntu14.04VPSへのルートアクセスが必要です。 これを設定する手順は、ここにあります(手順3および4): Ubuntu14.04を使用したサーバーの初期設定。
また、メール通知機能を設定したい場合は、Postfixを適切に設定する必要があります。 そのための手順はここにあります: Ubuntu14.04にPostfixをインストールしてセットアップする方法。 PostfixはIcingaパッケージと一緒にインストールされますが、Icingaのセットアップ後に構成できます。
Icingaをインストールする
パッケージを使用してIcingaをインストールします。 また、DBMSとしてMySQLを使用します。PostgreSQL、SQLite、およびOracleは、その他のサポートされているオプションです。
次のコマンドを実行して、IcingaPPAをパッケージマネージャーに追加します。
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構成:新しいMySQLrootユーザーパスワードを入力します
- 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がインストールされましたが、開始する前にいくつかの設定を行う必要があります。 そのプロセスの一部としてApacheHTTPサーバーと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つのサービスを監視していることがわかります。
上の行は、単一の監視対象ホストが「稼働中」であることを示し、下の行は、7つの「OK」監視対象サービスがあることを示しています。
localhost のステータスが「ダウン」の場合は、pingコマンドのアクセス許可を変更する必要がある場合があります。 次のコマンドを実行して、nagiosユーザーがpingコマンドを使用できるようにします。
sudo chmod u+s `which ping`
監視するホストとサービスをさらに追加しましょう!
Icingaで監視する方法
Icingaでホストとサービスを監視する主な方法は2つあります。
- 「公的に利用可能なサービス」の監視
- リモートホストにインストールされているエージェントを介して監視し、データを収集してIcingaに送信します
最初の方法では、公開されているサービスとは、ローカルネットワークまたはインターネットを介してアクセスできるサービスを指します。 一般的な例には、HTTP、メール、SSH、およびICMPpingが含まれます。 この方法は、エージェントをインストールできない(またはインストールしたくない)システムを監視する場合や、ユーザー向けのネットワークインターフェイスを監視する場合に役立ちます。
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:エージェントを介した監視
前述のように、Icingaのリモートホストデータを収集するエージェントとしてNRPEを使用します。 つまり、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アドレスに設定します
- コマンド[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サーバーがそれらを使用するように構成されている場合に実行される他のいくつかの「コマンド」があることに注意してください。 また、NRPEはポート5666でリッスンすることに注意してください。 server_port=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です。
Icingaには多数の機能があるため、インターフェイスを参照して、ホストとサービスについて何を発見できるかを確認してください。
結論
ホストとそのサービスの一部を監視しているので、時間をかけてどのサービスが自分にとって重要であるかを把握し、それらの監視を開始できるようにすることができます。 また、通知を設定して、たとえば、ディスク使用率が警告または重大なしきい値に達したとき、またはメインのWebサイトがダウンしたときに電子メールを受信するようにして、状況を迅速に、または問題が発生する前に解決できるようにすることもできます。
幸運を!