Elasticsearch へLogstash 経由でSAP Ariba Source のデータをロードする方法
Elasticsearch は、人気の分散型全文検索エンジンです。データを一元的に格納することで、超高速検索や、関連性の細かな調整、パワフルな分析が大規模に、手軽に実行可能になります。Elasticsearch にはデータのローディングを行うパイプラインツール「Logstash」があります。CData Drivers を利用することができるので、30日の無償評価版をダウンロードしてあらゆるデータソースを簡単にElasticsearch に取り込んで検索・分析を行うことができます。
この記事では、CData Driver for SAPAribaSource を使って、SAP Ariba Source のデータをLogstash 経由でElasticsearch にロードする手順を説明します。
Elasticsearch Logstash でCData JDBC Driver for SAPAribaSource を使用
- CData JDBC Driver for SAPAribaSource をLogstash が稼働するマシンにインストールします。
-
以下のパスにJDBC Driver がインストールされます(2022J の部分はご利用される製品バージョンによって異なります)。後ほどこのパスを使います。この.jar ファイル(製品版の場合は.lic ファイルも)をLogstash に配置します。
C:\Program Files\CData\CData JDBC Driver for SAPAribaSource 2022J\lib\cdata.jdbc.saparibasource.jar
- 次に、Logstash とCData JDBC ドライバをつなぐ、JDBC Input Plugin をインストールします。JDBC Plugin は最新のLogstash だとデフォルトでついてきますが、バージョンによっては追加する必要があります。
https://www.elastic.co/guide/en/logstash/5.4/plugins-inputs-jdbc.html - CData JDBC ドライバの.jar ファイルと.lic ファイルを、Logstashの「/logstash-core/lib/jars/」に移動します。
Logstash でElasticsearch にSAP Ariba Source のデータを送る
それでは、Logstash でElasticsearch にSAP Ariba Source のデータの転送を行うための設定ファイルを作成していきます。
- Logstash のデータ処理定義であるlogstash.conf ファイルにSAP Ariba Source のデータを取得する処理を書きます。Input はJDBC、Output はElasticsearch にします。データローディングジョブの起動間隔は30秒に設定しています。
- CData JDBC ドライバの.jar をjdbc driver ライブラリにして、クラス名を設定、SAP Ariba Source への接続プロパティをJDBC URL の形でせっていします。JDBC URL ではほかにも詳細な設定を行うことができるので、細かくは製品ドキュメントをご覧ください。
- API:CData 製品にSAP Ariba データを取得させたいAPI を指定してください。ビジネスロールに基づき、Supplier、Sourcing Project Management、またはContract API を選択します(可能な値は、SupplierDataAPIWithPaginationV4、SourcingProjectManagementAPIV2、または ContractAPIV1 です)
- DataCenter:アカウントのデータがホストされているデータセンター
- Realm:アクセスしたいサイト名
- Environment:テスト環境、または本番環境のいずれかを指定してください。(可能な値は、TEST またはPRODUCTION)
- User:API 呼び出しを行うユーザーのId
- PasswordAdapter:認証するUser に関連付けられたパスワード
- AuthScheme をOAuthClient に設定します
- サービスにアプリケーションを登録し、APIKey、OAuthClientId、およびOAuthClientSecret を取得する必要があります
- APIKey:アプリケーション設定のApplication key
- OAuthClientId:アプリケーション設定のOAuth Client Id
- OAuthClientSecret:アプリケーション設定のOAuth Secret
- CData 製品がSAP Ariba からアクセストークンを取得し、それを使ってデータをリクエストします
- CData 製品がアクセストークンの期限が切れると自動的にリフレッシュします
- OAuth 値はOAuthSettingsLocation で指定された場所に基づいてメモリに保存されます
それでは、SAP Ariba Source に接続していきましょう。接続するには、以下のプロパティを設定します。
Supplier Data API またはContract API に接続する場合は、さらに以下のプロパティも設定してください。
Supplier API に接続している場合は、ProjectId をデータを取得したいソーシングプロジェクトのId に設定してください。
OAuth 認証
続いて、接続プロパティを設定した後、認証のためにOAuth 接続を設定する必要があります。
OAuth アプリケーションの作成について、詳しくはヘルプドキュメントをご確認ください。
OAuth の自動リフレッシュ
以下のプロパティを設定して、接続してみましょう。
接続すると、CData 製品が自動でOAuth プロセスを完了します。
input {
jdbc {
jdbc_driver_library => "../logstash-core/lib/jars/cdata.jdbc.saparibasource.jar"
jdbc_driver_class => "Java::cdata.jdbc.saparibasource.SAPAribaSourceDriver"
jdbc_connection_string => "jdbc:saparibasource:API=SupplierDataAPIWithPagination-V4;APIKey=wWVLn7WTAXrIRMAzZ6VnuEj7Ekot5jnU;Environment=SANDBOX;Realm=testRealm;AuthScheme=OAuthClient;InitiateOAuth=REFRESH"
jdbc_user => ""
jdbc_password => ""
schedule => "*/30 * * * * *"
statement => "SELECT SMVendorID, Category FROM Vendors WHERE Region = 'USA'"
}
}
output {
Elasticsearch {
index => "saparibasource_Vendors"
document_id => "xxxx"
}
}
Logstash でSAP Ariba Source のローディングを実行
それでは作成した「logstash.conf」ファイルを元にLogstash を実行してみます。
> logstash-7.8.0\bin\logstash -f logstash.conf
成功した旨のログが出ます。これでSAP Ariba Source のデータがElasticsearch にロードされました。
例えばKibana で実際にElasticsearch に転送されたデータを見てみます。
GET saparibasource_Vendors/_search
{
"query": {
"match_all": {}
}
}
データがElasticsearch に格納されていることが確認できました。
CData JDBC Driver for SAPAribaSource をLogstash で使うことで、SAP Ariba Source コネクタとして機能し、簡単にデータをElasticsearch にロードすることができました。ぜひ、30日の無償評価版をお試しください。