Zabbix Cloud使ってみました(2) – Zabbix proxyを使った監視実践編

Amazon Web Services,Zabbix,Zabbix Cloud

こんにちは。プラットフォーム技術部の佐藤(賢)です。

Zabbix Cloud使ってみましたシリーズとして、前回に続きましてZabbix proxyを用いた監視環境構築をおこなってみます。

今回は以下のようにAWS環境上のホストを監視するための構成を用意しました。

AWSに用意した監視対象
AWSに用意した監視対象

構成方針は以下の通りです。

  • Zabbix proxyを監視対象環境に用意してElastic IPを付与し、Zabbix Cloudとの通信対象を限定します
  • Zabbix proxyはアクティブproxyとし、Zabbix CloudからZabbix proxyに向けてのインバウンド通信を不要にします
  • Zabbix CloudとZabbix proxyの間はRSA証明書による暗号化を実施します
  • Zabbix proxyは2台をマルチAZ配置し、Proxy Groupにより冗長化します

AWS環境、EC2やZabbixパッケージ群の導入は完了している状態から構築を実施していきます。

RSA証明書の作成

Zabbix server、Zabbix proxyおよびZabbix agent間の通信には、それぞれPSK(事前共有鍵)による暗号化やRSA証明書による暗号化を施すことができます。Zabbix CloudではRSA証明書による暗号化のみがサポートされていますので、こちらでZabbix proxyとの通信を暗号化します。

なおZabbixでは自己署名証明書を利用できませんので、CAで署名された証明書が必要になります(厳密にはCA証明書とサーバー証明書のIssuerやSubjectが一致してはならないという制約です)。

今回はプライベートCAを用意してRSA証明書の作成を実施していきます。以下を参考にしました。

ファイルとしてはZabbix proxy上に下記構成で秘密鍵や証明書を用意していきます。ファイルパスは/etc/pki以下を模倣しました。

種別ファイル所有者パーミッション用途
CA秘密鍵/etc/zabbix/pki/tls/private/ca.keyroot:root0600署名時にのみ使用
CA証明書/etc/zabbix/pki/tls/certs/ca.crtroot:root0644Zabbix Cloudにアップロード
Zabbix proxyに配備、設定
サーバー秘密鍵/etc/zabbix/pki/tls/private/server.keyzabbix:root0600Zabbix Cloudにアップロード
サーバー証明書/etc/zabbix/pki/tls/certs/server.crtroot:root0644Zabbix Cloudにアップロード
プロキシ秘密鍵/etc/zabbix/pki/tls/private/proxy.keyzabbix:root0600Zabbix proxyに配備、設定
プロキシ証明書/etc/zabbix/pki/tls/certs/proxy.crtroot:root0644Zabbix proxyに配備、設定
RSA証明書ファイルの構成

証明書期限は10年とします。また、NISTによりますとRSA鍵長2048bitsは2030年まで安全とされていますので、10年利用を見越して鍵長は4096bitsで作成していきます。

プライベートCAの作成

ディレクトリを作成します。

$ sudo mkdir -p /etc/zabbix/pki/tls/{certs,private}

CA用の秘密鍵を作成します。

$ sudo openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 \
 -out /etc/zabbix/pki/tls/private/ca.key
$ sudo chown root:root /etc/zabbix/pki/tls/private/ca.key
$ sudo chmod 0600      /etc/zabbix/pki/tls/private/ca.key

CA証明書を作成します。

$ sudo openssl req -new -x509 -days 3650 \
 -addext keyUsage=critical,keyCertSign,cRLSign \
 -subj "/CN=Zabbix Private CA" \
 -key /etc/zabbix/pki/tls/private/ca.key \
 -out /etc/zabbix/pki/tls/certs/ca.crt

署名作業用の設定ファイルを用意します。

$ cat <<__EOF__ | sudo tee /etc/zabbix/pki/tls/openssl.cnf
[cert]
keyUsage = critical, digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = serverAuth, clientAuth

[req]
distinguished_name = dn
prompt = no

[dn]
C = JP
O = ARK
__EOF__

これから作成する証明書にはすべて「サーバー証明」、「クライアント証明」の用途(extendedKeyUsage)を付与します。厳密には通信方向によって一方の用途のみで済む場合もあるのですが、簡略化のため両用途を付与することとしました。

サーバー証明書の作成

サーバー証明書用の秘密鍵を作成します。

$ sudo openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 \
 -out /etc/zabbix/pki/tls/private/server.key
$ sudo chown zabbix:root /etc/zabbix/pki/tls/private/server.key
$ sudo chmod 0600        /etc/zabbix/pki/tls/private/server.key

サーバー証明書用のCSRを作成します。

