IBM Accelerator for Machine Data Analytics 第1部: マシンデータのスピーディーな分析

さまざまなデータソースが生成するM2Mデータ(マシンデータ、センサーデータ、ログなど)は、企業内で大量に発生しています。IBM Accelerator for Machine Data Analyticsを活用すれば必要なシステムを簡単に実装できるため、準構造化、非構造化、構造化の特徴を持つテキスト・データをスピーディーに分析することができます。

Sonali Surange, Software Architect, IBM

Author photoSonali Surange は、IBMのビッグデータ製品とテクノロジーを担当するソフトウェア・アーキテクトです。数多くの特許登録を行っており、IBMのdeveloperWorks上で15件の論文を発表し、数多くの技術カンファレンスで発表を行っています。SonaliはこれまでIBM Outstanding Technical Achievement AwardとWomen of Color STEM Technical All Star Awardを受賞し、2012年にはIBM developerWorks Professional Authorとして表彰されました。


developerWorks
        プロフェッショナル著者レベル

Anju Bansal, Senior Development Manager, IBM China

Author photo for AnjuAnju BansalはIBMのビッグデータ・アクセラレーター・グループでシニア・マネージャーを勤めています。IBMに10年以上勤務し、エンタープライズ・コンテンツ管理とInformation Serverの製品群に関するさまざまな開発プロジェクトに携わっています。ビッグデータの分析に役立つアクセラレーターを提供することによって、企業がシステムを迅速に実装し、ビッグデータに関する問題を早期に解決できる環境を実現することを目標としています。



2013年 3月 18日

マシンデータの分析はビジネスの必須条件

Fortune 500企業の半数で毎年80時間を超えるシステム停止が発生しています。このシステム停止を1年を通じて平均化すると、毎日およそ13分のシステム停止が発生している計算になります。システム停止は毎日発生しない場合もあるものの、1週間で1.5時間、1カ月で6時間のシステム停止が発生する可能性があります。

一般ユーザーにとっては、オンライン・バンクのサービスに頻繁にアクセスできないと不都合が発生します。事業者にとっては、システムがダウンするとあらゆるプロセスが中断します。処理中のプロセスが失われ、SLAや契約上の義務を履行できないことによって高額の料金の支払い、好ましくないニュースの流布、既存および潜在的な顧客の喪失が発生する可能性があります。最終的には、信頼性を高く安定したシステムが提供できない場合、それは経済的な損失につながります。このようなシステムの障害は不可避であるものの、障害をタイムリーに予測し、未然に防止することが求められています。

この問題を解決する鍵は、ハードウェア、ファームウェア、ミドルウェア、アプリケーション、ストレージそれぞれのレイヤーで生成され、システムの障害やエラーを示す膨大な量の診断ログデータを分析することにあります。マシンデータを分析し、理解することは、デバッギング、パフォーマンス分析、根本原因の分析、およびビジネス分析を行うにあたり重要なプロセスとなりつつあります。

マシンデータの分析を行うことによって、システム停止を防止できるだけでなく、不正行為の検出、顧客の定着、またはその他の重要な活用目的に役立つ知見を獲得することができます。


マシンデータの分析で発生する課題の原因は、ビッグデータ

マシンデータの特徴は、ビッグデータの特徴とぴったりと合致します。

各レイヤーのアプリケーション・アーキテクチャーはさまざまな種類のデータを生成します。このようなデータのサイズを考えると、手作業でデータの処理を行うことは非常に困難です。grepawkのようなパターンのマッチングを行うツールを使用して複数のファイル間でデータの分類と関連付けを行う作業は、非常に煩雑で多くの時間を必要とします。世界中のデバイスが高機能化するなか、本データの容量は今後増大の一途をたどるものと思われます。

図1. マシンデータの種類、容量、スピードが増大している
図1. マシンデータの種類、容量、スピードが増大している

IBM Accelerator for Machine Data Analytics

IBMのビッグデータ・アクセラレーターとは、ビッグデータ・プラットフォームに基づいて特定のソリューションやシステムの活用シナリオの開発と実装を実現するソフトウェア・コンポーネントを指します。

IBM Accelerator for Machine Data Analyticsとは、マシンデータの活用を促進する一連のBigInsights®のアプリケーションのことを指します。このようなアプリケーションはBigInsightsのランタイム・テクノロジーを活用のうえ、システム実装を支援します。

図2. BigInsightsとアクセラレーター
図2. BigInsightsとアクセラレーター

Sample Outdoors社(架空企業)の例

7月14日の土曜日の午後、Sample Outdoors社のいくつかのWebサイトがダウンしてしまい、製品の購入ができない、アカウント情報にアクセスできないといった苦情の電話が顧客から寄せられました。

Sample Outdoors社は、Webフロントエンド、アプリケーション・サーバー、データベース層で構成される複数階層のアプリケーションを数多く保有しています。

幸運なことにIBM Accelerator for Machine Data Analyticsを活用することによって、Sample Outdoors社はマシンデータ分析ソリューションを既に実装していました。数カ月にわたってマシンデータの保存を行い、本データを活用することによってこのような状況の原因を把握することができる状態にありました。

7月14日の土曜日に、Sample Outdoors社は以下を実施することができました。

  • システムを検索のうえ、システムに問題が発生したことを確認。
  • 履歴データのパターンを発見することによって、同様の状況を発生させた問題を特定。
  • そのような状況が発生するにあたって、最も大きな影響を及ぼした原因を分析。

この知見に基づいて、同社は将来このような事態をより効果的に管理し、場合によっては回避できるプロセスを策定しようと考えています。

Sample Outdoors社がどのようにIBM Accelerator for Machine Data Analyticsを使用したマシンデータの分析ソリューションを実装し、7月14日にどのように本ソリューションを有効活用することができたのかを見てみましょう。


マシンデータをスピーディーに分析するための10ステップ

