SRA OSSとZabbixの開発元であるZabbix社とのアライアンスによる、公式サポートサービス。
最新のZabbix公式安定バージョンを完全にサポート、使い方から障害対応まで、ソースコードレベルでの高品質な対応。
大規模な利用でも安定稼働する「Zabbix DBとしてPostgreSQLを利用」の場合はPostgreSQLまで含めてトータルサポート。
2016 年 6 月 7 日
SRA OSS, Inc. 日本支社
PDF 版は こちら (1,116 KB / 24ページ)
本レポートでは、2016 年 2 月 16 日リリースの Zabbix 3.0 の新機能を検証し、評価した結果を公開します。
Zabbixは、オープンソースの企業向けシステム監視ツールです。
Web ベースの使いやすい管理インタフェース、大規模な監視への対応、高機能な通知、可視化機能などが特長です。
本レポートでは、2016 年 2 月 16 日リリースの Zabbix 3.0 の正式版である 3.0.0 を使用し、実際にその新機能を検証し、評価した結果を記載しています。
Zabbix 3.0 の主な新機能は、以下になります。
a. Web インターフェースの変更
b. 暗号化に使用されるライブラリ
c. PSK による暗号化通信
d. 証明書による暗号化通信
e. zabbix_get および zabbix_sender を用いた暗号化通信
a. 未来の時点のデータを予測
b. しきい値に達するまでの秒数を予測
c. 使用例
Zabbix サーバ、プロキシ、エージェント、zabbix_sender および zabbix_get 間で TLS 1.2 を用いた暗号化通信が可能になりました。
認証の方法は、コンポーネントごとに証明書もしくは PSK (Pre-Shared Key) から選択します。
Zabbix デーモンが暗号化通信に用いるポートは暗号化されていない通信と同じポートを用いるため、別途ファイアウォールの設定などを行なう必要はありません。
暗号化通信機能の追加に伴い、Web インターフェースにも暗号化関連の項目が追加されました。
暗号化通信に使用できるライブラリは以下の 3 つです。
ソースからコンパイルする際に暗号化機能を有効にするには、どのライブラリを用いるかをオプションで明示的に指定する必要があります。
$ ./configure --enable-server --enable-agent --with-mysql \ -- with-openssl --with-net-snmp --with-libcurl --with-libxml2
Zabbix 社が配布している rpm パッケージでは、OpenSSL を使用するようになっています。
各コンポーネントで暗号化通信が使用可能かどうかは、起動後のログで確認可能です。
PSK による暗号化通信では、各コンポーネント間で PSK と PSK アイデンティティの組を用いて認証を行ないます。
◯ PSK の生成
PSK は 16 進数の文字列である必要があります。
また、Zabbix で許容される PSK のサイズは 16byte 以上 256byte 以下です。
例えば、OpenSSL を用いた以下のコマンドにより、32byte の 16 進数文字列を生成することができます。
$ openssl rand -hex 32 67913c6ef927b10645897867bdc0517b3f1106266e94054d1dc5135d852d1c3e
◯ サーバ – エージェント間の PSK による暗号化通信設定
1. エージェント側のホストに PSK をファイルとして設置します。
$ openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk $ chown zabbix.zabbix /etc/zabbix/zabbix_agentd.psk $ chmod 600 /etc/zabbix/zabbix_agentd.psk
2. Zabbix エージェントの設定ファイル (zabbix_agentd.conf) の TLS パラメータを変更します。
パラメータ | 備考 |
---|---|
TLSConnect=psk | エージェントがアクティブチェックでサーバやプロキシに接続する手法 |
TLSAccept=psk | エージェントへの接続手法 |
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk | PSK ファイルのフルパス |
TLSPSKIdentity=PSK ID 001 | PSK を識別するために用いられる任意の文字列 システム内で一意である必要がある |
3. Web インターフェースの [設定] – [ホスト] で対象ホストを選択し、[暗号化] タブから暗号化通信設定を行ないます。
ホストへの接続およびホストからの接続として 「PSK」 を選択し、PSK アイデンティティの欄にエージェントの設定ファイルで設定した TLSPSKIdentity と同じ文字列を、PSK の欄に PSK の値をそれぞれ入力します。
◯ プロキシに対する PSK を用いた暗号化通信設定
プロキシに対する PSK を用いた暗号化通信設定は、サーバーエージェント間の設定と同様に行います。
証明書による暗号化通信では、各コンポーネント間で CA により署名された PEM 形式の RSA 証明書を用いて認証を行ないます。
自己署名証明書はサポートされません。
◯ サーバ – エージェント間の証明書による暗号化通信設定
1. サーバ側のホストに CA 証明書 (zabbix_ca_file)、サーバ証明書 (zabbix_server.crt)、サーバの秘密鍵 (zabbix_server.key) を配置します。
2. Zabbix サーバの設定ファイル (zabbix_server.conf) の TLS パラメータを変更します。
パラメータ | 備考 |
---|---|
TLSCAFile=/etc/zabbix/zabbix_ca_file | 最上位 CA 証明書ファイルのフルパス 証明書チェーンの場合は下位から上位の順で、複数の CA からの証明書はその全てをこのファイルに含める |
TLSCertFile=/etc/zabbix/zabbix_server.crt | サーバ証明書ファイルのフルパス 証明書チェーンの場合はサーバ証明書を最初に、続けて下位から上位の順で CA 証明書をこのファイルに含める |
TLSKeyFile=/etc/zabbix/zabbix_server.key | サーバの秘密鍵のフルパス |
3. エージェント側のホストに CA 証明書 (zabbix_ca_file)、エージェント証明書 (zabbix_agentd.crt)、エージェントの秘密鍵 (zabbix_agentd.key) を配置します。
4. Zabbix エージェントの設定ファイル (zabbix_agentd.conf) の TLS パラメータを変更します。
TLSServerCertIssuer および TLSServerCertSubject は必須項目ではありませんが、設定することによりエージェントのセキュリティを高めることができます。
パラメータ | 備考 |
---|---|
TLSConnect=cert | エージェントがアクティブチェックでサーバやプロキシに接続する手法 |
TLSAccept=cert | エージェントへの接続手法 |
TLSCAFile=/etc/zabbix/zabbix_ca_file | 最上位 CA 証明書ファイルのフルパス 証明書チェーンの場合は下位から上位の順で、複数の CA からの証明書はその全てをこのファイルに含める |
TLSServerCertIssuer=CN=Signing CA, OU=Signing CA,O=SRA OSS Inc, DC=sraoss,DC=co,DC=jp |
サーバ証明書の発行者 |
TLSServerCertSubject=CN=Zabbix server, O=SRA OSS Inc,DC=sraoss,DC=co,DC=jp |
サーバ証明書の件名 |
TLSCertFile=/etc/zabbix/zabbix_agentd.crt | エージェント証明書ファイルのフルパス 証明書チェーンの場合はエージェント証明書を最初に、続けて下位から上位の順で CA 証明書をこのファイルに含める |
TLSKeyFile=/etc/zabbix/zabbix_agentd.key | エージェントの秘密鍵のフルパス |
5. Web インターフェースの [設定] – [ホスト] で対象ホストを選択し、[暗号化] タブから暗号化通信設定を行ないます。
ホストへの接続およびホストからの接続として「証明書」を選択し、発行者の欄にエージェント証明書の発行者を、件名の欄にエージェント証明書の件名をそれぞれ入力します。
こちらの発行者および件名もセキュリティを高めるためには設定したほうがよいでしょう。
◯ プロキシに対する証明書を用いた暗号化通信設定
プロキシに対する証明書を用いた暗号化通信設定も、サーバ – エージェント間の設定と同様に行ないますが、アクティブモードの場合には Zabbix プロキシの設定ファイル (zabbix_proxy.conf) の TLSConnect を cert、Web インターフェースの [管理] – [プロキシ] における暗号化タブのプロキシからの接続を証明書に設定します。
パッシブモードの場合には Zabbix プロキシの設定ファイルの TLSAccept を cert、Web インターフェースの [管理] – [プロキシ] における暗号化タブのプロキシへの接続を「証明書」、プロキシからの接続を「暗号なし」に設定します。
zabbix_get および zabbix_sender も PSK および証明書を用いた暗号化通信をサポートするようになりました。
◯ zabbix_get の暗号化通信
暗号化通信機能の追加に伴い、zabbix_get に以下のオプションが追加されました。
オプション | 引数 |
---|---|
–tls-connect value | エージェントへの接続法 value: uncrypted、psk、cert |
–tls-ca-file CA-file | CA 証明書のフルパス |
–tls-crl-file CRL-file | CRL ファイルのフルパス |
–tls-agent-cert-issuer cert-issuer | エージェント証明書の発行者 |
–tls-agent-cert-subject cert-subject | エージェント証明書の件名 |
–tls-cert-file cert-file | 証明書ファイルのフルパス |
–tls-key-file key-file | 秘密鍵のフルパス |
–tls-psk-identity PSK-identity | PSK アイデンティティの文字列 |
–tls-psk-file PSK-file | PSK ファイルのフルパス |
以下は PSK および証明書を用いた zabbix_get の実行例です。
$ zabbix_get -s 133.137.175.153 -k "agent.ping" \ --tls-connect psk \ --tls-psk-identity "PSK ID 001" \ --tls-psk-file /etc/zabbix/zabbix_agentd.psk 1
$ zabbix_get -s 133.137.175.180 -k "agent.ping" \ --tls-connect cert \ --tls-ca-file /etc/zabbix/zabbix_ca_file \ --tls-agent-cert-issuer "CN=Signing CA,OU=Signing CA,O=SRA OSS Inc,DC=sraoss,DC=co,DC=jp" \ --tls-agent-cert-subject "CN=Zabbix agent,O=SRA OSS Inc,DC=sraoss,DC=co,DC=jp" \ --tls-cert-file /etc/zabbix/zabbix_server_crt \ --tls-key-file /etc/zabbix/zabbix_server_key 1
◯ zabbix_sender の暗号化通信
暗号化通信機能の追加に伴い、zabbix_sender に以下のオプションが追加されました。
オプション | 引数 |
---|---|
–tls-connect value | エージェントへの接続法 value: uncrypted、psk、cert |
–tls-ca-file CA-file | CA 証明書のフルパス |
–tls-crl-file CRL-file | CRL ファイルのフルパス |
–tls-server-cert-issuer cert-issuer | サーバ証明書の発行者 |
–tls-server-cert-subject cert-subject | サーバ証明書の件名 |
–tls-cert-file cert-file | 証明書ファイルのフルパス |
–tls-key-file key-file | 秘密鍵のフルパス |
–tls-psk-identity PSK-identity | PSK アイデンティティの文字列 |
–tls-psk-file PSK-file | PSK ファイルのフルパス |
以下は PSK および証明書を用いた zabbix_sender の実行例です。
$ zabbix_sender -z 133.137.175.152 -s "zabbix-agent" \ -k "trapper" -o 10 \ --tls-connect psk \ --tls-psk-identity "PSK ID 001" \ --tls-psk-file /etc/zabbix/zabbix_agentd.psk info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000094" sent: 1; skipped: 0; total: 1
$ zabbix_sender -z 133.137.175.152 -s "agent-agent2" \ -k "trapper" -o 10 \ --tls-connect cert \ --tls-server-cert-issuer "CN=Signing CA,OU=Signing CA,O=SRA OSS Inc,DC=sraoss,DC=co,DC=jp" \ --tls-server-cert-subject "CN=Zabbix server,O=SRA OSS Inc,DC=sraoss,DC=co,DC=jp" \ --tls-ca-file /etc/zabbix/zabbix_ca_file \ --tls-cert-file /etc/zabbix/zabbix_agentd_crt \ --tls-key-file /etc/zabbix/zabbix_agentd_key info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000100" sent: 1; skipped: 0; total: 1
監視アイテムの実際の収集値ではなく、その収集値の傾向を分析し、未来の予測値や、特定の値になるまでの予測時間を通知することができるようになりました。
これによって、実際に問題が起きる前にその可能性を認識して、予防することができるようになります。
このために、予測関数として forecast()、timeleft() が追加されました。これは計算アイテムやトリガーの条件として使用することができます。
記法 | forecast (sec|#num,<time_shift>,time,<fit>,<mode>) |
---|---|
引数 |
1. sec または #num
2. time_shift
3. time
4. fit
5. mode
|
備考 |
|
設定例 |
|
記法 | timeleft (sec|#num,<time_shift>,threshold,<fit>) |
---|---|
引数 |
1. sec または #num
2. time_shift
3. threshold
4. fit
|
備考 |
|
設定例 |
|
ファイルシステム使用・空き容量の監視で、「/ の空き容量が 0 になるまであと 10 時間と予測したら通知する」ということをします。
1. timeleft() を使った計算アイテムを登録します。
タイプ | 「計算」を選択します。 |
---|---|
キー | 任意の名称をつけます。 |
式 |
「timeleft(“vfs.fs.size[/,pfree]”,1h,,0)」と入力します。 |
データ型 |
「数値(整数)」を選択します。 |
データの形式 |
「10 進数」を選択します。 |
単位 |
秒を意味する「s」を選択します。 |
アイテムの作成
[設定] > [ホスト(テンプレート) ] > 「アイテム」リンク > 「アイテムの作成」ボタン
2. トリガーを登録します。
条件式 | 「{ホスト名:timeleft_vfs_size_free.last()}<10h」と入力します。 |
---|
トリガーの作成
[設定] > [ホスト(テンプレート) ] > 「トリガー」リンク > 「トリガーの作成」ボタン
3. ディスクの空き容量を 10%以下まで減らします。
# cat add_file.sh # !/bin/sh i=0 while :; do i=`expr $i + 1` dd if=/dev/zero of=/root/test/tempfile_$i bs=1M count=100 > /dev/null 2>&1 echo $i `df -h | grep sda | awk '{print $5}'` sleep 5 done; # ./add_file.sh 1 26% 2 27% 3 28% : 116 88% 117 89% 118 90%
4. グラフを確認します。
グラフ
[監視データ] > [最新データ] > 「/残量 0 までの予測時間」の「グラフ」リンク
5. イベントを確認します。
イベント
[監視データ] > [イベント] > イベントのリンク
指定した時刻、時間帯にのみデータを取得することができるようになりました。
これまでは Zabbix サーバ全体でのメンテナンス期間は定義することはできましたが、アイテムごとにそうした指定はできませんでした。
そのため、例えば「夜間はこれらのログには必ずエラーが出力されるので、そのログ監視結果は通知しない」というような要件を満たすには、アイテムは常に収集しながら、トリガーごとにそうした設定を行なう必要がありました。
アイテム作成画面の「更新間隔カスタマイズ」の欄の「定期実行」で、監視タイミングを cron のような表記で設定することができます。
設定例 | |
---|---|
h9-17/2 | 9 時~17 時の間、2 時間おきに実行 |
wd1-5h9-18 | 毎週月曜日~金曜日、0 時~18 時の間、1 時間おきに実行 |
md1wd1h9m30 | 毎月 1 日、月曜日であれば 9 時半に実行 |
h9m/30 | 9:00 と 9:30 に実行 |
アイテムの作成
[設定] > [ホスト(テンプレート) ] > 「アイテム」リンク > 「アイテムの作成」ボタン
SMTP 認証と SSL/TLS 接続設定に対応しました。
また、SMTP サーバのポート番号を指定できるようになりました。
これまでは、SMTP 認証やデフォルトの 25 番ポートでない SMTP サーバを使う場合には、メディアタイプを「メール」ではなく「スクリプト」として、ユーザが独自にスクリプトを用意して使うことで対応していました。
SMTP の設定
[管理] > [メディアタイプ] > 「Email」リンク
Web インターフェースの PHP が大幅にリファクタリングされました。
また、デザインも一新され、従来のデザインを踏襲した Blue テーマの他に Dark テーマも追加されました。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
その他に以下のような改善・変更もされています。
これまでナビゲーションの「設定」の下にありましたが、「監視データ」の下に変わりました。
また、マップ、スクリーン、スライドショーのアクセス権が見直され、一般ユーザでも作成できるようになりました。
これまで、マップ、スクリーン、スライドショーを設定することができるのは管理者ユーザだけで、全ユーザで共有のものでした。
そのため、一般ユーザが自分しか使わないようなマップ等でも、管理者ユーザに作成を依頼する必要がありました。
Zabbix 3.0 では、そうした設定権限がない一般ユーザーも、マップ、スクリーン、スライドショーを作成できるようになりました。
また、作成したものを「非公開」とすれば、ユーザ個人ごとのものになります。
「公開」にすると他のユーザーやグループと共有することもできます。
マップの作成
[監視データ] > [マップ] > 「マップの作成」ボタン > 「共有」タブ
ログ監視で数値を抜き出して登録するアイテムは、これまでログデータ型としてしか登録できませんでしたが、数値として登録できるようになりました。
これによって、値を数値として監視したり、グラフを描画したりできるようになりました。
$ tail /tmp/test.log 使用率=12.25% 使用率=31.10% 使用率=73.91% 使用率=45.89% 使用率=7.13% 使用率=16.72% 使用率=51.47% 使用率=9.93% 使用率=65.15% 使用率=54.26%
アイテムの作成
[設定] > [ホスト(テンプレート) ] > 「アイテム」リンク > 「アイテムの作成」ボタン
アイテム収集値のグラフ
[監視データ] > [最新データ] > 「グラフ」リンク
値のマッピングを XML にエクスポートしたり、XML からインポートできるようになりました。
設定のインポート
[設定] > [ホスト] または [テンプレート] > 「インポート」ボタン
グラフの期間の最小単位が 1 分になりました。
ホストやテンプレートのマクロ一覧で、グローバル、テンプレート、ホストのどこで設定されているか、確認できるようになりました。
また、実際に利用される値を確認できるようになりました。
グローバルマクロの設定
[管理] > [一般設定] > 「マクロ」選択
ホストマクロの設定
[設定] > [ホスト] > ホスト名 > 「マクロ」タブ > 「継承したマクロとホストマクロ」
テンプレートマクロの設定
[設定] > [テンプレート] > テンプレート名 > 「マクロ」タブ > 「継承したマクロとテンプレートマクロ」
ホスト、ホストグループでのフィルタ、特定の期間によるフィルタ、日、週、月のショートカットリンクが追加されました。
障害発生数上位 100 項目
[レポート] > 障害発生数上位 100 項目
Zabbix では保存期間の過ぎた古いデータを削除する housekeeper 処理が、定期的に自動実行されます。
この処理は削除するデータ量によっては負荷が高く、監視や通知に影響を与える場合があります。
これを改善するために、housekeeper 処理を自動的に行なわず、任意のタイミングで手動実行することができるようになりました。
手動実行するには以下のコマンドを実行します。
$ zabbix_server -R housekeeper_execute zabbix_server [10231]: command send successfully
housekeeper の自動実行を無効化するには、Zabbix サーバの 設定ファイル
/etc/zabbix/zabbix_server.conf で「HousekeepingFrequency」を「0」にします。
### Option: HousekeepingFrequency # How often Zabbix will perform housekeeping procedure (in hours). # Housekeeping is removing outdated information from the database. # To prevent Housekeeper from being overloaded, no more than 4 times HousekeepingFrequency # hours of outdated information are deleted in one housekeeping cycle, for each item. # To lower load on server startup housekeeping is postponed for 30 minutes after server start. # With HousekeepingFrequency=0 the housekeeper can be only executed using the runtime control option. # In this case the period of outdated information deleted in one housekeeping cycle is 4 times the # period since the last housekeeping cycle, but not less than 4 hours and not greater than 4 days. # # Mandatory:no # Range: 0-24 # Default: # HousekeepingFrequency=1 HousekeepingFrequency=0
proc.cpu.util が新しく追加され、Linux や Solaris でプロセスごとの CPU 情報を取得できるようになりました。
その他にもアイテムの追加や改良がされています。
trend.get でトレンドの取得ができるようになりました。
その他にも関数の追加や改良がされています。
03-5979-2701 |