

Zabbix Cloud使ってみました(2) – Zabbix proxyを使った監視実践編
こんにちは。プラットフォーム技術部の佐藤(賢)です。
Zabbix Cloud使ってみましたシリーズとして、前回に続きましてZabbix proxyを用いた監視環境構築をおこなってみます。
今回は以下のように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.key | root:root | 0600 | 署名時にのみ使用 |
CA証明書 | /etc/zabbix/pki/tls/certs/ca.crt | root:root | 0644 | Zabbix Cloudにアップロード Zabbix proxyに配備、設定 |
サーバー秘密鍵 | /etc/zabbix/pki/tls/private/server.key | zabbix:root | 0600 | Zabbix Cloudにアップロード |
サーバー証明書 | /etc/zabbix/pki/tls/certs/server.crt | root:root | 0644 | Zabbix Cloudにアップロード |
プロキシ秘密鍵 | /etc/zabbix/pki/tls/private/proxy.key | zabbix:root | 0600 | Zabbix proxyに配備、設定 |
プロキシ証明書 | /etc/zabbix/pki/tls/certs/proxy.crt | root:root | 0644 | Zabbix proxyに配備、設定 |
証明書期限は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タブを選択します。


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


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


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


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アイコンがグリーンになっており、暗号化通信も成立していることがわかります。


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


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


Zabbix agent監視
続けてWindows Server 2025にZabbix agent 2を導入して監視します。Zabbix proxyが稼働するRocky Linux 9にもZabbix agent 2を導入して監視しますが、こちらの手順は割愛します。
Zabbix agent 2の導入と設定
Zabbix agent 2を導入する際のパラメーター指定は以下のようになります。
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監視も実施できていることが確認できました。


次回は
今回はZabbix Cloudの利用方法として、Zabbix proxyと暗号化通信を用いた監視環境の構築方法を紹介しました。
ところで本記事のNode configurationのスクリーンショットに、初期状態では表示されない以下のタブが表示されていることに気づかれた方もいらっしゃるかもしれません。
- Backups
- History
- Maintenance
これらは支払い情報を設定すると表示される項目です。
次回はこれらZabbix Cloud独自の機能に関して紹介したいと思います。
Zabbixの導入・構築でお困りですか?
Zabbixの導入・構築でお困りですか?アークシステムは、Zabbix Japan LLCの公式認定パートナーとして、豊富な実績と高い技術力でお客様をサポートします。
アークシステムが選ばれる理由
- 豊富な経験: 多くのZabbix導入・構築プロジェクトを成功に導いた実績
- 確かな技術力: Zabbix認定資格を持つエンジニアが対応
- 独自のソリューション: 「監視定義テンプレート」を活用した迅速かつ高品質な実装
- 最新情報へのアクセス: Zabbix社との強力なパートナーシップを活かした最新技術対応
こんな方に最適です
- Zabbixの新規導入を検討している
- 現行システムの運用に課題を感じている
- 大規模環境での監視体制を整えたい
アークシステムでは、Zabbixの導入・運用に関する課題を解決し、最適な環境を構築します。どんなご相談でもお気軽にお問い合わせください!