マシンデータ分析ソリューションを効果的な実装を可能にするIBM Accelerator for Machine Data Analyticsの概要と主な機能は、以下のとおりです。

  1. 分析に役立つ情報に基づいてデータを準備する方法については、「簡単にデータの準備を行う」をご確認ください。
  2. アクセラレーターが提供する既知のログタイプを活用する方法(マシンデータが、アクセラレーターがサポートする既知のログタイプと合致する場合)については、「既知のログタイプ」をご確認ください。
  3. 未知のログタイプに対して一般的なログタイプを使用することについては、「未知のログタイプ」をご確認ください。
  4. 準備したデータをHDFS (Hadoop File System) に取り込み、データ抽出の準備を行う方法については、「データを取り込む」をご確認ください。
  5. テキストから情報やフィールドを抽出し、データを分析できる形式に変換する方法については、「テキストから情報を抽出する」をご確認ください。
  6. 抽出した全ての情報にインデックスを設定し、全てのデータを一貫性のある方法で参照するには、「データのシュリンクダウン、ドリルダウン、および検証を行う」をご確認ください。
  7. ログを通じてエラーを引き起こしたイベントを時系列順に参照する方法については、「検索によって原因を時系列順に分析する」をご確認ください。
  8. 関連するイベントを組み合わせたセッションを作成して、より詳細な分析の準備を行う方法については、「より詳細な分析の準備を行う」をご確認ください。
  9. エラーが発生した際に頻繁に発生するイベントを検出することができます。アクセラレーターを使用してこの課題に対応するには、「パターンを検出する」をご確認ください。
  10. エラーに大きな影響を及ぼすイベントを検出できます。アクセラレーターを使用してこの課題に対応するには、「エラーの発生に影響を及ぼすイベントについて理解する」をご確認ください。

Sample Outdoors社は、顧客管理を実現する以下のアプリケーションと付随するログデータを保有していました。

  • CustomerFrontEndアプリケーション: ApacheによるWebサーバー
  • CustomerBackendアプリケーション: IBM WebSphereによるアプリケーション・サーバー
  • CustomerDbAppアプリケーション: Oracleデータベース

以下に示す例は最も単純なケースですが、アクセラレーターの概要は既に上記に示したとおりです。


簡単にデータの準備を行う

マシンデータやログデータには通常一連のイベントやレコードが含まれます。レコードにはたった1行のデータもあれば、複数行にわたるデータもあります。複数行にわたるレコードを含むログの典型的な例としては、XMLスニペットや例外のトレース、データベースやXMLのログ、複数行にわたるメッセージを記録したアプリケーションのログなどを含むアプリケーション・サーバーのログが挙げられます。ApacheのWebアクセスログやsyslogは、1行に収まるレコードを含んだログの典型例といえます。

データを簡素化するためにマシンデータの情報を省略するよう設定されることがよくあります。サーバー名、データセンター名、ビジネスに関係するその他の情報はデータの分析を行う際に役立つことがあります。メタデータ内で本情報の関連付けを行うことによって、分析の精度を高めることができます。

まず、同様のコンテンツごとにデータをディレクトリーやバッチに分類します。バッチには、個別に圧縮されたファ圧縮されていない生のファイル、またはサブディレクトリーのデータが含まれることがあります。各サブディレクトリーはバッチに変換されます。メタデータは、metadata.jsonという名前のjsonテキスト・ファイルとして提供される各バッチに関連付けられます。

MDAGenerateMeta.shユーティリティーは、ユーザーの設定に基づいてバッチごとにメタデータを生成します。バッチの数が少ない場合は、本ユーティリティーを使用せずに既存のmetadata.jsonファイルを手作業で変更することによって、ログデータの内容に合わせてメタデータを作成することができます。この作業を行う場合、新規のバッチを作成する際にはユニークなbatchIDを設定する必要があります。

MDAGenerateMeta.shユーティリティー

MDAGenerateMeta.shという名前のシンプルなユーティリティーは、アクセラレーターをインストールしたディレクトリーに存在します。本ユーティリティーはユーザーの設定に基づいてmetadata.jsonというファイルにメタデータを生成します。本ユーティリティーはmetadata.jsonファイルとログの各グループまたは各バッチを関連付けることによって、metadata.jsonの各ファイルにユニークなbatchIDが含まれるようになります。このメタデータを活用することによって、これから実施する解析作業、抽出作業、分析作業を効率化できます。同じ設定でMDAGenerateMeta.shユーティリティーを繰り返し起動するためのテンプレートを使用することができます。

次のセクションでは、既知のログタイプと未知のログタイプの準備を行う方法について説明します。


既知のログタイプ

データを準備するプロセスにおいては、表1で示されたログタイプを使用して、ApacheによるWebアクセス、WebSphere、syslog、またはIBM Datapowerのログデータ、もしくはその他の区切られたファイルの分析を行うことができます。

表1. 標準でサポートの対象となる既知のログタイプ
ログタイプデータの準備のために使用するLogTypeの値
ApacheによるWebアクセスwebaccess
WebSpherewas
Syslogsyslog
Datapowerdatapower
その他の区切られたファイルcsv
その他generic

既知のログタイプから特定のフィールドを抽出するにあたっては、標準のルールが提供されます。追加のフィールドの抽出が必要な場合は、ルールをカスタマイズすることができます。アプリケーション・サーバーに関するログにはカスタム・アプリケーションに関するログが含まれることがあります。アプリケーション開発者は自由にログデータを設定できるため、抽出する必要がある情報を得るにはある程度のカスタマイズが必要になる場合があります。ログタイプの種類やバージョンが異なるため、ログの内容にばらつきが発生することもあります。このような場合は、多少カスタマイズを行う必要があります。

初めてログデータの分析を行う場合は、既知のログタイプを使用できます。適切であると思われるログタイプを使用してみてください。ログタイプはいつでも変更することができます。本セクションでは、Sample Outdoors社が使用したWebアクセスとWebSphereのログタイプについて確認します。まず、Webアクセスのログタイプから見てみましょう。

