Zabbix は仮想環境の監視におけるデファクトスタンダードとなるか?
ユーザーに近い立場から見た2.2の評価内容
寺田氏:次に盛さんにお伺いしたいのですが、実際にZabbixを導入するユーザーに近い立場として、バージョンアップについて思うこと。早くから行っていた2.2の評価内容について紹介していただけますか。
盛氏:自社のセミナー資料からの紹介になりますが、ちょっと寺島さんにも質問してみたいと思います。
VMwareの監視を行う事前準備のところで、Zabbixを、--with-libcurl と --with-libxml2 オプションでコンパイルする必要があります。これまで自分たちでVMwareの監視をしたい場合は、例えばJavaのコマンドなどを使って行っていました。コンパイルオプションとして先の2つが出たということは、httpで取ってきたデータをxmlのパースを使ってデータを取得していると思います。なぜこのような実装になっているのでしょうか。
寺島氏:VMwareの監視で重要なのがパフォーマンスの監視です。特にvCenter経由で監視する場合は、負荷がすごく上がってしまって監視が継続できないですし、特に大規模な場合は重くなってしまいがちです。そこで、内部的にセッションを使いまわすため、メモリ上にキャッシュを持たせてパフォーマンスよく監視することが2.2のリリースまでの課題でした。
ZabbixサーバーのマネージャはCでできているので、Cから直接リクエストを出し、メモリキャッシュをうまく活用してキャッシュ情報をたくさん持たせることで、パフォーマンスが改善します。ユーザーからもこれまでより非常に軽いという感想を頂いています。
盛氏:Zabbix 2.2の検証で真っ先に驚いたのはまさにそこで、非常に負荷が軽い点でした。今まで自分たちがVMwareの監視を行おうとすると、コマンドを叩いてハイパーバイザー側に迷惑をかけてしまい、vCenter側に負荷が高くなっていました。これが解決されたのが非常に嬉しかったです。
また、ホスト名を指定してユーザー名とパスワードをマクロに登録し、あとはテンプレートを上げてしばらく待つだけで監視が始まるという設定の簡単なところにも驚きました。
VMware自体の監視もそうですが、パフォーマンスが非常に改善されています。特にCPU使用率については、(スライドを見せながら)2.0.8だとCPU使用率が高いのに対し、全く同じ監視項目で2.1.6を見てみると、負荷状況が改善されたことで、より多くの監視対象が増えています。2.2を使うことで、仮想化だけでなく、より多くの細かい情報も取れる点で非常に有用だと思いました。
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がほとんど出ないことが確認できました。
この状況で、さらにどんどん負荷をかけていくと、housekeeperという、Zabbixを運用する上で“怖い負荷”というのがあります。古いデータをどんどん削除する処理です。housekeeperが始まった頃の処理を見ると、だんだんMySQLのパフォーマンスが落ちていくものの、PostgreSQLは負荷がかかっても比較的耐えるということがわかってきました。
データベースの立場から何が起こっているのかというと、データベースが持っているトランザクション・ログの差という認識です。MySQLはトランザクション・ログが一定サイズなのに対して、PostgreSQLでは負荷が高ければ高いほど、トランザクションをどんどん遅延させることができるため、突発的な負荷がかかった時も、遅延が比較的起こりづらく、管理者に通知できます。より適切なチューニングを行うと、MySQLでも比較的安定して動作していることを確認しました。
当たり前すぎて紹介が遅れていましたが、大規模であればあるほど、Web画面でグラフをいっぱい表示して監視項目を見ているため、どうしてもデータベースに多くのアクセスがいくことで負荷をかけてしまい、監視に影響が出てしまいます。SRA OSSではクエリの負荷分散ができるpgpool-IIというツールを開発しているのですが、これを使うことで、ZabbixのWeb画面からアクセスを負荷分散しています。
ZabbixのWeb画面というのは、アクセスするとセッション情報などの書き込みを行ったり、認証ログを残したりするなど、絶対に書き込みが入ってしまいます。PostgreSQLのストリーミング・レプリケーションを使うことによって、マスターサーバーに負荷をかけることなく、より多くの監視ができるのではと注目しています。
寺田氏:pgpool-IIって、PostgreSQLを複数台、負荷分散させるようなミドルウェアだと思っていたんですけど、使い方として、書き込みと読み込みにリクエストを分けることができるということですね。
盛氏:そうです。
寺田氏:それを使うことで、マスターはマスターで書き込みながら、読み込みは別の場所から行えるということですね。
盛氏:その通りです。
寺田氏:なるほど。では次に、PostgreSQLのバックアップツールが開発されたというお話を聞いたので、そちらの紹介をお願いします。
Zabbixの設定バックアップツール
寺島氏:開発中なのですが、設定のバックアップツールがあります。既にMySQL用にはリリースされていて、これは監視設定だけバックアップするものです。
Zabbixではデータベースに監視設定と監視データをためていくのですが、例えば管理者が間違えて設定を消してしまうと、過去に取ったデータ含め消えてしまいます。そこで、バックアップから設定だけリストアできるようにMySQL用のツールを作っていました。
SRA OSSさんからお話を聞きつつ、PostgreSQLで同様のツールを開発しているところです。こういったツールがあると、エンタープライズの現場でも安定した運用環境を提供できると思っています。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Zabbix、監視システム冗長構成ソリューションを提供開始
- SRA OSSとTIS、共同でPostgreSQLの性能監視が行えるZabbixテンプレートをOSSとして公開
- VMware vCenter CapacityIQの基礎知識
- EnterpriseDBのCTOに聞いた、エンタープライズ版PostgreSQLのこれから
- PostgreSQLを監視するZabbixテンプレート pg_monz とは
- SRA OSS、PostgreSQL/PowerGresサポート&保守サービスのメニューを一部改定
- データベースエンジニアとしての可能性を広げる「OSS-DB技術者認定試験」とは
- Linux/OSSの将来展望
- 【Azure Database座談会】識者が語るMySQL/PostgreSQLマネージドサービスのメリットとは
- SRA OSS、OSS統合監視ツールZabbix、Hinemosの時間制技術支援サービスを開始