CentOS 6またはCentOS 7でマスター/クライアントモデルを使用するためのIcinga2の変更

Icinga2は強力なモニタリングシステムであり、マスタークライアントモデルで使用すると、NRPEベースのモニタリングチェックの必要性を置き換えることができます。マスタークライアントモデルは、さまざまな理由でより安全です。また、チェックを1つのサーバーで変更して他のサーバーに伝達できるようにすることで、より分散した監視が可能になります。また、変更を一元的に管理する場所も提供します。

例:4つの異なる負荷分散Webサーバーがあるとします。ロードスパイクが発生することがわかっている場合(セールなど、多くのアクティビティが予想されるもの)、CPU使用率が高くなるとシステム管理者に警告するレベルを上げることができます。NRPEチェックを使用している場合は、各サーバーにアクセスして、それぞれの/etc/nrpe.d/common_commands.cfgドキュメントを変更する必要があります。マスタークライアントモデルでは、/etc/icinga2/repository.d/hosts/フォルダー内のホスト定義を変更してから、Icingaをリロードします。チェックは各サーバーに伝達され、自動的に取得されます。また、/etc/icinga2/repository.d/services/ファイルを変更することで非常に簡単にチェックを追加でき、クライアントサーバーにプラグインが存在する限り、チェックは自動的に伝播されて認識されます。

前提条件

  • Icinga2とIcingaweb2が既にインストールおよび構成されている(手順)という名前のサーバーインスタンスicinga2master.example.com
  • 監視する新しいVultr CentOS 6または7サーバーインスタンスicinga2client.example.com
  • Sudoアクセス。

このガイドの一部は、上記のインストール手順を反映していますが、これはサーバーマシンではなくクライアントマシンで実行する必要があります。

ステップ1:システムを更新する

「ICINGA」リポジトリをクライアントシステムに追加して、Icingaパッケージをインストールします。

sudo cat > /etc/yum.repos.d/ICINGA-release.repo << 'EOF'
[icinga-stable-release]
name=ICINGA (stable release for epel)
baseurl=http://packages.icinga.org/epel/$releasever/release/
enabled=1
gpgcheck=1
gpgkey=http://packages.icinga.org/icinga.key
EOF

ステップ2:必要なパッケージをインストールする

必要なパッケージをインストールします。

# CentOS 6
sudo yum -y install icinga2 mysql-server mysql icinga2-ido-mysql nagios-plugins-disk nagios-plugins-load nagios-plugins-procs nagios-plugins-ssh nagios-plugins-users nagios-plugins-swap nagios-plugins-ping icingacli

# CentOS 7
sudo yum -y install icinga2 mariadb-server mysql icinga2-ido-mysql nagios-plugins-disk nagios-plugins-load nagios-plugins-procs nagios-plugins-ssh nagios-plugins-users nagios-plugins-swap nagios-plugins-ping icingacli

CentOS 7はMySQLではなくMariaDBを使用するため、必要なパッケージは少し異なります。サービスを開始し、起動時に開始するように設定します。

sudo chkconfig icinga2 on
sudo service icinga2 start

MySQLサービスを起動時に開始するように設定し、今すぐ開始して、セキュリティを確保できるようにします。

# CentOS 6
sudo chkconfig mysqld on
sudo service mysqld start

#CentOS 7
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service

MySQL / MariaDBインストールを保護します。CentOS 6と7はどちらも同じコマンドを使用します。

sudo mysql_secure_installation

プロセス中に、次の質問に答えます。

Enter current password for root (enter for none): Enter
Set root password? [Y/n]: Y
New password: $newRootPassword
Re-enter new password: $newRootPassword
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

$newRootPassword何度か必要になるのでメモしてください。リセットするのは面倒です。

ステップ3:データベースを設定する

icingaユーザー名を作成し、スキーマをデータベースにインポートする必要があります。これは、CentOS 6と7の両方で同じ方法で行われます。

sudo mysql -u root -p
>CREATE DATABASE icinga;
>GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY '$someIcingaPassword'; 
>exit

次に、作成したデータベースにスキーマをインポートします。

sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

上記$newRootPasswordmysql_secure_installationコマンドで使用したMySQL / MariaDBパスワードを入力する必要があります。作成したばかりのパスワードではなく$someIcingaPassword後で使用します。

ido(データベース)モジュールを有効にします。

sudo icinga2 feature enable ido-mysql

/etc/icinga2/features-enabled/ido-mysql.confデータベース情報を追加するには、ファイルを編集する必要があります。これは、次のコマンドで実行できます。