Sample Outdoors社の顧客向けフロントエンド・アプリケーションのWebアクセスのログには、リスト1に示されるデータが含まれます。

リスト1. ApacheによるWebアクセスログの例
|--------10--------20--------30--------40--------50--------60--------70--------80--------|
9.17.247.205 - - [14/Jul/2012:15:58:12 +0000] "GET /Sample Outdoors/us/customers.shtml
HTTP/1.1" 200 48490 "http://www.Sample Outdoors.com/Sample Outdoors/us/customer-info.html"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR
2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Tablet
PC 2.0)"8105 
9.17.247.205 - - [14/Jul/2012:15:58:21 +0000] "POST http://Sample Outdoors/us/customers-
order.php HTTP/1.1" 500 834 "http://www.Sample Outdoors.com/?p=732" "Mozilla/4.0
(compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 
3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Tablet PC 2.0)"1250

リスト1のログデータのパターンを見ると、IPアドレスの後にいくつかの文字と1つのタイムスタンプが続き、その後にレコードの残りのデータが続いていることが分かります。このパターンを見極めることによって、このログデータにおいてレコードがどのように生成されているのかを確認することができ、最終的にプライマリー・タイムスタンプを検出することができます。ログレコードには他のタイムスタンプも含まれているものの、プライマリー・タイムスタンプ以外のタイムスタンプはレコードの境界を見極めるには役に立ちません。

