2020年11月21日土曜日

ESXiをvCenter Serverに登録した際に「ホスト上のサードパーティ I/Oフィルタ ストレージ プロバイダの登録/登録解除に失敗する」のエラーが出る

ESXiをvCenter Server (vCSA)に登録した際に以下警告メッセージが表示された場合の対処方法を記載する。

"ホスト上のサードパーティ I/Oフィルタ ストレージ プロバイダの登録/登録解除に失敗する"
※英語表記の場合"Registration/unregistration of third-party IO filter storage providers fails  on a host"


原因

vCSAとESXiの間にFirewall等で通信制御をしている環境において、以下通信許可が不足していることが原因となる。
送信元 送信先 送信先ポート
vCSA ESXi 9080/tcp

対処

  1. Firewall等の通信許可設定で、vCSA→ESXi方向の9080/tcpを許可する。
  2. vSphere Clientにて、[vCenter Server] -> [設定] -> [詳細] -> [ストレージ プロバイダ]を選択する。

  3. [ストレージプロバイダの同期]を選択し、ESXiが表示されることを確認する。なお、9080/tcpのポートが許可されていない場合は、この操作はエラーで失敗する。

  4. ESXiの警告メッセージは手動でリセットしないと消えないようなので、[緑にリセット]を選択して、警告を解除する。

2020年11月14日土曜日

ESXiをvCenter Serverに登録した際に、ESXiが頻繁に「応答なし」になる

ESXiをvCenter Server (vCSA)に登録した際に、ESXiが頻繁に応答なしになる事象が発生した。


ESXiのイベントとしては「ホストが応答しません」のエラーが出力される。


なお、「応答なし」になるタイミングや頻度は以下となる。
  • メンテナンスモード有効/無効時
  • vSphere HA有効/無効時
  • 1分間に1回(ただし、1秒以内に回復)

原因

vCSAとESXiの間にFirewall等で通信制御をしている環境において、以下通信許可が不足していることが原因となる。
※ESXi→vCSA方向の通信要件となるため注意。

送信元 送信先 送信先ポート
ESXi vCSA 902/udp

対処

  1. Firewall等の通信許可設定で、ESXi→vCSA方向の902/udpを許可する。
  2. ESXiのイベントで「ホストが応答しません」が発生しないことを確認する。また、「ホストのCPU使用率が灰色から緑に変わりました」といったメッセージが表示されていることも確認する。

2020年11月7日土曜日

Zabbix Agentの「リモートコマンド」を使って監視対象のOSコマンドを実行する

Zabbix Agentはインストール対象のOSにてコマンド実行やスクリプト実行をさせる「リモートコマンド」機能を有している。この機能を使うと、例えば障害などでサーバ再起動が必要となった際などに、わざわざOSにログインせずともZabbixの管理画面から再起動を実行することができる。
※当然障害中であってもZabbix Agentと疎通ができることが条件となる。

今回、Zabbix Agentにてリモートコマンドを有効にし、Zabbixの管理画面からOSの再起動を実行できるよう設定をしてみた。

環境

  • Zabbix : 5.0.3 (CentOS 8にインストール)
  • Zabbix Agent : 4.0.17 (Ubunt 20.04にインストール)

Zabbix Agent設定手順

1. 「/etc/zabbix/zabbix_agentd.conf」の修正

「/etc/zabbix/zabbix_agentd.conf」に対して以下を設定修正する。修正内容はZabbix Agent 5.0より前のバージョンと5.0以降で異なるので注意。

Zabbix Agent 5.0より前のバージョンは以下で設定する。

$ sudo vi /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 

Zabbix Agent 5.0以降のバージョンは以下で設定する。

$ sudo vi /etc/zabbix/zabbix_agentd.conf
AllowKey=system.run[*]

設定修正後、Zabbix Agentを再起動し設定反映する。

$ sudo systemctl restart zabbix-agent

2. 「/etc/sudoers」の修正

パスワードなしでコマンドを叩けるようにvisudoコマンドでsudoの設定を行う。

$ sudo visudo
# allows 'zabbix' user to run all commands without password.
zabbix ALL=NOPASSWD: ALL

Zabbixにてスクリプトを設定

1. 再起動用のスクリプトを設定

Zabbix管理画面にて「管理」→「スクリプト」を選択し、以下のスクリプトを作成する。