sudo vi /etc/icinga2/features-enabled/ido-mysql.conf

そのファイルで、コメントアウトされている行を見つけます(で始まる//)。

//user = "icinga"
//password = "icinga"
//host = "localhost"
//database = "icinga"

...作成したユーザー/パスワードを使用して編集します。

user = "icinga"
password = "$someIcingaPassword"
host = "localhost"
database = "icinga"

最初の2つのスラッシュを削除して、行のコメントを外してください。

次に、サービスを再起動して変更を反映します。

sudo service icinga2 restart

クライアントサーバーと、構成済みのIcinga2マスター間の接続を追加する必要があります。CentOS 7のFirewalldを使用するか、CentOS 6または7のIPTablesを使用する必要があります。

# CentOS 6
sudo vi /etc/sysconfig/iptables
...
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5665 -j ACCEPT
...
#Icinga2 Master
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 5665 -j ACCEPT

sudo iptables restart

# CentOS 7    
sudo firewall-cmd --add-port=5665/tcp --permanent
sudo firewall-cmd --reload

次に、hostsファイルを編集して、マスターをローカルドメイン名として追加します。

sudo vi /etc/hosts
...
$masterIP  icinga2master icinga2master.example.com

ステップ4:マスターを初期化する

この手順は、Icinga2マスターで実行する必要があります。これをマスターとして初期化し、クライアントが通信に使用する証明書署名リクエストを生成する必要があります。

sudo icinga2 node wizard

これにより、ノードウィザードが実行され、いくつかの質問が表示されます。画面は次のようになり、あなたが与える答えが一覧表示されます。

Welcome to the Icinga 2 Setup Wizard!

We'll guide you through all required configuration details.

Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n
Starting the Master setup routine...
Please specify the common name (CN) [icinga2-master1.localdomain]: icinga2master.example.com
Checking for existing certificates for common name 'icinga2master.example.com'...
Certificates not yet generated. Running 'api setup' now.
information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca/ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca/ca.crt'.
information/cli: Generating new CSR in '/etc/icinga2/pki/icinga2master.example.com.csr'.
information/base: Writing private key to '/etc/icinga2/pki/icinga2master.example.com.key'.
information/base: Writing certificate signing request to '/etc/icinga2/pki/icinga2master.example.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/icinga2master.example.com.crt'.
information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'.
Generating master configuration for Icinga 2.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
Please specify the API bind host/port (optional):
Bind Host []: <hit enter>
Bind Port []: <hit enter>
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Updating constants.conf.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.

Now restart your Icinga 2 daemon to finish the installation!

次に、Icinga2を再起動して変更を反映します。

sudo service icinga2 restart

これでマスターになりました。これを使用して、証明書署名リクエスト文字列を生成できます。

sudo icinga2 pki ticket --cn icinga2client.example.com

あなたはいくつかの文字列を取得します$pkiString。クライアントで必要になるので、その文字列をコピーします。

ステップ5:クライアントを初期化する

ノードウィザードを実行して証明書を生成し、マスターに接続します。

sudo icinga2 node wizard

上記と同様のページが表示されます。このページは、回答を含めて以下に表示されています。

Welcome to the Icinga 2 Setup Wizard!

We'll guide you through all required configuration details.



Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: Y
Starting the Node setup routine...
Please specify the common name (CN) [icinga2client.example.com]:
Please specify the master endpoint(s) this node should connect to:
Master Common Name (CN from your master setup): icinga2master.example.com
Do you want to establish a connection to the master from this node? [Y/n]: Y
Please fill out the master connection information:
Master endpoint host (Your master's IP address or FQDN): icinga2master.example.com
Master endpoint port [5665]: 5665
Add more master endpoints? [y/N]: N
Please specify the master connection for CSR auto-signing (defaults to master endpoint host):
Host [icinga2master.example.com]: icinga2master.example.com
Port [5665]: 5665
information/cli: Created backup file '/etc/icinga2/pki/icinga2client.example.com.key.orig'.
information/cli: Created backup file '/etc/icinga2/pki/icinga2client.example.com.crt.orig'.
information/base: Writing private key to '/etc/icinga2/pki/icinga2client.example.com.key'.
information/base: Writing X509 certificate to '/etc/icinga2/pki/icinga2client.example.com.crt'.
information/cli: Fetching public certificate from master (icinga2master.example.com, 5665):

Certificate information:

 Subject:     CN = icinga2master.example.com
 Issuer:      CN = Icinga CA
 Valid From:  Jan 10 21:08:37 2017 GMT
 Valid Until: Jan  7 21:08:37 2032 GMT
 Fingerprint: FE 72 AB F3 18 A5 12 E0 0C 5D 94 8B 96 C4 57 3B 00 5C E0 04

Is this information correct? [y/N]: Y
information/cli: Received trusted master certificate.

Please specify the request ticket generated on your Icinga 2 master.
 (Hint: # icinga2 pki ticket --cn 'icinga2client.example.com'): $pkiString

information/cli: Requesting certificate with ticket '$pkiString'.

warning/cli: Backup file '/etc/icinga2/pki/icinga2client.example.com.crt.orig' already exists. Skipping backup.
information/cli: Writing signed certificate to file '/etc/icinga2/pki/icinga2client.example.com.crt'.
information/cli: Writing CA certificate to file '/etc/icinga2/pki/ca.crt'.
Please specify the API bind host/port (optional):
Bind Host []: <enter key>
Bind Port []: <enter key>
Accept config from master? [y/N]: Y
Accept commands from master? [y/N]: Y
information/cli: Disabling the Notification feature.
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Enabling the Apilistener feature.
warning/cli: Feature 'api' already enabled.
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Generating local zones.conf.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
information/cli: Updating constants.conf.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.

Now restart your Icinga 2 daemon to finish the installation!

先に進み、Icinga2を再起動して変更を有効にします。

sudo icinga2 restart

これはすでに行われている可能性がありますが、コマンドとAPI機能が有効になっていることを確認する必要があります。

sudo icinga2 feature enable command
sudo icinga2 feature enable api

有効になっていない場合は、「機能が有効」と表示されるため、Icinga2デーモンを再起動する必要があります。ただし、最初に、/etc/icinga2ディレクトリ内のファイルの所有権を変更する必要があります。ノードウィザードを実行した後、一部のファイルのアクセス権が正しくないためです。すべての所有者とグループをに設定する必要がありicingaます。次のコマンドを使用して、アクセス許可を変更します。

sudo chown -R icinga:icinga /etc/icinga2/

これで、Icinga2デーモンを再起動できます。

sudo service icinga2 restart

ステップ6:クライアントを構成する

クライアント構成では、いくつかの異なるファイルを編集する必要があります。

  • /etc/icinga2/zones.conf:エンドポイント(サーバー)とそれらを含むゾーンが含まれます。これは、サーバーが分割される方法です。クライアント名がサーバー名と一致していることを確認してください。
  • /etc/icinga2/icinga2.conf:マスターからのコマンドと構成を受け入れているため、コマンド定義の重複を避けるために、このファイルを少し編集する必要があります。

最初に、zones.confファイルを変更してサーバーとそのゾーンを定義し、すべてのサーバーに固有ではなく(ディスクチェックなど)、すべてのサーバーに共通のコマンド定義用の「グローバル」ゾーンを作成します。 。

sudo vi /etc/icinga2/zones.conf

object Zone clientZone { 
        endpoints = [ "icinga2master.example.com" ]
}

object Zone "global-templates" { # Add global templates zone
        global = true
}

object Endpoint NodeName {
        host = "$icinga2clientIP" 
}

object Zone ZoneName {
        endpoints = [ NodeName ]
        parent = clientZone
} 

現時点では、ゾーンごとに2つのノードしか存在できないことを知っておくことが重要です。ゾーンはいくつでも作成できますが、ゾーンごとに3つ以上のノードがある場合、Icinga2サービスが正しく機能しない可能性があります。ゾーンclientZoneにすでに2つのノードがある場合を除き、これはクライアントでは問題になりません。その場合、別のゾーン名を作成する必要があります。

次に、/etc/icinga2/icinga2.confファイルに変更を加えます。その行をコメント化する必要がありinclude_recursive "conf.d"ます。

sudo vi /etc/icinga2/icinga2.conf
...
//include_recursive "conf.d"
...

構成を検証して、すべてが正しくフォーマットされていることを確認します。

sudo icinga2 daemon -C

権限の問題が発生した場合は、アイテムがによって所有されていることが原因である可能性がありますroot:rooticinga:icinga解決するためにChown 。

sudo chown -R icinga:icinga /etc/icinga2/

設定には他にも問題があります。通常、sudo icinga2 daemon -Cコマンドの出力から提供される情報は、それらを追跡するのに十分なほど詳細になります。発生するすべての潜在的な問題に対処することは、このガイドの範囲外です。

検証が成功した場合は、先に進んでサービスをリロードします。

sudo service icinga2 restart

icingaコマンドを実行できるようにするには、ユーザーにsudo権限を付与する必要があります。これらのsudo権限は、特定のプラグインディレクトリに制限されます。これは単にファイルの最後に置くことができます。

sudo vi /etc/sudoers
...
Defaults:icinga !requiretty
icinga          ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/

これで、クライアントの構成が正式に完了しました。これ以上変更する必要はありません。サービスチェックはマスターで構成され、クライアントに伝達されます。ただし、必要に応じて追加のプラグインをインストールする必要があります。プラグインは、python、perl、BASH、PHP、およびその他のスクリプト言語を使用して作成することもできます。

ステップ7:クライアントをマスター構成に追加する

クライアントを接続できるように構成するには、マスターに戻る必要があります。実行する必要があるいくつかの手順があります。

  1. ホスト構成をに追加しますrepository.d
  2. エンドポイントとしてゾーンにホストを追加します。
  3. クライアントのチェックを構成します。これはこのガイドの範囲外ですので、関連する手順の基本的な説明のみを行います。

ホスト構成が/etc/icinga2/repository.d/hosts/icinga2client.example.com.confファイルに入力されます。

sudo vi /etc/icinga2/repository.d/hosts/icinga2client.example.com.conf
object Host "icinga2client.example.com" {
  import "satellite-host"
  address = "$icinga2clientIP"
  vars.os = "Linux"
}
sudo chown icinga:icinga /etc/icinga2/repository.d/hosts/icinga2client.example.com.conf

これでホストはクライアント構成に存在しますが、ゾーンに配置する必要があります。このゾーンは/etc/icinga2/repository.d/zonesフォルダ内にあり、追跡しやすくするためにゾーン名と同じ名前になります。

sudo vi /etc/icinga2/repository.d/zones/clientZone.conf
object Zone "clientZone" {
        endpoints = [ "icinga2client.example.com" ]
        parent = "icinga2master.example.com"
}

次に、global-templatesゾーンを追加する必要があります。

sudo vi /etc/icinga2/repository.d/zones/global-templates.conf
object Zone "global-templates" {
        global = true
}

最後に、クライアントエンドポイントを追加して、実行時に「clientZone」エンドポイント配列にデータが入力されるようにします。

sudo vi /etc/icinga2/repository.d/endpoints/icinga2client.example.com.conf

#Change values to match the host you're adding
object Endpoint "icinga2client.example.com" {
        host = "$icinga2clientIP"
}

権限の問題がないことを確認するには、先に進んで所有者/グループを再度変更してください。

sudo chown -R icinga:icinga /etc/icinga2

構成の変更を確認して、問題が発生していないことを確認します。

sudo icinga2 daemon -C

検証が成功した場合は、リロードを続行してください。

sudo service icinga2 restart

Icinga2 Webサイトにアクセスすると、サーバーにアクセスできるようになります。

ステップ8:カスタムコマンドとチェック

「コマンドが見つかりません」または「定義されていないチェック」に関するエラーが発生する場合があります。これがグローバルテンプレートゾーンの出番です。構成を/etc/icinga2/conf.d/ファイルにコピーして、ファイルに配置する必要があり/etc/icinga2/zones.d/global-templates/ます。たとえば、「check_software」コマンドを作成するには、次の操作を行う必要があります。

sudo mkdir /etc/icinga2/zones.d/global-templates
sudo vi /etc/icinga2/zones.d/global-templates/commands.conf
object CheckCommand "check_software" {
  import "plugin-check-command"
  command = [ "/usr/bin/sudo",  PluginDir + "/software_service_check.sh" ]
}

software_service_check.shファイルが内に存在する必要があります/usr/lib64/nagios/plugins上のフォルダのクライアント

次に、サービスチェックを/etc/icinga2/repository.d/hosts/services.confファイルに追加します。

sudo vi /etc/icinga2/repository.d/hosts/services/services.conf
apply Service "Check Software Service" {
  import "mail-service"
  check_command = "check_software" # This check command is the same name as the one you defined in global-templates/commands.conf

  assign where host.vars.client_endpoint # This will apply to every client server. If you need it to be more restrictive, you should look into custom variables
}

権限を再度変更する必要があります。

sudo chown -R icinga:icinga /etc/icinga2

次に、構成を再確認します。

sudo icinga2 daemon -C

最後に、成功した場合は、再読み込みします。

sudo service icinga2 restart

おめでとう!これで、マスタークライアントモデルでIcinga2を使用しており、安全でないNRPEチェックを使用する必要がなくなりました。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。