Zabbix は仮想環境の監視におけるデファクトスタンダードとなるか?

2014年5月28日(水)
Think IT編集部

ユーザーに近い立場から見た2.2の評価内容

寺田氏:次に盛さんにお伺いしたいのですが、実際にZabbixを導入するユーザーに近い立場として、バージョンアップについて思うこと。早くから行っていた2.2の評価内容について紹介していただけますか。

盛氏:自社のセミナー資料からの紹介になりますが、ちょっと寺島さんにも質問してみたいと思います。

VMwareの監視を行う事前準備のところで、Zabbixを、--with-libcurl と --with-libxml2 オプションでコンパイルする必要があります。これまで自分たちでVMwareの監視をしたい場合は、例えばJavaのコマンドなどを使って行っていました。コンパイルオプションとして先の2つが出たということは、httpで取ってきたデータをxmlのパースを使ってデータを取得していると思います。なぜこのような実装になっているのでしょうか。

寺島氏:VMwareの監視で重要なのがパフォーマンスの監視です。特にvCenter経由で監視する場合は、負荷がすごく上がってしまって監視が継続できないですし、特に大規模な場合は重くなってしまいがちです。そこで、内部的にセッションを使いまわすため、メモリ上にキャッシュを持たせてパフォーマンスよく監視することが2.2のリリースまでの課題でした。
ZabbixサーバーのマネージャはCでできているので、Cから直接リクエストを出し、メモリキャッシュをうまく活用してキャッシュ情報をたくさん持たせることで、パフォーマンスが改善します。ユーザーからもこれまでより非常に軽いという感想を頂いています。

VMware監視の事前準備(クリックで拡大)

盛氏:Zabbix 2.2の検証で真っ先に驚いたのはまさにそこで、非常に負荷が軽い点でした。今まで自分たちがVMwareの監視を行おうとすると、コマンドを叩いてハイパーバイザー側に迷惑をかけてしまい、vCenter側に負荷が高くなっていました。これが解決されたのが非常に嬉しかったです。
また、ホスト名を指定してユーザー名とパスワードをマクロに登録し、あとはテンプレートを上げてしばらく待つだけで監視が始まるという設定の簡単なところにも驚きました。

VMware自体の監視もそうですが、パフォーマンスが非常に改善されています。特にCPU使用率については、(スライドを見せながら)2.0.8だとCPU使用率が高いのに対し、全く同じ監視項目で2.1.6を見てみると、負荷状況が改善されたことで、より多くの監視対象が増えています。2.2を使うことで、仮想化だけでなく、より多くの細かい情報も取れる点で非常に有用だと思いました。

CPU使用率(負荷)の改善(クリックで拡大)

Zabbixによる監視の事例

寺田氏:仮想化環境上のシステムを実際にZabbixで監視している事例について、紹介できるものがあれば教えてください。

寺島氏:直接名前を出すのが難しいのですが、日本を含む世界において、大規模、VMware環境での実績が出てきています。例えば、Zabbix Japanのサイトにある、昨年開催されたカンファレンスのページでは、Niftyさんが実際にVMwareの仮想環境を使って監視を行ったテスト内容が紹介されています。1000VM追加した際のパフォーマンスデータなど、2.2のリリース直後から積極的にテストに参加して頂いています。

寺田氏:個人的な感覚として、Zabbixはネット企業やスタートアップの企業などでは多く使われているイメージがありますが、大手企業の社内システムなど、エンタープライズ分野での導入状況や事例についてはいかがでしょう?

寺島氏:国内でも金融、証券、キャリア、公共団体などで使われています。世界での一例を挙げると、フランスの銀行ではATMのアベイラビリティなどを監視していて、具体的に何台くらい監視しているのかなどの具体的な情報も公開されています。他にもネットワーク系の企業でキャリアに近いサービスを提供している会社では、数万台規模で監視をしている事例も出てきています。

寺田氏:監視対象のサーバーが台数が多いと、エンタープライズの企業もコスト感などからZabbixを選択するのでしょうか。

寺島氏:大規模な場合はライセンス費用だけで高額になるため、当然コストメリットもあります。他には、ソースコードがオープンだということが大きく、自分たちが何をしているのかを常に把握できることにメリットを感じているユーザーも多いようです。

寺田氏:オープンソースということで、使う側が自分で機能を拡張しやすいと聞いたのですが、エンタープライズのユーザーも自分たちのシステムに合うよう機能追加しているのでしょうか。

寺島氏:機能拡張を行うユーザーもいますが、どちらかというとZabbixの内部を詳しく理解して、例えば問題があった場合は機能改善要望や追加要望を上げてもらうことで、弊社が開発し次のバージョンで取り込んでリリースするといった、ユーザー含めZabbixを良くしていくような輪をうまく回していくスタイルで開発していくことが多いです。

大規模環境に向いているデータベースはMySQL?PostgreSQL?

寺田氏:エンタープライズのユーザーや数万台という大規模環境のお話から。SRA OSSさんのホームページで拝見したのですが、ZabbixのデータベースとしてMySQLやPostgreSQLを盛さんが比較したページがあったのですが、その辺りについて紹介していただけますか。

参考:セミナー資料(SRA OSS)