内容は、1分後にサーバを再起動するスクリプトとなる。再起動を1分後にしている理由は、即材に再起動させるとスクリプト実行後の応答をZabbixが受け取ることができずエラーになるためである。また、万が一再起動をキャンセルしたい場合に備えて、猶予期間を設けることも理由となる。

今回の再起動といった影響の大きいスクリプトを実行させる場合は、「確認を有効」にチェックを入れておく。このチェックを入れることで、スクリプト実行前に確認画面を表示させることができ、オペミスの発生を予防できる。

項目 設定値
名前 Reboot
タイプ スクリプト
次で実行 Zabbixエージェント
コマンド sudo shutdown -r +1
必要なホストへのアクセス権 表示のみ
確認を有効 チェック
確認テキスト 1分後にホスト {HOST.NAME} を再起動します。


2. 再起動キャンセル用のスクリプトを設定

万が一再起動をキャンセルしたい場合に備え、再起動をキャンセルするスクリプトも併せて作成しておく。

項目 設定値
名前 Cancel reboot
タイプ スクリプト
次で実行 Zabbixエージェント
コマンド sudo shutdown -c
必要なホストへのアクセス権 表示のみ
確認を有効 チェックなし
確認テキスト <空白>


2. 動作確認

まず「Reboot」スクリプトを実行してみる。

「監視データ」→「ホスト」にて対象のホストの名前をクリックし、「Reboot」を選択する。

「1分後にホスト <対象のホスト名> を再起動します。」と表示されるので、「実行」ボタンをを選択する。

実行後、コマンドの標準出力の結果が表示される。これで1分待てば、サーバが再起動されるはずだ。

再起動をキャンセルしたい場合は、再度対象のホストの名前をクリックし、「Cancel reboot」を選択する。こちらは「確認を有効」にチェックを入れていないので、特に何も表示されるスクリプトが実行される。

まとめ

今回は、ホストを選択して直接スクリプトを実行させる手順を紹介したが、このスクリプトは、アクションでも使うことができる。

アクションを設定することで、「特定の監視メッセージが表示された際に、復旧コマンドやログ取得コマンドを自動実行させる」といった使い方もできるので、うまく設定すれば運用効率化が実現できそうだ。

参考

2020年11月3日火曜日

Zabbix Agent2を使ってsystemdのサービスステータスを監視する

ZabbixはWindowsやLinuxなどの監視を行うために、エージェントとして「Zabbix Agent」が長らく提供されてきた。Zabbix 5.0から新たなエージェントとして「Zabbix Agent2」が正式サポートされるようになった。

Zabbix AgentとZabbix Agent2の違いの説明は割愛するが、今後のことを考えて、Zabbix Agent2を使ってみることにした。本記事では、Zabbix Agent2のインストールと設定を記載する。先に言っておくと、インストール手順はZabbix Agentほとんど変化がなく、Zabbixを使ってきた人であればマニュアルを見なくてもインストールできるだろう。

環境

今回はZabbix 5.0を使用する。Zabbix Agent2をCent OS 8にインストールし、Zabbix Agent2で可能となったsystemdのサービスステータス監視を設定する。

なお、Zabbix Agent2がサポートされるプラットフォームは以下の通り。マニュアルを見るとWindowsは一部機能制限がある旨、記載されているので注意。

  • RHEL/CentOS 6, 7, 8
  • SLES 15 SP1+
  • Debian 9, 10
  • Ubuntu 18.04
  • Windows (一部機能制限あり)

Zabbix Agent2のインストール

そのままではdnfでインストールすることができないので、「zabbix-release」のパッケージをインストールしたのち、インストールを実行する。

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf install zabbix-agent2 -y

設定ファイルは「/etc/zabbix/zabbix_agent2.conf」となる。以下3行を環境に合わせて修正する。

# vi /etc/zabbix/zabbix_agent2.conf
Server=<Zabbix ServerのIPアドレス>
ServerActive=<Zabbix ServerのIPアドレス>
Hostname=<ホスト名>

設定修正後、Zabbix Agent2を起動する。