$ sudo openssl req -new \
 -config /etc/zabbix/pki/tls/openssl.cnf \
 -key /etc/zabbix/pki/tls/private/server.key \
 -out /etc/zabbix/pki/tls/certs/server.csr

プライベートCAで署名し、サーバー証明書を作成します。

$ sudo openssl x509 -req -days 3650 \
 -in /etc/zabbix/pki/tls/certs/server.csr \
 -CA /etc/zabbix/pki/tls/certs/ca.crt \
 -CAkey /etc/zabbix/pki/tls/private/ca.key \
 -extfile /etc/zabbix/pki/tls/openssl.cnf \
 -extensions cert \
 -subj "/CN=Zabbix server" \
 -out /etc/zabbix/pki/tls/certs/server.crt

プロキシ証明書の作成

プロキシ証明書用の秘密鍵を作成します。

$ sudo openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 \
 -out /etc/zabbix/pki/tls/private/proxy.key
$ sudo chown zabbix:root /etc/zabbix/pki/tls/private/proxy.key
$ sudo chmod 0600        /etc/zabbix/pki/tls/private/proxy.key

プロキシ証明書用のCSRを作成します。

$ sudo openssl req -new \
 -config /etc/zabbix/pki/tls/openssl.cnf \
 -key /etc/zabbix/pki/tls/private/proxy.key \
 -out /etc/zabbix/pki/tls/certs/proxy.csr

プライベートCAで署名し、プロキシ証明書を作成します。

$ sudo openssl x509 -req -days 3650 \
 -in /etc/zabbix/pki/tls/certs/proxy.csr \
 -CA /etc/zabbix/pki/tls/certs/ca.crt \
 -CAkey /etc/zabbix/pki/tls/private/ca.key \
 -extfile /etc/zabbix/pki/tls/openssl.cnf \
 -extensions cert \
 -subj "/CN=Zabbix proxy" \
 -out /etc/zabbix/pki/tls/certs/proxy.crt

RSA証明書の配備

Zabbix Cloudへの配備

Zabbix Cloudのノード画面で、作成したRSA証明書をアップロードします。アップロード対象は以下の3ファイルです。

  • /etc/zabbix/pki/tls/certs/ca.crt
  • /etc/zabbix/pki/tls/certs/server.crt
  • /etc/zabbix/pki/tls/private/server.key

ノード設定からEncryptionタブを選択します。

ノード設定からEncryptionタブを選択
ノード設定からEncryptionタブを選択

CERTIFICATEを選択すると各ファイルのアップロードがおこなえるようになります。Root CA certificates、Certificate chainおよびPrivate keyに、それぞれca.crt、server.crtおよびserver.keyをアップロードします。

RSA証明書ファイルアップロード画面
RSA証明書ファイルアップロード画面

Saveを押下するとZabbix serverプロセスの再起動をしてよいか確認をされますので、Confirmを押下してください。

サーバー再起動確認
サーバー再起動確認

オンプレミス環境にZabbix serverを構築している場合は以下をzabbix_server.confに設定することになりますので、これらの設定とサービスへの反映が実施されていると思われます。

TLSCAFile=/etc/zabbix/pki/tls/certs/ca.crt
TLSCertFile=/etc/zabbix/pki/tls/certs/server.crt
TLSKeyFile=/etc/zabbix/pki/tls/private/server.key

Zabbix CloudへのRSA証明書配備は完了しました。ついでにZabbix proxyに割り当てたElastic IPをAccess filtersに登録しておきましょう。

Zabbix proxyに割り当てたElastic IPをAccess filtersに登録
Zabbix proxyに割り当てたElastic IPをAccess filtersに登録

以上でZabbix Cloud画面での設定作業は完了です(Zabbixフロントエンドでの設定は別に実施します)。

Zabbix proxyの設定

RSA証明書の作成をZabbix proxy上で実施していますので、あらためてファイル配備は不要です。従ってzabbix_proxy.confにRSA証明書の利用設定を施すだけです。

ServerやHostnameなどの基本的な設定が完了している場合、以下の設定を追加してサービスを再起動します。

$ cat <<__EOF__ | sudo tee -a /etc/zabbix/zabbix_proxy.conf
TLSConnect=cert
TLSAccept=cert
TLSCAFile=/etc/zabbix/pki/tls/certs/ca.crt
TLSCertFile=/etc/zabbix/pki/tls/certs/proxy.crt
TLSKeyFile=/etc/zabbix/pki/tls/private/proxy.key
__EOF__
$ sudo systemctl restart zabbix-proxy.service

ZabbixフロントエンドでZabbix proxy登録

Proxy group作成

最初にProxy groupを作成します。Administration -> Proxy groupsからCreate proxy groupを実施します。名称はzabbix-cloud-proxy-groupとしています。