このログから検出する必要のある主な項目は以下のとおりです。

  • 各レコードの開始時点を示すプライマリー・スタンプ。プライマリー・スタンプの例としては、「14/Jul/2012:15:58:12 +0000」が挙げられます。
  • プライマリー・タイムスタンプの前には、通常「9.17.247.205 - - [」のような文字列が存在します。
  • "((\\n)|(\\r))+[^]]*\\["のような正規表現は、レコードの境界を示すこのような文字が繰り返し現れることを示しています。

以下に示すのは重要な項目ではあるものの、ログのコンテンツに含まれない項目です。これらの項目は、Sample Outdoors社のアプリケーション・オーナーとデータ・サイエンティストは認識しており、分析に役立ちます。

  • アプリケーション名 : customerFrontEnd
  • サーバー名 : webserver1
  • アプリケーションのカテゴリー名 : customerManagement

次に、この情報を使用して、情報をバッチ・データと関連付けます。

リスト2は、MDAGenerateMeta.shを使用して生成したデータからmetadata.jsonを生成できることを示しています。

リスト2. customerFrontEndのアプリケーション・ログのメタデータを生成するスクリプト
[biadmin@server bin]$ <MDA_Install_Location>>/bin/MDAGenerateMeta.sh
path="/opt/ibm/accelerators/input_MDA" logType="webaccess"
dateTimeFormat="dd/MMM/yyyy:HH:mm:ss Z" servername="webserver1"
application="customerFrontEnd" category="customerManagement"
preTimestampRegex="((\\n)|(\\r))+[^]]*\\["

図3は、metadata.jsonが各バッチまたは各ディレクトリーおよびそのコンテンツと関連付けられる処理の流れを示したものです。

図3. MDAGenerateMeta.shユーティリティーを使用して、メタデータをバッチと関連付ける
図3. MDAGenerateMeta.shユーティリティーを使用して、メタデータをバッチと関連付ける

クリックして大きなイメージを見る

図3. MDAGenerateMeta.shユーティリティーを使用して、メタデータをバッチと関連付ける

図3. MDAGenerateMeta.shユーティリティーを使用して、メタデータをバッチと関連付ける

では、WebSphereのログタイプを使ってみましょう。

リスト3は、Sample Outdoors社のバックエンド・アプリケーションのWebSphereのアプリケーション・ログを示しています。

リスト3. WebSphereのアプリケーション・サーバーのログ・サンプル
|--------10--------20--------30--------40--------50--------60--------70--------80--------|
[Sat July 14 03:58:12:906 PM] 00000048 InternalOracl I   DSRA8205I: JDBC driver name  : 
Oracle JDBC driver
[Sat July 14 03:58:19:296 PM] 00000047 WSChannelFram A   CHFW0019I: The Transport Channel 
Service has started chain HttpsOutboundChain:service.Sample Outdoors.org
[Sat July 14 03:58:19:312 PM] 00000047 ExceptionUtil E   CNTR0020E: EJB threw an 
unexpected (non-declared) exception

このログから検出する必要のある主な項目は以下のとおりです。

  • 各レコードの開始時点を示すプライマリー・スタンプ。プライマリー・スタンプの例としては、「Sat July 14 03:58:13 PM」が挙げられます。
  • • プライマリー・タイムスタンプの前には、通常"["で示される文字列が存在します。"((\\n)|(\\r))+\\["のような正規表現は、レコードの境界を示すこのような文字が繰り返し現れたことを示しています。
  • プライマリー・スタンプには、年度とタイムゾーンの値が含まれません。本記事では、使用すべき年度とタイムゾーンの値を提供します。

以下に示すのは重要な項目ではあるものの、ログのコンテンツに含まれない項目です。これらの項目は、Sample Outdoors社のデータ・サイエンティストは認識しており、分析に役立ちます。

  • アプリケーション名 : customerApplication
  • サーバー名 : wasserver1
  • 本アプリケーションのカテゴリー名 : customerManagement

その他のログタイプについては、以下を実行します。

  • プライマリー・タイムスタンプの情報を変更する。
  • 特定のログタイプを選択するか、Genericを選択する。
  • 必要に応じて、ユニークなbatchIDを設定する。
  • 必要に応じてその他のメタデータを加える。
  • これで処理は完了です。

前述のMDAGenerateMeta.shスクリプトを使用するか、既存のmetadata.jsonファイルのコピーと変更を行うことによって、WebSphereのログに対してmetadata.jsonファイルを作成します。このログと関連付けられたmetadata.jsonファイルは、リスト4のようなデータとなります。年度の値 (2012) とタイムゾーンの値 (+0000) が欠けていますが、これらの値はmissingDateTimeDefaultsフィールドで提供されます。

リスト4. customerApplicationに対して生成されたmetadata.jsonファイル
{logType:"was", batchId:"batch_was", serverName:"wasserver1",
application:"customerApplication",
category:"customerManagement",dateTimeFormat:"EEE MMM dd h:mm:ss:SSS
a",preTimestampRegex:"((\\n)|(\\r))+\\[",missingDateTimeDefaults:[{"year": "2012"},
{"timezone": "+0000"}]}

未知のログタイプ

Sample Outdoors社のバックエンド・アプリケーションのアプリケーション・サーバーがIBM WebSphereではなくWeblogic(またはその他のアプリケーション・サーバー)であればどうなるのでしょうか?アプリケーション・スタックのその他のレイヤーでIBM WebSphere以外のアプリケーション・サーバーが使用された場合はどうでしょうか?

もちろん、あるアクセラレーターがサポートするログタイプには、既知のログタイプよりも未知のログタイプのほうが多いのが事実です。構造化データ、準構造化データ、または非構造化データのいずれであれ、時系列情報を含むテキスト・データであるかぎり、分析に使用することができます。前述で示した方法を使用して、ログデータを準備することができます。ログデータを作成し、一般的なログタイプを使用してメタデータを関連付けてください。

一般的なログタイプ用に通常使用されるルール

  • タイムスタンプ
  • 名前の値のペア
  • XML(リーフおよびタグ)の値
  • IPアドレス
  • URLおよびURI
  • 重要度
  • その他

ログにはいくつかの共通するフィールドとログタイプ独自の特定のフィールドが含まれています。分析を行うにあたって、このような特定のフィールドのいくつかが不要なケースや、全く必要とならないケースも数多く存在します。ログに通常存在する重要なフィールドを抽出するためのルールは、製品の標準機能として提供されます。

多くのログには名前の値のペアに関する大量の情報が含まれます。また、XML(リーフおよびタグ)に関する大量の情報も含まれており、本情報は標準で提供されるルールに基づいて抽出できます。より多くのフィールドを抽出するには、カスタマイズを行うことができます。本シリーズの第2部は、カスタマイズの方法を詳しく説明するチュートリアルを提供します。

リスト5は、Sample Outdoors社のデータベース・アプリケーションからOracleデータベースのログを抽出した例を示しています。

リスト5. customerDbAppに関するOracleデータベースのログ
<msg time='2012-07-14T10:58:16.723-0500' org_id='oracle' comp_id='rdbms'
type='UNKNOWN' level='16' version='1'>
<txt>*******************************************************</txt>
</msg>
<msg time='2012-07-14T10:58:18.723-0500' org_id='oracle' comp_id='rdbms'
type='UNKNOWN' level='16'>
<txt>Fatal NI connect error 12170</txt>
</msg>

このログから検出する必要のある主な項目は以下のとおりです。

  • 各レコードの開始時点を示すプライマリー・スタンプ。プライマリー・スタンプの例としては、「2012-07-14T10:58:16.723-0500」が挙げられます。
  • プライマリー・タイムスタンプの前には、通常"<msg time='" で示される文字列が存在します。"((\\n)|(\\r))+&ltmsg time=\\'" のような正規表現は、レコードの境界を示すこのような文字が繰り返し現れることを示しています。

以下に示すのは重要な項目ではあるものの、ログのコンテンツに含まれない項目です。これらの項目は、Sample Outdoors社のデータ・サイエンティストは認識しており、分析に役立ちます。

  • アプリケーション名 : customerDbApp
  • サーバー名 : dbserver1
  • アプリケーションのカテゴリー名 : customerManagement.

リスト6は、Oracleデータベースを使用したcustomerDbAppのmetadata.jsonファイルを示しています。

リスト6. metadata.json
{logType:"generic", batchId:"batch_oradb", serverName:"dbserver1",
application:"customerDbApp", category:"customerManagement",
dateTimeFormat:" yyyy-MM-dd'T'h:mm:ss.SSSZ", preTimestampRegex:"((\\n)|(\\r))+<msg 
time=\\'"}

これで、3つのアプリケーションのログデータのバッチは、分析処理が行えるようになりました。


データを取り込む

マシンデータは本データが生成されるサーバー上に存在しています。さらに分析を行うためには、マシンデータをHadoop File System (HDFS)にコピーする必要があります。

バッチ・データがいくつか存在する場合は、BigInsightsのコンソールが提供するツールやHadoopのコピー・コマンドを使用してデータをアップロードすることができます。データが複数のサブディレクトリーに存在する場合や、同時に複数のバッチを処理する必要がある場合は、インポート・アプリケーションが役立ちます。

インポート・アプリケーション

本アクセラレーターは、事前に準備したログデータのバッチをHDFSにコピーするインポート・アプリケーションを提供します。本アプリケーションを使用すると、図4のとおり一度の処理で簡単に1つ以上のバッチ(同様のログタイプのバッチと異なるログタイプのバッチを含む)のアップロードや置き換えを行うことができます。

図4. インポート・アプリケーションを使用することによって、データをHDFSにインポートする
図4. インポート・アプリケーションを使用することによって、データをHDFSにインポートする

クリックして大きなイメージを見る

図4. インポート・アプリケーションを使用することによって、データをHDFSにインポートする

図4. インポート・アプリケーションを使用することによって、データをHDFSにインポートする

BigInsightsテクノロジーを活用したインポート・アプリケーション

  • 分散コピー・アプリケーション
  • リモート・マシンに存在するログやHDFS内の別のロケーションに存在するログをFTPまたはSFTPでコピーすることが可能

途中で異常終了したデータや個人情報を含むデータがインポートされた場合、分析前にデータを置き換える必要があります。既にインポート済みのバッチを置き換えるには、置き換え対象のメタデータと同じbatchIDを持つ新規のコンテンツをインポートするだけで済みます。新規のバッチを追加するには、新たにユニークなbatchIDを設定します。データの準備プロセスにおいてMDAGenerateMeta.shユーティリティーを使用すると、このプロセスを確実に実行できます。データが複数のサブディレクトリーに存在する場合は、本アプリケーションはサブディレクトリーを個別のバッチに変換します。


テキストから情報を抽出

準備が完了したテキスト・データのバッチを使用して、情報を抽出することができます。

抽出アプリケーション

本アクセラレーターは、既に準備したログデータのバッチを取り込み、各バッチから情報を抽出する抽出アプリケーションを提供します。本抽出アプリケーションは、各バッチのメタデータだけでなく、複数のパッチに通常適用される追加のコンフィギュレーションを抽出することができます。インポート・アプリケーションと同様に、抽出アプリケーションは一度の処理で1つ以上のバッチを処理することができます。新規のバッチを追加する場合は、追加するバッチのメタデータに新規のbatchIDを設定する必要があります。過去に抽出したバッチを置き換える場合は、置き換え対象のバッチに対応するメタデータに既存のbatchIDを設定します。抽出アプリケーションを活用することによって、データのクロス・ログ分析ができるようになり、本プロセスによってさまざまなステップが実行されます。

BigInsightsテクノロジーを活用した抽出アプリケーション

  • テキスト・アナリティクス
  • JAQL(JSONに対応したクエリー言語)

抽出アプリケーションによって、全てのタイムスタンプを修正する

ログにおいて情報が欠けている場合は、抽出アプリケーションがmetadata.jsonで提供される基準値に基づいてタイムスタンプを修正します。ログのサイズを小さくするために、ログから一般的な情報が削除されることがよくあります。よく削除されるフィールドとしては、タイムスタンプの年度のようなタイムスタンプに含まれる特定のフィールドが挙げられます。

その例として、CustomerApplicationに関するWebSphereのログリスト4を再度参照してください。

また、抽出アプリケーションは全てのタイムスタンプを単一の形式に正規化します。Sample Outdoors社の3種類のログに含まれるプライマリー・タイムスタンプの形式はそれぞれ異なる形式になっています。全てのログを統合のうえ分析するためには、全てのタイムスタンプは相互に互換性がある必要があります。マシンデータの形式には多様性があるため、この点はさらに分析を進める際の重要なポイントとなります。

抽出アプリケーションによって、全てのレコードをさらに強化

このステップでは、アプリケーション・オーナーやデータ・サイエンティストが提供するメタデータに関する情報を各レコードと関連付けます。これによってメタデータの情報とログから抽出したフィールドを組み合わせることができるため、データのクロス・ログ分析ができるようになります。

抽出アプリケーションによってデータを加工し、より詳細に分析

ここまで、ログに含まれるオリジナルのイベントやレコードを見てきました。オプションとして、特定のフィールド

抽出を行う際のコツ

  • 小規模なデータセットから抽出作業を開始する。
  • 抽出された情報を検証する。必要に応じて、繰り返しバッチ・レベルでmetadata.jsonを変更するか、extract.configを変更する。
  • 作成したメタデータやコンフィギュレーションを使用して、より大容量のデータを抽出する。

データ抽出アプリケーションによって結果サンプルを生成し、スプレッドシート形式で参照する

図5のとおり、抽出されたフィールドを参照できます。CSV形式で出力された各列の値をチェックすることによって、生成された結果を検証することができます。ただし、マシンデータが準構造化データまたは非構造化データのため、一部の列に値が含まれていない場合があります。そのような場合は、Null値でない値を参照するにはスプレッドシートをさらにフィルタリングする必要があります。抽出アプリケーションによってデータを加工し、その後の分析を行うことができます。抽出結果全体をエクスポートすることによって、常にスプレッドシートに基づいてアドホックな分析を行うことができます。

図5. 抽出アプリケーションを使用することによって、情報を抽出
図5. 抽出アプリケーションを使用することによって、情報を抽出

クリックして大きなイメージを見る

図5. 抽出アプリケーションを使用することによって、情報を抽出

図5. 抽出アプリケーションを使用することによって、情報を抽出

データのシュリンクダウン、ドリルダウン、検証

次のステップでは、抽出した情報にインデックスを設定することによって、検索可能な状態にします。

インデックス・アプリケーション

インデックス・アプリケーションは既に抽出したバッチを処理します。インポート・アプリケーションや抽出アプリケーションと同様に、インデックス・アプリケーションは一度に1つ以上のバッチを処理することができます。新規のバッチをインクリメンタルに追加することができます。本アプリケーションの起動する前に「再度インデックスを作成する」のチェックボックスを選択することによって、以前に作成したインデックスを削除し、新規のインデックスを作成することができます。

BigInsightsのテクノロジーを活用した、インデックスを作成するアプリケーション

  • BigIndex
  • JAQL(JSONに対応したクエリー言語)

HDFSでインデックスが作成されると、定期的にインデックスをBigInsightsのコンソール・マシンにコピーし、検索が行える状態にすることができます。

copyIndex.shユーティリティー

アクセラレーターがインストールされたフォルダーに存在するcopyIndex.shユーティリティーを使用することによって、定期的にインデックスをコンソール・マシンにコピーすることができます。リスト7はcopyIndex.shユーティリティーの使用例を示しています。

リスト7. CopyIndexユーティリティー
[biadmin@server bin]$ <MDA_Install_Location>/bin/copyIndex.sh -
hdfsIndexDir=hdfs://<server>:9000/<output_location_from_app>
copying indexes from hdfs..
Indexes successfully copied to local file system
MDA UI can be accessed at for secure install 'http://<hostname>:8080/datasearch/login.jsp'
MDA UI can be accessed at for non-secure install
'http://<hostname>:8080/datasearch/html/Search.html'.

インデックスが設定されたバッチは、適切なURLを使用することによって検索を行うことができます(リスト7を参照)。

検索ユーザーのインターフェースは以下の機能を提供します。

全てのログデータを一貫性のある方法で参照

ファセットやテキスト検索で検索可能なタイムラインに基づいて、全てのデータを参照することができます。全てのバッチから抽出した全てのフィールドに対して検索を行うことができます。イベントに追加したメタデータの全てのフィールドもファセットとして活用することができます。

新規のバッチに対してインデックスを設定すると、index.configファイルのファセット・カテゴリーが更新されます。本ファイルを設定しても、検索インターフェースから特定のファセットの表示・非表示を変更したり、ファセットの名前の変更を行うことはできません。さらに、インデックスから特定のファセットを削除することもできません(図6を参照)。

図6. インデックス・アプリケーションを起動し、検索の準備を行う
図6. インデックス・アプリケーションを起動し、検索の準備を行う

クリックして大きなイメージを見る

図6. インデックス・アプリケーションを起動し、検索の準備を行う

図6. インデックス・アプリケーションを起動し、検索の準備を行う

データのシュリンクダウンを行う

ビッグデータの分析結果を特定の時間帯やイベントにシュリンクダウンすることによって、一連の有益なデータを得ることができます。この処理を実施するには、時間帯に基づく検索やテキスト検索を行います。

データのドリルダウン

ファセット値にドリルダウンすることによって、特定のイベントを検出することができます。ファセットとして利用できるデータには、アプリケーション名、カテゴリー、サーバー名のようなアプリケーション・オーナーが追加した全てのメタデータも含まれます。

データの検証

シュリンクダウン機能とドリルダウン機能を組み合わせることによって、マシンデータに関して判明した問題を具体的な証拠とともに検出し、データの検証を行うことができます。

Sample Outdoors社のデータ・サイエンティストは7月14日の土曜日の午後に図7のとおりエラーを検出することができました。

図7. 時間帯に基づいてデータのシュリンクダウンを行い、エラーを検出
図7. 時間帯に基づいてデータのシュリンクダウンを行い、エラーを検出

クリックして大きなイメージを見る

図7. 時間帯に基づいてデータのシュリンクダウンを行い、エラーを検出

図7. 時間帯に基づいてデータのシュリンクダウンを行い、エラーを検出
  • 7月14日のデータを午後3時から午後4時の間のデータにシュリンクダウンしました。
  • その後、ステータス・コードを示すファセットにドリルダウンし、customerFrontEndAppからのWebアクセスログにエラー(エラーコード500)を発見しました。
  • 過去に同様のエラーが発生しているかどうかを確認するために、Sample Outdoors社のデータ・サイエンティストがこの時間帯のログをチェックすると、過去にフロントエンド・システムのエラーが数多く発生していることに気付きました。

次に、データ・サイエンティストは特定のエラーの原因となったイベントについてさらに確認しようと考えます。


検索によって原因を時系列順に分析

検索ユーザーのインターフェースを使用すると、全てのログデータを通じて時系列順にイベントを参照し、エラーの原因につながる情報をさらに詳しく検証することができます(図8を参照)。

図8. ログデータに基づいて時系列順に原因を分析
図8. ログデータに基づいて時系列順に原因を分析

クリックして大きなイメージを見る

図8. ログデータに基づいて時系列順に原因を分析

図8. ログデータに基づいて時系列順に原因を分析

Sample Outdoors社のデータ・サイエンティストは7月14日の土曜日の午後に以下をはじめとするエラーを検出することができました。

  • 全てのログデータを検証すると、Webアクセス・アプリケーションのエラーが発生する前にWebSphereのエラーが発生し、さらにその前にOracleデータベース・アプリケーションのエラーが発生していることがわかりました。
  • イベントの発生順を見ると、この場合バックエンド・データベースのエラーが対象のエラーを発生させたことがわかりました。
  • さらにシステムの起動時にも多少エラーが発生していることが分かったため、さらに詳細の分析を行うことによってこれらのエラーの影響について検証したいと考えました。図8に示される最初のイベント(WebSphereで発生したWSVR0002Iのメッセージに基づくイベント)に着目します。このエラーに注意したうえで、Webアクセスログのエラーとの関連性をさらに詳細に検証します。

データ・サイエンティストは適切なアプリケーション・オーナーにコンタクトし、7月14日の土曜日に発生したこの問題の調査を行うよう依頼しました。さらに、アプリケーションにおけるこのようなエラーの原因を把握することによって、将来問題が発生することを予防する必要があります。


より詳細な分析の準備

個々のログレコードやイベントにはエラーの原因を示す十分な情報が含まれないことがあります。このような情報をその他の関連するイベントと組み合わせることによって、より詳細な分析が行えることがあります。

本アクセラレーターは、関連するイベントやセッションをグループ化できる2種類のアプリケーションを提供します。

TimeWindowアプリケーション

発生頻度や時間帯に基づいてイベント・データを組み合わせることによって、単一のログタイプに基づいてセッションを作成することができます。

BigInsightsテクノロジーを活用したTimeWindowアプリケーションとJoinTransformationアプリケーション

  • JAQL(JSONに対応したクエリー言語)

timegapTransformation.configファイルの分析対象時間間隔を設定することによって、アクティビティーの変化を示すログを検出することができます。TimeWindowアプリケーションの時間帯ごとの分析機能を使用することによって、アクティビティーが継続して発生しているログに対してセッションを作成することができます。

JoinTransformアプリケーション

2種類のログタイプ(JoinTransformationアプリケーション・アーキテクチャーが提供する関連するレイヤーのログ)を組み合わせることによってセッションを作成できます。

データ加工を行う際のコツ

  • 小規模なデータセットを使って作業を開始する。
  • timegap.configまたはjoinTransformation.configを変更することによって、関連するセッションを作成する。
  • データに適したコンフィギュレーションを使用し、より大容量のデータに適用する。

JoinTransformationアプリケーションを使用することによって、単一のログタイプに基づいてセッションを作成することもできます。

上記2種類のアプリケーションにおいては、コンフィギュレーションによってデータ加工の方法を制御することができます。コンフィギュレーションを修正することによって、データと活用シナリオに合わせてより効果的な分析を行うことができます。ログから抽出された全てのフィールドやメタデータを通じて成形されたフィールドを使用して、コンフィギュレーション・ファイルによってデータの加工を行うことができます。作成したセッションのサンプル・データをCSVファイルにエクスポートすることによってデータの可視化を行うことができ、本設定はコンフィギュレーション・ファイルに含まれています。

JoinTransformationアプリケーションのコンフィギュレーションを活用

Smaple Outdoors社のデータ・サイエンティストは、Webアプリケーション・レイヤーとWebSphereのアプリケーション・レイヤーの分析を行いたいと考えました。エラーがWebアクセス・レイヤーで発生した際にWebSphereアプリケーション内で発生するパターンを検出する必要がありました。さらに、WebSphereアプリケーション・レイヤーにおいて特定の時間帯に発生するどのイベントがWebアクセス・レイヤーで発生するエラーに大きな影響を及ぼすのかを把握する必要もありました。

データ・サイエンティストは、アプリケーションのコンフィギュレーション(リスト7および図5を参照)を活用しました。本コンフィギュレーションを活用することで、以下を行うことができました(リスト8を参照)。

リスト8. joinTransform.configとルックアップ・テーブル
[
{
"seed_log_type": "webaccess",
"content_log_type": "was",
"device_id_field_names_seed": "category",
"device_id_field_names_content": "category",
"lookup_table_dir": 
"/_default_match_all_join_metadata_table",
"message_type_field_name_seed": "CodesAndValues",
"match_type_seed": "Prefix",
"match_type_content": "Prefix",
"message_type_field_name_content": "MethodidWS",
}
]

Lookup table
fact_field,context_field,time_window
3,"", 20000
4,"", 20000
5,"", 20000

WebアクセスログをWebSphereのログと結合。

  • シード・ログタイプ : “webaccess”
  • コンテンツのログタイプ : “was”

各ログに対して結合キーを提供する。データ・サイエンティストは、メタデータとして既に追加したcategoryフィールドを結合キーとして使用しました。

  • Device_id_field_names_seed : “category”
  • Device_id_field_names_content : “category”

結合データのフィルタリングを行うことによって、Webaccessログにエラーのみを含みます。データ・サイエンティストはこれを行うにあたり、CodesAndValues(httpステータス・コードを示す)の値にフィルターを指定しました。

  • Message_type_field_name_seed : “CodesAndValues”
  • Match_type_seed : “Prefix”
  • ルックアップ・テーブルを使用することによって、CodesAndValuesの値が結合データに含まれるようにフィルタリングを行いました。3、4、または5で始まる値が含まれました。前方一致マッチング・タイプを使用することによって、このようなマッチングを行うことができます。
  • 分析対象の時間帯(time_window)として20000ミリ秒を指定する。

メッセージ内でパターンを検出するにあたり、メッセージIDを示すフィールドを使用しました。

  • Message_type_field_name_content : “MethodidWS”

図9は、分析の準備を行うに当たり行ったデータ結合のログを示しています。

図9. データ結合のログ
図9. データ結合のログ

クリックして大きなイメージを見る

図9. データ結合のログ

図9. データ結合のログ

この結果、Sample Outdoors社のデータ・サイエンティストはより詳細な分析が行えるようになりました。


パターンの検出

特定のイベントやエラーの前後でどのようなイベントが発生しているのかを検出することが有益な場合がよくあります。

頻繁に発生するエラーのパターン(順序)を分析するアプリケーション

本アクセラレーターは既に準備したセッションに基づいて頻繁に発生するエラーのパターン(順序)を分析するアプリケーションを提供し、複数のセッションを通じて最も頻繁に発生するエラーのパターン(順序)に関する知見を提供します。

BigInsightsテクノロジーを活用した、頻繁に発生するエラー・パターンを分析するアプリケーション

  • System ML(機械学習言語)
  • JAQL(JSONに対応したクエリー言語)

既に説明したとおり、コンフィギュレーションによって分析作業を制御することができます。コンフィギュレーションを修正することによって、データと活用シナリオに合わせてより効率的な分析を行うことができます。

抽出したフィールドのうちセッションに含まれるフィールドは、頻繁に発生するエラー・パターンの分析でも使用することができます。分析結果はCSV形式で提供されます。スプレッドシートのフィルタリング機能を活用することによって、重要な値を含むパターンを検出することができます。分析結果はグラフで示され、ダッシュボード上で参照することができます。

データ・サイエンティストは頻繁に発生するエラー・パターンの分析のコンフィギュレーション(リスト 8を参照)を使用して、リスト9のとおりメッセージID(methodidWSフィールドの値として提供される)のパターンを検出することができました。

リスト9. 頻繁に発生するシーケンスの分析で使用するコンフィギュレーション
"eventField": "MethodidWS"

頻繁に発生するシーケンスの分析結果を示すダッシュボード使用することによって、Sample Outdoors社のデータ・サイエンティストはイベントのパターンに気付くことができました(図10を参照)。

図10. Webのアクセスログでエラーが判明する前にWebSphereのログで頻繁に発生するエラー・パターン
図10. Webのアクセスログでエラーが判明する前にWebSphereのログで頻繁に発生するエラー・パターン

クリックして大きなイメージを見る

図10. Webのアクセスログでエラーが判明する前にWebSphereのログで頻繁に発生するエラー・パターン

図10. Webのアクセスログでエラーが判明する前にWebSphereのログで頻繁に発生するエラー・パターン

図8で示される最初のイベント(WebSphere上で表示されるメッセージIDがWSVR0002Iのイベント)を再度見てください。より詳細な分析のプロセスにおいて、このエラーとエラー番号500の関係をさらに検証することができます。

Sample Outdoors社のデータ・サイエンティストは、時系列順の原因分析のプロセスにおいて検出した関係を本プロセスで確認することができました。

データ・サイエンティストは頻繁に発生するその他のパターンについても認識でき、原因分析を行うためにさらにこれらのパターンの検証を行う必要があります。


エラーの発生に影響を及ぼすイベントを把握

さらに、どのイベントがエラーの原因に影響を及ぼしているのかを分析することが有益な場合があります。

重要度を分析するアプリケーション

本アクセラレーターは既に準備したセッションに基づいて重要度を分析するアプリケーションを提供し、その他のイベント全体に影響を及ぼすイベントに関する知見を提供します。分析結果をフィルタリングすることによって、特定のエラーに影響を及ぼすイベントを検出することができます。

BigInsightsテクノロジーを活用した、重要度を分析するアプリケーション

  • マシン・ラーニング(機械学習)機能
  • JAQL(JSONに対応したクエリー言語)

重要度の分析を行うことができるのは、JoinTransformationアプリケーションによって作成したセッションに限られます。

頻繁に発生するエラー・パターンを分析するアプリケーションのように、コンフィギュレーションによって分析を制御することができ、コンフィギュレーションを修正することによって、データと活用シナリオに合わせてより効率的な分析を行うことができます。

用語に関する説明は、以下のとおりです。

  • セッションのシード部分のあらゆるフィールドをラベルとして使用することができます。
  • セッションのコンテンツ部分のあらゆるフィールドをラベルに影響を及ぼすフィーチャーとして使用することができます。
  • JoinTransformationアプリケーションを使用してセッションを作成する際のシードとコンテンツのフィールドの例については、図5をご確認ください。
  • 分析結果はCSV形式で提供されます。スプレッドシートのフィルタリング機能を活用することによって、特定の値に影響を及ぼす要因を検出することができます。

Sample Outdoors社のデータ・サイエンティストは生成されたセッションを使用することでWebSphereのアプリケーション・レイヤーのどのイベントがWebアクセス・レイヤーのエラーに大きな影響を及ぼしたのかを把握できるようになりました。

データ・サイエンティストは重要度を分析するコンフィギュレーション(リスト8を参照)を使用しました。ラベル・フィールドとしてセッションのシード部分からCodesAndValuesを選択し、フィーチャーとしてセッションのコンテンツ部分からMethodidWSを選択しました(リスト10を参照)。

リスト10. 重要度を分析するアプリケーションのコンフィギュレーション
[
{
"label_field": "CodesAndValues",
"features": "MethodidWS"
}
]

図11は、リスト10で既に示されたコンフィギュレーションを使用して重要度を分析した結果を示しています。

図11. Webアクセス・レイヤーで発生したエラーに影響を及ぼしたWebSphereのエラーの一覧
図11. Webアクセス・レイヤーで発生したエラーに影響を及ぼしたWebSphereのエラーの一覧

Sample Outdoors社のデータ・サイエンティストは、WebSphereにおける以下のエラーがWebアクセス・レイヤーにおけるエラーの発生に最も大きな影響を及ぼしていることを確認しました。エラーは重要度の高いものから順に表示されています。

  • CNTR0020E(メソッドの呼び出し時にEJBが不測の例外を検出)
  • WSVR0002I(サーバーの起動時にアプリケーションに関する問題が発生)

頻繁に発生するエラー・パターンの分析によって、CNTR0020Eの前にWSVR0002Iが頻繁に発生することが分かりました。再度図10を見てください。

このような知見を得られることによって、データ・サイエンティストはアプリケーション・スタックをより詳細なレベルで分析できるようになりました。


ソリューションの機能をさらに高める

本アクセラレーターには、より頻繁に実施される可能性のあるタスクを効率化するために関連付けられたアプリケーションが含まれています。これらのアプリケーションのチェーンとしては、以下が挙げられます。

  1. インポート・アプリケーションと抽出アプリケーション
  2. TimeWindowアプリケーションと頻繁に発生するシーケンスを分析するアプリケーション
  3. JoinTransformationアプリケーションと重要度を分析するアプリケーション

対応すべき分析内容を見極めた時点で、分析処理を簡素化するために独自のチェーンを設定することができます。

Sample Outdoors社では、チェーンを使用するだけでなく、JoinTransformationアプリケーションと頻繁に発生するシーケンスを分析するアプリケーションを実行するために新規のアプリケーションを作成しました。アプリケーション・スタックの他のレイヤーをさらに分析することによって、WebSphereアプリケーションとバックエンドのOracleデータベースのアプリケーションの関連性の分析を行いました。


結論

架空のSample Outdoors社の状況を通じて、IBM Accelerator for Machine Data Analyticsを活用することによってさまざまなログタイプに対応できるソリューションをスピーディーに実行できることを確認しました。本タスクを実行するにあたり、この分析アクセラレーターに含まれるさまざまなアプリケーションの個別の使用方法についても確認しました。


本シリーズの記事について

IBM Accelerator for Machine Data Analyticsの最も重要なメリットと強みは、ツールの設定とカスタマイズを簡単に行うことができる点です。本シリーズの記事の対象は、本アクセラレーターの概要を知り、独自の知見を獲得するためにマシンデータの分析をさらにスピードアップしたいと考えているユーザーです。


謝辞

本記事の技術面のレビューを行ってくれたTom Chen (thchen@ca.ibm.com) に感謝します。また、本ソリューションの開発に携わったマシンデータ・アクセラレーターのチームにも感謝します。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • My developerWorksのコミュニティーに参加することができます。開発者向けのブログ、フォーラム、グループ、wikiを参照したうえで、他のdeveloperWorksのユーザーと情報交換を行うことができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=861305
ArticleTitle=IBM Accelerator for Machine Data Analytics 第1部: マシンデータのスピーディーな分析
publish-date=03182013