# systemctl enable zabbix-agent2
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.
# systemctl start zabbix-agent2
# systemctl status zabbix-agent2
● zabbix-agent2.service - Zabbix Agent 2
   Loaded: loaded (/usr/lib/systemd/system/zabbix-agent2.service; enabled; vend>
   Active: active (running) since Sat 2020-08-22 17:34:54 JST; 10s ago
 Main PID: 20448 (zabbix_agent2)
    Tasks: 7 (limit: 11090)
   Memory: 7.8M
   CGroup: /system.slice/zabbix-agent2.service
           mq20448 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf

 8月 22 17:34:54 t3022cent systemd[1]: Started Zabbix Agent 2.
 8月 22 17:34:54 t3022cent zabbix_agent2[20448]: Starting Zabbix Agent 2 [t3022>
 8月 22 17:34:54 t3022cent zabbix_agent2[20448]: Press Ctrl+C to exit.

systemdのサービスの監視を追加

Zabbix Agent2では、systemdのサービスの監視ができるようになっているので、今回その機能を使ってPacmekaerのサービス監視を行うことにした。具体的には、systemd.unit.info[<unit name>,<property>,<interface>]にてアイテムを作成することで実現する。

今回は例として、「pacemaker.service 」を監視させることにする。

1. アイテムを作成

以下のような内容でアイテムを作成する。デフォルトから変更していない箇所は記載を省略しているので、必要な場合は適宜変更すること。

項目 設定値
名前 Pacemaker service is running
タイプ Zabbixエージェント
キー systemd.unit.info[pacemaker.service]
データ型 文字列
アプリケーション Pacemaker service


2. トリガーを作成

以下のような内容でトリガーを作成する。デフォルトから変更していない箇所は記載を省略しているので、必要な場合は適宜変更すること。

項目 設定値
名前 Pacemaker service is down on {HOST.NAME}
深刻度 軽度の障害
条件式 {Template Pacemaker Service:systemd.unit.info[pacemaker.service].last()}<>"active"


3. 動作確認

それでは実際にPacemakerのクラスタを停止させて、Zabbixxにて停止を検知することを確認してみよう。

停止前のアイテムの最新データは「active」となっている。

クラスタを停止させると、「inactive」となる。

systemdのサービスのステータスが変化したことで、正常にトリガーも実行された。


まとめ

以上でZabbix Agent2を使って、systemdの監視を実現することができた。Zabbix Agent2ではディスカバリを使ってsystemdに登録されているサービスを自動で取得することもでできるようなので、そちらも別途試していきたい。

参考


2020年10月31日土曜日

ESXi単体で重複するデータストアに「新しい署名の割り当て」を行いマウントさせる方法

近年のストレージは、スナップショット機能が標準で搭載されており、バックアップを瞬時に取得することができ、さらに取得したスナップショットからボリュームをコピーすることもできる。

この機能を使うことで、ESXiにストレージのスナップショットからコピーしたボリュームを別のデータストアとしてマウントして、データストアの中の一部の仮想マシンやvmdkファイルのみをコピーしなおしてリストアするといった使い方が可能となる。

ただし、スナップショットからコピーしたデータストアは、データストア名やUUIDが重複することから、そのままではESXiにマウントすることができず、「新しい署名の割り当て」が必要となる。この作業はvCenter ServerのGUI (vSphere Client) であれば実施可能であるが、ESXiのGUI (VMware Host Client) では実施することができない。

ただし、ESXi単体であっても、CLIを使えば実施可能であるため、今回、ESXi Shellを使用して、スナップショットからコピーしたデータストアを別のデータストアとしてマウントしてみることにする。

手順

1. ストレージにてスナップショットからコピーしたボリュームを作成

まずはストレージ側でスナップショットを取得し、取得したスナップショットからボリュームを作成する。これはストレージによって手順が異なるので、手順の詳細は割愛するが、参考情報として、過去QNAPとFreeNASで実施した記事を以下に記載する。

ストレージ 参考記事
QANP QNAP NASのiSCSIボリュームをクローンして別のVMFSデータストアとしてマウントさせる手順
FreeNAS FreeNASのスナップショットからコピーしたiSCSIボリュームを作成する手順

2. VMware Host ClientにてVMFSをスキャン

VMware Host Clientにログインし、左メニューの「ストレージ」→「デバイス」タブを選択し、「再スキャン」を選択する。再スキャン後、コピーしたデータストアがデバイスとして表示されることを確認しておく。

3. SSHでESXiにログイン

次に、SSHにてESXiにログインする。デフォルトではSSHが無効となっていることから、無効になっている場合は有効にしておくこと。

4. VMFS一覧を確認

以下コマンドにて、作業実施前にVMFSの一覧を確認しておく。今回は「iscsi_fnas_01」のデータストアをコピーしたボリュームをマウントする。

# esxcli storage filesystem list
Mount Point                                        Volume Name                                 UUID                                 Mounted  Type           Size         Free
-------------------------------------------------  ------------------------------------------  -----------------------------------  -------  ------  -----------  -----------
/vmfs/volumes/5f4e587d-2e195734-cfd3-dca63269a366  datastore1                                  5f4e587d-2e195734-cfd3-dca63269a366     true  VMFS-6  45634027520  44125126656
/vmfs/volumes/5f5d5450-787693d8-d588-000c29d16ed8  iscsi_fnas_01                               5f5d5450-787693d8-d588-000c29d16ed8     true  VMFS-6  53418655744  11974737920
/vmfs/volumes/5f4e587a-25e427e9-4e0d-dca63269a366  OSDATA-5f4e587a-25e427e9-4e0d-dca63269a366  5f4e587a-25e427e9-4e0d-dca63269a366     true  VMFS-L   8321499136   5568987136
/vmfs/volumes/794a74c9-cb43f6a4-f0b4-d9e894c50593  BOOTBANK1                                   794a74c9-cb43f6a4-f0b4-d9e894c50593     true  vfat     4293591040   4168286208
/vmfs/volumes/1ee2ff72-75413af3-738d-850e8ab0de94  BOOTBANK2                                   1ee2ff72-75413af3-738d-850e8ab0de94     true  vfat     4293591040   4293525504

5. コピーしたVMFSを確認

以下コマンドにて、スナップショットからコピーしたVMFS (署名が重複するVMFS) を確認することができる。「iscsi_fnas_01」のデータストアが表示されることがわかる。
※なお、本コマンドは結果が表示されるまで少々時間を要する。

# esxcli storage vmfs snapshot list
5f5d5450-787693d8-d588-000c29d16ed8
   Volume Name: iscsi_fnas_01
   VMFS UUID: 5f5d5450-787693d8-d588-000c29d16ed8
   Can mount: false
   Reason for un-mountability: the original volume is still online
   Can resignature: true
   Reason for non-resignaturability:
   Unresolved Extent Count: 1

6. コピーしたVMFSに新しい署名の割り当て

esxcli storage vmfs snapshot resignatureコマンドで「新しい署名の割り当て」を行う。

# esxcli storage vmfs snapshot resignature -l iscsi_fnas_01

7. 再度VMFS一覧を確認

再度VMFSの一覧を確認する。「snap-XXXXXXXX-iscsi_fnas_01」という名前で新たにデータストアを認識していることがわかる。

# esxcli storage filesystem list
Mount Point                                        Volume Name                                 UUID                                 Mounted  Type           Size         Free
-------------------------------------------------  ------------------------------------------  -----------------------------------  -------  ------  -----------  -----------
/vmfs/volumes/5f4e587d-2e195734-cfd3-dca63269a366  datastore1                                  5f4e587d-2e195734-cfd3-dca63269a366     true  VMFS-6  45634027520  44125126656
/vmfs/volumes/5f5d5450-787693d8-d588-000c29d16ed8  iscsi_fnas_01                               5f5d5450-787693d8-d588-000c29d16ed8     true  VMFS-6  53418655744  11974737920
/vmfs/volumes/5f93c0b7-47026233-4f95-dca63269a366  snap-53543aa8-iscsi_fnas_01                 5f93c0b7-47026233-4f95-dca63269a366     true  VMFS-6  53418655744  11991515136
/vmfs/volumes/5f4e587a-25e427e9-4e0d-dca63269a366  OSDATA-5f4e587a-25e427e9-4e0d-dca63269a366  5f4e587a-25e427e9-4e0d-dca63269a366     true  VMFS-L   8321499136   5568987136
/vmfs/volumes/794a74c9-cb43f6a4-f0b4-d9e894c50593  BOOTBANK1                                   794a74c9-cb43f6a4-f0b4-d9e894c50593     true  vfat     4293591040   4168286208
/vmfs/volumes/1ee2ff72-75413af3-738d-850e8ab0de94  BOOTBANK2                                   1ee2ff72-75413af3-738d-850e8ab0de94     true  vfat     4293591040   4293525504

VMware Host Clientでも「更新」ボタンを押すことでコピーしたデータストアが表示されるようになる。

以上で作業は完了となる。

参考

人気の投稿