Proxy group作成
Proxy group作成

Proxy作成

次にProxyを作成します。Administration -> ProxiesからCreate proxyを実施します。名称はzabbix-cloud-proxy1とし、先ほどのProxy groupを指定します。Address for active agentsにはAWS環境でのプライベートIPアドレスを指定します。

Proxy作成
Proxy作成

また、EncryptionタブのConnection from proxyでCertificateをチェックし、Proxyからの通信にRSA証明書を使用することを指定します。IssuerやSubjectは必須ではありませんので今回は未指定にしています。

Proxyの暗号化設定
Proxyの暗号化設定

IssuerやSubjectも制限したい場合は、実際の証明書からコマンドで確認した値を設定するのがよいと思います。

$ openssl x509 -noout -issuer -subject -in /etc/zabbix/pki/tls/certs/proxy.crt
issuer=CN=Zabbix Private CA
subject=CN=Zabbix proxy

2台目も同様に登録し、無事通信が成立するとOnlineステータスになります。Encryption欄もCERTアイコンがグリーンになっており、暗号化通信も成立していることがわかります。

CERTアイコンがグリーンに
CERTアイコンがグリーンに

Zabbix proxy healthテンプレートによるProxy性能監視設定

通信が成立したZabbix proxy 2台を監視対象ホストとして登録し、Zabbix proxy healthテンプレートによる性能監視を実施してみます。以下はzabbix-cloud-proxy1ホストをzabbix-cloud-proxy1プロキシ経由で監視するという設定になります。ややこしいですね。プロキシ自身との通信は成立していますので、ホストでのInterfacesやEncryption設定は不要です。

Zabbix proxyのホスト登録
Zabbix proxyのホスト登録

2台目も同様に登録し、Latest dataで値が取得できていることが確認できました。

Zabbix proxyホスト登録後のLatest data
Zabbix proxyホスト登録後のLatest data

Zabbix agent監視

続けてWindows Server 2025にZabbix agent 2を導入して監視します。Zabbix proxyが稼働するRocky Linux 9にもZabbix agent 2を導入して監視しますが、こちらの手順は割愛します。

Zabbix agent 2の導入と設定

Zabbix agent 2を導入する際のパラメーター指定は以下のようになります。

Zabbix agent 2 configuration
Zabbix agent 2 configuration

WindowsのZabbix agent監視でもアクティブ通信のみ使用しますので、Zabbix serverやZabbix proxyからZabbix agent向けの通信は発生しません。"Zabbix serve IP/DNS"はローカルループバックである127.0.0.1のみ、"Server or Proxy for active checks"にはZabbix proxy 2台のプライベートIPアドレスをセミコロン区切りで指定します。

Zabbixフロントエンドでのホスト設定

Zabbixフロントエンドでのホスト登録を実施します。

ホスト設定
ホスト設定

Templatesには"Windows by Zabbix agent active"を適用し、"Monitored by"にはProxy groupを設定します。アクティブ通信のみの利用ですのでInterfaces設定も不要です。

Latest dataを確認するとWindows ServerのZabbix agent監視も実施できていることが確認できました。

windows1のLatest data
windows1のLatest data

次回は

今回はZabbix Cloudの利用方法として、Zabbix proxyと暗号化通信を用いた監視環境の構築方法を紹介しました。

ところで本記事のNode configurationのスクリーンショットに、初期状態では表示されない以下のタブが表示されていることに気づかれた方もいらっしゃるかもしれません。

  • Backups
  • History
  • Maintenance

これらは支払い情報を設定すると表示される項目です。

次回はこれらZabbix Cloud独自の機能に関して紹介したいと思います。

Zabbixの導入・構築でお困りですか?

Zabbixの導入・構築でお困りですか?アークシステムは、Zabbix Japan LLCの公式認定パートナーとして、豊富な実績と高い技術力でお客様をサポートします。

アークシステムが選ばれる理由

  • 豊富な経験: 多くのZabbix導入・構築プロジェクトを成功に導いた実績
  • 確かな技術力: Zabbix認定資格を持つエンジニアが対応
  • 独自のソリューション: 「監視定義テンプレート」を活用した迅速かつ高品質な実装
  • 最新情報へのアクセス: Zabbix社との強力なパートナーシップを活かした最新技術対応

こんな方に最適です

  • Zabbixの新規導入を検討している
  • 現行システムの運用に課題を感じている
  • 大規模環境での監視体制を整えたい

アークシステムでは、Zabbixの導入・運用に関する課題を解決し、最適な環境を構築します。どんなご相談でもお気軽にお問い合わせください!

  • Zabbix Enterprise Appliance
  • 低コスト・短納期で提供するまるごとおまかせZabbix