« PDキッド エピソード2 : PDキッドがキャパシティの難題に挑む | メイン | PDキッド エピソード3 : PDキッドがデータベースのパフォーマンスに挑む »

2016/07/13

24時間365日のOpenStackの監視 : アーキテクチャとツール

本記事の原文:24/7 OpenStack Monitoring: Architecture and Toolsの公開は2016年の5月24日です。現時点では機能が拡張されたり、改善されている場合がございますのでご注意ください。

Platform9製品詳細についてはこちら

OpenStackのCeilometerプロジェクトがテレメトリーについて、大きな人気を博している一方で、これ自体は本当の意味でのOpenStackの監視ソリューションにはなりえません。CeilometerはOpenStackで管理されているオブジェクト(インスタンス、ヴォリューム、ネットワークなどの全て)の利用状況のデータを集めるデータ収集サービスであり、OpenStackのエラーや不具合を監視するための、すぐに使えるというソリューションではないのです。我々のコアバリューはお客様のためのOpenStackの監視を提供していることですから、我々はOpenStackのプロアクティブな(事前対応的な)24時間365日の監視をどのように実現するか、考えなくてはなりませんでした。

今回の記事では、Platform9がどのようにOpenStackのマネージドサービスを監視しているのか、そしてどのようなツールを使ってそれを実装しているのかについて解説していきます。プロアクティブな監視は100%の顧客満足度を実現している我々の秘伝のソースのキー要素で、業界をリードするOpenStackのSLAの実現に大きく寄与しています。ご自身のOpenStack環境の監視についての戦術を模索しているのでしたら、この情報は絶対にお役に立つと思います。

監視とは何か? どうしてそれが重要なのか?

監視は収集、分析のシステム化された手順であり、そのデータを例えば、プライベートクラウドのような複雑なシステムの健全性の継続確認に利用することです。もっとシンプルにいえば、監視とは問題となっているものについて警告を上げてくれるという事になります。

クラウドを監視するためには、そのクラウドを構成する物理や仮想のリソースやそのユーザーやサービスの動きについての確固たるデータの収集が必要となります。収集されたデータは殆どの場合、リアルタイムに分析され、事前に定義されたクライテリアに応じて適切なアクションを発行します。また、大抵はそのデータは中長期のトレンド分析のために保存されます。

最低限、監視はシステムを健全な、動作状態へ復旧させるために、障害イベントについて検知できなくてはなりません。しかし、こうした事後対応的な監視では、システムにダウンタイムが発生し、ユーザーの不満を生み出すことになります。プロアクティブな(事前対応的な)監視ではエラーの状態をチェックすることは、システムやユーザーの振る舞いによる不具合だけでなく、システムのパフォーマンスやイベントログについても考慮に入れておかなくてはなりません。

監視によって集められたデータはエラーや問題のトラブルシューティング、そしてユーザーにそれが影響が出る前にその問題を発見するために利用されます。加えて、監視で得られた知見はクラウドのリソースのキャパシティプランニングの役に立ったり、コンプライアンス準拠への監査に利用したり、他にもいろいろなことに利用が可能です。

OpenStackの監視についての現状

最低限で構成されているOpenStackにおいても、最低限、様々なコントローラーサービスの監視が必要となります。 Nova、Glance、Cinder、KeyStone、Neutron、等々です。加えて、全てのコンピューティングノード、ストレージノードの監視も必要です。OpenStackのサービスを使う幅が広がれば完全なOpenStack環境の監視に必要となる監視項目も増えていきます。CeilometerプロジェクトはOpenStackコミュニティ内で活況を呈していますが、これはOpenStackが管理しているオブジェクト(インスタンス、ヴォリューム、ネットワーク等)の利用状況を計測するように設計されており、インフラストラクチャやOpenStackの内部コンポーネントの健全性を監視するようには設計されていません。CeilometerをOpenStack全体の監視が出来るように改造しようという様々な試みが行われていますが、上手く行ったものはありません。理由はそのような目的のためには設計されていないからです。

最も広く利用されている監視ソリューションはNagios、Zabbix、Graphite、ELKStack(ElasticSearch、LogStashに加えてKibana)などのツールを組み合わせたお手製のツールであるというのが実情です。

Platform9にとって何故24時間365日の監視が重要なのか?