寺田氏:大規模エンタープライズの場合はPosgreSQLがいいという結論だった気がするのですが、、

盛氏:そうでしたかね(笑)。私の場合、単純に大規模なデータベースとして使う場合、どちらがいいのかというよりも、PostgreSQLがどこまで行けるのか知りたくて検証を行いました。

どのくらいの規模で行ったかというと、600ホストをシミュレートして、1ホスト辺り44アイテムを設定して、5秒という非常に短い間隔でアイテムを取得し、Zabbixサーバーに思い切り負荷をかけてみました。その時のデータベースの負荷がどうなっているのかというベンチマークです。

データベース比較のテスト項目(クリックで拡大)

MySQLとPostgreSQLで、Zabbixの立場から性能を見てみました。パラメータが全てデフォルトでの比較ではMySQLが圧倒的に性能がよいという結果が出ました。これはMySQLに割り当てられているデフォルトのメモリ量はPostgreSQLの4倍程度高いことが響いています。そこで、少しチューニングしたところほぼ同じ性能になりました。

Zabbixを運用していると、データベースのアクセスがどんどん多くなってしまうために、I/O waitが多発する傾向にあります。CPU利用率を見たところ、ほとんど同じ負荷状況なものの、PostgreSQLではI/O waitがほとんど出ないことが確認できました。

(左)デフォルトではMySQLが圧倒的/(右)メモリ量含めたチューニングでほぼ同じ結果に(クリックで拡大)

この状況で、さらにどんどん負荷をかけていくと、housekeeperという、Zabbixを運用する上で“怖い負荷”というのがあります。古いデータをどんどん削除する処理です。housekeeperが始まった頃の処理を見ると、だんだんMySQLのパフォーマンスが落ちていくものの、PostgreSQLは負荷がかかっても比較的耐えるということがわかってきました。
データベースの立場から何が起こっているのかというと、データベースが持っているトランザクション・ログの差という認識です。MySQLはトランザクション・ログが一定サイズなのに対して、PostgreSQLでは負荷が高ければ高いほど、トランザクションをどんどん遅延させることができるため、突発的な負荷がかかった時も、遅延が比較的起こりづらく、管理者に通知できます。より適切なチューニングを行うと、MySQLでも比較的安定して動作していることを確認しました。

当たり前すぎて紹介が遅れていましたが、大規模であればあるほど、Web画面でグラフをいっぱい表示して監視項目を見ているため、どうしてもデータベースに多くのアクセスがいくことで負荷をかけてしまい、監視に影響が出てしまいます。SRA OSSではクエリの負荷分散ができるpgpool-IIというツールを開発しているのですが、これを使うことで、ZabbixのWeb画面からアクセスを負荷分散しています。

ZabbixのWeb画面というのは、アクセスするとセッション情報などの書き込みを行ったり、認証ログを残したりするなど、絶対に書き込みが入ってしまいます。PostgreSQLのストリーミング・レプリケーションを使うことによって、マスターサーバーに負荷をかけることなく、より多くの監視ができるのではと注目しています。

pgpool-IIを使ってアクセスを負荷分散させる(クリックで拡大)

寺田氏:pgpool-IIって、PostgreSQLを複数台、負荷分散させるようなミドルウェアだと思っていたんですけど、使い方として、書き込みと読み込みにリクエストを分けることができるということですね。

盛氏:そうです。

寺田氏:それを使うことで、マスターはマスターで書き込みながら、読み込みは別の場所から行えるということですね。

盛氏:その通りです。

寺田氏:なるほど。では次に、PostgreSQLのバックアップツールが開発されたというお話を聞いたので、そちらの紹介をお願いします。

Zabbixの設定バックアップツール

寺島氏:開発中なのですが、設定のバックアップツールがあります。既にMySQL用にはリリースされていて、これは監視設定だけバックアップするものです。
Zabbixではデータベースに監視設定と監視データをためていくのですが、例えば管理者が間違えて設定を消してしまうと、過去に取ったデータ含め消えてしまいます。そこで、バックアップから設定だけリストアできるようにMySQL用のツールを作っていました。
SRA OSSさんからお話を聞きつつ、PostgreSQLで同様のツールを開発しているところです。こういったツールがあると、エンタープライズの現場でも安定した運用環境を提供できると思っています。

Zabbix設定バックアップツール(クリックで拡大)

“オープンソース技術の実践活用メディア” をスローガンに、インプレスグループが運営するエンジニアのための技術解説サイト。開発の現場で役立つノウハウ記事を毎日公開しています。

2004年の開設当初からOSS(オープンソースソフトウェア)に着目、近年は特にクラウドを取り巻く技術動向に注力し、ビジネスシーンでOSSを有効活用するための情報発信を続けています。クラウドネイティブ技術に特化したビジネスセミナー「CloudNative Days」や、Think ITと読者、著者の3者をつなぐコミュニティづくりのための勉強会「Think IT+α勉強会」、Web連載記事の書籍化など、Webサイトにとどまらない統合的なメディア展開に挑戦しています。

また、エンジニアの独立・起業、移住など多様化する「働き方」「学び方」「生き方」や「ITで社会課題を解決する」等をテーマに、世の中のさまざまな取り組みにも注目し、解説記事や取材記事も積極的に公開しています。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています