BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OrbitzによるオープンソースのモニタリングツールERMAとGraphite

OrbitzによるオープンソースのモニタリングツールERMAとGraphite

世界的なオンライン旅行会社であるOrbitz Worldwide社(リンク)はExtremely Reusable Monitoring API(ERMA)とデータの永続化と視覚化をおこなうコンポーネントであるGraphiteという2つのオープンソースのモニタリングツールを持っている。ERMAは自社製のJava APIおよびライブラリで、アプリケーションを実行しながらモニタリング統計を取るためにOrbitzのいくつものウェブアプリケーションで使われてきた。ERMAから得られるイベントの連続的データは、サービスがダウンしたり定められた反応時間の閾値より遅くなったりした場合にアラートを出すために使われる。

Orbitz上のオンライン旅行代理店のウェブサイトに関する監視・管理対象には、数十のウェブアプリケーション、数百のVM、数千のJini(分散ネットワークを構築するためのJavaベースのアーキテクチャ)サービスが含まれる。ERMAのベースとなっているテクノロジは3つあるーComplex Event Processing、Java Management Extensions(リンク)、アスペクト指向プログラミングだ。Orbitzは、モニタリングロジックをアプリケーションコードに埋め込むのにアスペクトを使い、イベント管理のためにCEPを使っている。CEPは大量の管理データを高スループットかつ低レイテンシで処理するためのものだ。このテクノロジからできたシステムにより、ソフトウェアの可用性と信頼性およびパフォーマンスにおける問題が原因で起きる顧客に影響のあるイベントを、より少ないMTTR(mean time to resolution:平均修復時間)で対処できるようになり、管理性が向上した。その結果、最低限の開発コストで、10万以上パターンのあるイベントに関するデータを得ることができる。これほど大量のデータを処理できるパワーのおかげで、Orbitzは必要とされるレベルでサービスモニタリングできる。またモニタリングアプリケーションを追加するのに必要なハードウェアにかかる費用も、このテクノロジによって最小限に抑えることができる。

Doug Barth氏とMatthew O'Keefe氏(PDF・英語)はJavaOne 2008(リンク)でComplex Event Processing at Orbitzというプレゼンテーションを行い、Orbitzウェブサイトにおけるアプリケーションレベルでのモニタリングのケーススタディを説明した。このセッションでは、ERMAとGraphiteの2つのツールがどのようにOrbitzのアプリケーションに使われているかをモニタリング統計と視覚化画面のサンプルを使って示した。Sun Developer Networkの無料会員であればこのプレゼンテーションを記録した音声・映像(リンク)がオンラインで入手できる。

ERMA

ERMA はJava技術ベースの計測APIで、単にロギングAPIとして使うことも容易で、その場合も設定次第でロギングやモニタリングや統計やその他イベント処理に必要な事に対するほとんどの要求を満たすことができる。ERMAは同一のアプリケーションスレッドで起きたイベントを動的に関連付けることができる。その結果現れたイベントパターンをユーザリクエストを提供している他のVMに対して当てはめることも可能で、それによりボトムアップによる影響分析だけでなく、ドリルダウンでエラーや反応の原因分析をおこなうことができる。

ERMA の基本はMonitorインターフェースとMonitorProcessorインターフェースだ。アプリケーションコードはMonitorの実装コードを使うことになる。ディベロッパはモニタリングの必要なJavaクラスに対して@Monitoredといったアノテーションを付けることができる。 @Monitoredアノテーションは型レベル(クラスやインターフェース)でも、メソッドレベルでも宣言できる。Orbitzはアノテーションを直接 ERMAを埋め込んだりSpring(リンク)やAspectgJ(リンク)ベースの設定を使ったAOP方式で埋め込んだりしている。

MonitorProcessor は埋め込まれたデータから生成された生データを処理する役割を担う。Orbitzには多くのMonitorProcessor実装があり、その中には数百のVMからのERMAイベントをCEPエンジンにリアルタイムに送るものもある。CEPエンジンでは高速かつ高反応で集約や処理を行う。

ERMAはLaunchpad(リンク)のサイトでダウンロード可能だ。LaunchpadチームはあたらしいERMA 3.0のテストを完了している。ERMAに関するチーム内のwikiドキュメントもERMAの新しいWiki(Wiki)サイトに全てコピーが終わっている。

ERMAはどのMonitorがどのMonitorProcessorに送られるかを宣言するのに、Apache CommonsのJEXL(リンク)ライブラリを使っていて、シンプルな構文で設定ができるようになっている。このことでアプリケーションが実行中でも動的に情報の流れを決めることができる。JUnitPref(リンク)テスティングフレームワークは、開発段階でモニタリングロジックをアプリケーションコードに加えたことで応答性に問題が起きるようになってないかを確かめるのに使われている。

視覚化の点ではSNMP(ネットワークシステムを監視・管理するためのプロトコル)イベントを表示するNetcool/OMNIBusコンソールと、社内で開発されたデータの永続化と視覚化システムであるGraphiteが使われている。Orbitzでは以前、イベントを処理しているアプリケーションからのデータストリームをSNMP経由でNetwork Operations Centerに送る機能を実装するのにOpenNMS(リンク)プロジェクトのJoeSNMP APIを使っていた。

 

Graphite

GraphiteはPython(リンク)で作られたウェブアプリケーションで、大量の時系列データにも対応して保存や視覚化できるよう開発された。GraphiteはCEPエンジンの出力を受け取るが、その出力は70000以上のメトリクス(評価指標)を集めたデータから成る。GraphiteのポートレットはJBoss Portal(リンク)フレームワークをベースにしたモニタリングポータルと連携できるように作られた。モニタリングポータルは稼動しているシステムの統計や警告用のRSS フィードをテーブル上にグラフィカルに表示する。ユーザは特定の重要度の警告や影響するアプリケーションについてのフィードを購読できるようになっている。Graphiteウェブアプリケーション自体はRESTfulなURLから生成されたモニタリング統計のグラフを視覚的に表示するために使われる。 Graphiteはデータを線グラフやパイチャートで表現したりcsvデータとして出力したりできる。Graphiteはウェブベースのコマンドラインインターフェースも備え、パワーユーザが関連するグラフをいくつも表示したダッシュボードを素早く簡単に作れるようになっている。

GraphiteもLaunchpadのサイト(リンク)からダウンロードできる。Chiris Davis氏とGraphite開発チームはこの視覚化ツールの使い方についてのドキュメントをのせたwikiも作っている。もし開発チームにフィードバックを送りたいならば、サイトにあるフォーム(リンク)から送信することができる(ユーザー登録が必要)。サイトに質問が投稿されると開発チームにe-mailが送られるようになっている。

Orbitz でのCEPが扱う範囲は今後イベントパターンのモニタリングにも広がっていく。これにはリアルタイムでクリックの流れを分析し関連付ける機能も含まれる。 Orbitzは、別個に起きたイベントのパターンから予測した顧客に影響のあるイベントの原因情報をまとめることで、運用者に送られるアラートの量を減らすシステムを開発中である。Orbitzのビジネスが拡大するにつれて、自動実行可能なイベント検知をベースにした大規模な処理が可能な方法で運用チームがシステムを管理できるようにすることが急がれている。ERMAの今後のロードマップではオープンソースのESPエンジンであるEsper(リンク)と統合することも予定されている。

ESPについてInfoQのこれまでの記事をもっと読みたい方には、InfoQのESP(参考記事)セクションを見てもらいたい。そこでIBMのWebSphere Business Events(リンク)やBEAのWebLogic Event Server(リンク)やEsperといった他のCEP(リンク)プロダクトもカバーしている。

原文はこちらです:   http://www.infoq.com/news/2008/06/orbitz-opensource-erma

この記事に星をつける

おすすめ度
スタイル

BT