Platform9はあらゆるお客さま、あらゆる規模のプライベートクラウドを可能な限り簡単にすることを目指しています。我々のソリューションはOpenStackをマネージドサービスとして提供します。これは、我々はOpenStackクラウドコントローラーを分離されたOpenStack環境としてお客様の代わりに管理し、展開、監視、トラブルシュート、アップグレードについて責任をもって対応することを意味します。我々はお客様のデータセンタ内に完全にデータを残したまま、お客様のインフラストラクチャのリソースを管理しなくてはならないのです。

Fig002ですから、本当の高可用性のある、本稼働環境を想定したサービスを提供するためには我々は24時間365日のOpenStack監視を提供し、顧客のクラウドインフラストラクチャのあらゆる箇所での問題を知っておかなければならないのです。

Platform9は何を監視しているか?

簡潔に言うと : 我々のSLAに影響があり得るものの全て

Platform9は我々がお客様に保証しているOpenStackのSLAに影響を与えうる全てのコンポーネントを常に監視しています。この監視インフラストラクチャは我々の開発環境の物理サーバやクラウドインスタンスの監視も行っており、開発チームの生産性を上げるためにも役立っています。目的は我々のお客様と開発チームの双方が必要なリソースが利用できることを保証することです。

これを保証するために、我々は全てのOpenStackサービス、その下のコンピューティングとストレージ、ネットワークインフラストラクチャ、そしてOpenStackのデータプレーンコンポーネントについての情報を収集しています。こうした情報を収集することによって取るべき対応が明確なイベントを生成することができ、我々のアラートインフラストラクチャーを通じて通知されます。これによって我々のサポートチームはプロアクティブにお客様と連絡をとり、我々が検知した問題をお伝えしたり、お客様のハードウェア側で発生した問題を解決することができるのです。

アラートはその通知の種類や他のパラメーター、例えばその発生箇所によって特定のエンジニアにも通知されるようになっています。例えば、OpenStackのコントローラーノードが期せずして利用できなくなった場合、我々の開発チームに通知が行われます。また、お客様のホストが非計画の停電でダウンした際には我々のサポートチームに通知が行われますので、サポートチームはお客様とのコミニュケーションを開始します。とある女性の開発者が出社して開発にあたっている際には、特定の部分の問題であれば通知を受け取るようにすることも出来ます。これによってアラートを無視してしまうということを防ぐことが出来ますし、そうでなければ重大な問題が発生し、膨大な量のログに本当の問題が飲み込まれてしまうのです。

我々のOpenStack監視のアプローチの主な要件は以下のとおりです :

  • ステータス監視 - メッセージキューとの切断または非応答
  • 健全性監視 - キャパシティやパフォーマンスの欠乏
  • レポート生成 - 1ユーザーが動作させる最大インスタンス数、コンピューティングインスタンスの平均起動時間
  • 不具合検知 - 短時間で顧客の1つの操作が影響するインスタンス数(又はヴォリューム、スナップショット、ネットワーク)
  • ログ分析 - 分析を行うために全てのログ内のエラーを一箇所に格納する
  • サポート性 - サポートチームが特定の顧客の状態にRead-Onlyでアクセス出来るようにする

以下の様なデータを含めておく必要があります :

  • 単純な時系列データ - コントローラーの負荷状況、RabbitMQの健全性状態
  • トランザクションデータ - Nova APIの監視、すべてのユーザーのインスタンスの詳細
  • 重要なオブジェクトの状況の変化 - cinderヴォリュームがエラー状態へ移行した

OpenStackの監視を7つのキーとなるツールで設計する

要件を満たすため、我々はOpenStackの包括的な監視を行うことにしました。Platform9は多くのツールを併用して利用しており、その相関や相互依存関係を図示したのが次の図です。

Fig003

  • VictorOps クラウドサービスに重大な問題が発生した時、連絡に利用するアラートサービス。アラートメッセージはその問題毎に適切にカスタマイズされ、SMSや電話にプッシュ通知を発行します。Platform9はVictorOpsとはWebhookで通信を行います。またSlack channelに直接メッセージを送信することも出来ます。
  • SumoLogic 様々なOpenStackサービスや他のサブシステムが生成するログファイル全てを分析し、知見を提供するデータ分析サービス。GUIでの検索機能やシステムのログファイルの証跡として利用することが出来ます。SumoLogicは更に分析をするために検索を保存する機能やSlack channelにメッセージを発行することも出来ます。
  • ServerDensity 外部から我々のサーバを監視し、様々なイベントをアラートしてくれます。Platform9のサーバへ様々な地理的に隔たった場所からpingを発行し、VictorOps経由でメッセージを送ってくれます。我々はServerDensityを接続のチェック、アラート、チャート、我々のウェブサイトの負荷状態などに利用しています。負荷状態、ディスク利用状況、ネットワークトラフィック、メモリ利用率などの情報も含まれます。
  • Signal Fx 強力なグラフィックスとユーザーインターフェイスでデータのトレンドを分析するのに役立つデータ可視化サービス。データはREST APIで時系列のデータベースに格納されます。問題があるような場合には特定のお客様の利用状況にズームインすることも出来ます。
  • Slack Slackはチーム全体の標準メッセージアプリです。他のツールから生成されたアラートや注目などのメッセージは最終的にはすべてSlack Channelへと流れ込みます。さらに、emailで3rdパーティのシステムもSlack Channelへ取り込んでいます。
  • ZenDesk お客様、そして特定の内部エラーに我々のサポートチームが対処を行うときのサポートチケットを発行するヘルプデスクサービス。ここで得られる知見によって、我々はよりお客様と強い信頼関係を結ぶことが出来るのです。
  • 顧客モニタリングサービス 上の外部サービスに加え、我々は2つのカスタムサービスを独自開発しています:
    • 監視エージェント(社内では「Reachability」というコードネームで呼ばれています) 我々のサービス内で動作し、サービスにpingを打って、OpenStackとPlatform9のAPIの健全性をチェックします。負荷状況、全体のプロセス数、空きメモリ、ディスクスペースなどの確認も行っています。
    • 文脈データサービス(社内では「Whistle」というコードネームで呼ばれています) イベントやエラーの周辺の文脈を収集するように設計されています。例えば、様々な異なるサービスに対して発行されたリクエストIDにアクセスすることで、関連するスタックを追いかけていくことが簡単になり、トラブルシューティングを容易にします。

ご自身で監視をセットアップする際の推奨事項

我々はOpenStackの監視について、そしてその実装について長い時間をかけて取り組んできました。以下はご自身でやってみようと毛細に考えておくべき幾つかのポイントです:

  • 監視ソリューションは1つで全ての規模において万能ということはありえません。継続的にシステムやアラートの見直しを行い、根本的な重要で、しっかりとした状態を保ちます。
  • クラウド上のサービスを利用する際にはインスタンスの不具合やAPIの応答不全を考慮して設計してください。リクエストは何度か再送するようにしなければ、大失敗することになると思います。
  • サーバやREST APIは内部ネットワークからだけでなく、インターネット越しの監視を行ってください。こうしておけばローカルネットワークのエラーが外部にも影響が及ぶエラーなのかを切り分けることが可能です。
  • SaaSソリューションを利用することで、ご自身で作るソリューションのための時間と労力を削減できます。こうしたソリューションは大抵先進的で、REST APIやWeb Hookをサポートしています。セットアップも簡単で、彼らの監視ツールとの接続が終われば利用開始することが出来ます。
  • 既存の製品では特定の機能やご自身のおかれているユニークな場合や状況に対応ができないというケースが有るかもしれません。こうした知見も統合監視のダッシュボードには重要になるので、カスタムで作成する事が必要になるかもしれません。

24時間365日のOpenStack監視をやってみる

もしもより簡単なOpenStackの監視ソリューションを探しているのでしたら、Platform9のようなOpenStackのマネージドサービスをご検討ください。複雑で巨大なOpenStackベースのクラウドの運用・監視の労力を削減できるソリューションを提供している会社はPlatform9だけではありませんが、我々は業界最高のプライベートクラウドのためのサポート提供の実戦経験を積んでいます。もし、もっと詳しく知りたいのであれば製品のデモやご自身でフリートライアルしてみることもご検討ください。

あなたのご意見、お聞かせください

OpenStackの監視について、みなさんのお考えやうまいやり方をお聞かせください。それによって我々のソリューションは更に良くなるのではないかと考えています。フィードバックは@Platform9Sysへのツイートか、お問い合わせページまで。(訳注:日本語でのご意見は↓のTwitterでも受け付けております。)

記事責任者 マーケティング本部 三好哲生 (@Networld_pf9)