ノート:
- このチュートリアルではOracle Cloudにアクセスする必要があります。無料アカウントに登録するには、Oracle Cloud Infrastructure Free Tierの使用を開始するを参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を完了するときは、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Cloud InfrastructureからSumo Logicへのログの移動
イントロダクション
Oracle Cloud Observability and Manageabilityプラットフォームは、お客様が現在の場所で満たすことを目的としています。当社は、人気のあったサードパーティの可観測性ツールで業務状況を標準化して理解しており、これらのツールと相互運用できるようにし、顧客がOracle Cloud Infrastructure (OCI)に投資したツールの使用を続けることを望んでいます。
このチュートリアルでは、ログをOCIからSumo Logicに移動する方法を順を追って説明します。Sumo Logicは、アプリケーションを完全に可視化する監視およびセキュリティ・サービスを提供する一般的な可観測性ツールです。
高レベルのソリューション・アーキテクチャは次のとおりです。

Sumo LogicでのカスタムHTTPソース・コレクタの作成
Sumo Logicアカウントでは、次のステップの説明に従ってHTTPカスタム・コレクタ・アプリケーションを作成する必要があります。
-
「設定ウィザード」をクリックします。

-
「Sumo Logicへのストリーミング・データの開始」をクリックします。

-
「カスタム・アプリケーション」をクリックします。

-
「HTTPSソース」をクリックします。

-
次に示すようにHTTPソースを構成します。
ノート: HTTPソースはメタデータ・タグで、取り込まれたログとともに格納され、後でSumo Logicでログを検索およびフィルタ処理する場合に役立ちます。取込みする各ログ行は、イベント発生のタイムスタンプで開始されるため、「ログ・ファイルからのタイム・ゾーンの使用」オプションを選択します。

次の画面に移動すると、POST HTTPコールを使用してログのHTTPSエンドポイントがOCIからアップロードされます。このエンドポイントを使用してログをSumo Logicにアップロードするようにファンクションを構成するため、このエンドポイントをノートにとっておいてください。

取得するログの構成
サービス・コネクタ・ハブの入力としてログを設定し、Sumo Logicに取り込むことができます。このチュートリアルを簡略化するために、選択した任意のバケットへの書込みイベント用にOracle Cloud Infrastructure (OCI)で生成されたログを取得します。
-
Oracle Cloudコンソールで、ナビゲーション・メニューをクリックし、「ロギング」、「ログ・グループ」の順に選択します。

-
ログ・グループを作成するには、「ログ・グループの作成」をクリックします。

-
コンパートメントを選択し、名前にLogGroupForBucketActivityを追加して説明を追加します。「作成」をクリックします。

-
「ロギング」メニューから「ログ」を選択します。次のような画面が表示されます。

-
「サービス・ログの有効化」をクリックし、次の情報を入力します:
- サービス: 「オブジェクト・ストレージ」を選択します
- リソース:ログで確認する任意のバケット(BucketForSumoLogicなど)を選択します。
- ログ・カテゴリ: 「書込みアクセス・イベント」を選択します
- ログ名:ログの名前を入力します(例:
logForBucketActivity)。 - ログ・グループ:前のステップで作成したログのLogGroupForBucketActivityログ・グループを選択します。
-
「ログの有効化」をクリックします

現在は、オブジェクトがBucketForSumoLogicバケットにアップロードされるたびに、ログ・エントリがlogForBucketActivityログに追加されます。
Sumo Logicへのログの取込みのためのOracle Functionsの構成
-
Oracle Cloudコンソールで、ナビゲーション・メニューをクリックし、「ソリューションおよびプラットフォーム」を選択します。「開発者サービス」メニューの「関数」を選択します。
-
「Create Application」をクリックし、SumoLogicFnAppなどの名前を入力します。

-
アプリケーションを作成したら、アプリケーション名をクリックし、「リソース」メニューから「スタート・ガイド」を選択します。

-
クラウド・シェルの起動
-
リージョンのコンテキストを使用します。
fn list context fn use context us-ashburn-1 -
ファンクションのコンパートメントIDでコンテキストを更新します。
fn update context oracle.compartment-id <compartment-id> -
使用するレジストリの場所でコンテキストを更新します。
fn update context registry iad.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]iadをリージョンの3桁のリージョン・コードに置き換えます。 -
認証トークンがすでに作成されている場合は、認証トークンをパスワードとして使用してレジストリにログインします。
docker login iad.ocir.ioiadをリージョンの3桁のリージョン・コードに置き換えます。次の情報を要求されます:
- ユーザー名: <tenancyname>/<username>
- パスワード:パスワードの作成
ノート: Oracle Identity Cloud Serviceを使用している場合、ユーザー名は<tenancyname>/oracleidentitycloudservice/<username>です。
コンパートメント内のアプリケーションをリストして、設定を確認します。
fn list apps -
「hello-world」ボイラープレート関数を生成します。
fn init --runtime python sumologicfnfn initコマンドは、SumoLogicfnというフォルダを生成し、func.py、func.yaml、および requirements.txtの3つのファイルを格納します。
func.pyを開き、ファイルの内容を次のコードで置き換えます。
-
次のスニペットに示すように、必要なPythonモジュールをインポートします。
import io import json import logging import os import requests from fdk import response -
ログ・データを解析する関数を定義し、Sumo Logic APIを起動してログを取り込みます。
# This method is the entrypoint for your Function invokation # aka the method invoked by the OCI Fn platform # it will receive the list of log entries from OCI as input in the form of bytestream # the method name will be defined in func.yml def handler(ctx, data: io.BytesIO = None): logger = logging.getLogger() logger.info("function start") # Sumologic endpoint URL to upload OCI logs to HTTP custom app. # this value will be defined defined in func.yaml sumologic_endpoint = os.environ['SUMOLOGIC_ENDPOINT']Oracle Cloud Infrastructure Loggingサービスによって生成されるログの形式の詳細は、ロギング・フォーマットの概要を参照してください。
-
sumologicfnファンクションによって受信したサービス・コネクタ・ハブから、起動ペイロードとしてログ・エントリを取得します。これらのログ・エントリとログ行を1つずつループします。
try: logentries = json.loads(data.getvalue()) # deserialize the bytesstream input as JSON array if not isinstance(logentries, list): logger.error('Invalid connector payload. No log queries detected') raise # Optional...log the input to the function as human readble JSON. # Not to be used in production logger.info("json input from SCH") logger.info(data.getvalue()) for logEntry in logentries: logger.info("Extracting/Parse log details from the log entry json") event_name = logEntry["data"]["requestResourcePath"] + '\t' time_of_event = logEntry["time"] + '\t' cmpt_name = logEntry["data"]["compartmentName"] + '\t' bucket_namespace = logEntry["data"]["namespaceName"] + '\t' bucket_name = logEntry["data"]["bucketName"] + '\t' request_action = logEntry["data"]["requestAction"] log_line = time_of_event + event_name + cmpt_name + \ bucket_namespace + bucket_name + request_action # Call the Sumologic with the payload and ingest the OCI logs headers = {'Content-type': 'text/plain'} response_from_sumologic = requests.post(sumologic_endpoint, data=log_line, headers=headers) logging.getLogger().info(response_from_sumologic.text) logger.info("function end") return except Exception as e: logger.error("Failure in the function: {}".format(str(e))) raise
-
-
func.ymlの内容を次のように置き換えます。前のステップで取得したSumoLogic_ENDPOINTの値を設定してください。
schema_version: 20180708 name: sumologicfn version: 0.0.1 runtime: python entrypoint: /python/bin/fdk /function/func.py handler memory: 1024 timeout: 120 config: SUMOLOGIC_ENDPOINT: [YOUR SUMOLOGIC API ENDPOINT URL HERE] -
requirements.txtの内容を次のように置き換えます。
fdk requests -
ファンクションをデプロイします。
fn -v deploy --app sumologicFnApp --no-bump -
オプションで、次のように入力例を使用して SumoLogicfn関数をテストできます。
curl -O https://raw.githubusercontent.com/mayur-oci/sumologicfn/main/example.json fn invoke sumologicFnApp sumologicfn < example.json
ログからのログの読取りおよびファンクションのトリガーのためのサービス・コネクタの作成
-
Oracle Cloudコンソールで、ナビゲーション・メニューをクリックし、「ソリューションおよびプラットフォーム」を選択します。「ロギング」メニューの「サービス・コネクタ」を選択します。
-
「コネクタの作成」をクリックし、「ソース」ドロップダウン・リストから「ロギング」を選択し、「関数」ドロップダウン・リストから「ターゲット」を選択します。
-
「ソース接続の構成」で、コンパートメント名、LogGroupForBucketActivityログ・グループおよびlogForBucketActivityログを選択します。
-
監査ログを使用する場合は、+Anotherログをクリックし、コンパートメントを選択してログ・グループに_Auditを追加します。

-
ファンクションに書き込むポリシーを作成するように求められた場合は、「作成」をクリックします。
サービス・コネクタが設定され、ロギング・サービスでログが検出されるたびにSumo Logicにログを取得するファンクションがトリガーされます。
Sumo LogicでのOracle Cloud Infrastructureログのビジュアル化
-
Sumo Logicで、「ソース-カスタム・アプリケーション」メニューを選択して、SumoLogicfn関数を使用してOracle Cloud Infrastructure (OCI)から取り込まれたログを表示します。

トラブルシューティング
この項では、単純な電子メール・アラートを使用してソリューションのステータスを監視する方法を示します。
詳細は、関数の概要を参照してください。
通知サービスのトピックおよびサブスクリプションの作成
-
Oracle Cloudコンソールで、左上隅のナビゲーション・メニューから、「アプリケーション統合」、「通知」の順に選択します。
-
「トピックの作成」をクリックし、my_function_statusという名前のトピックを作成します。
-
トピックを選択し、「サブスクリプションの作成」をクリックして、次の例を使用します:
- プロトコル:電子メールを送信し、電子メールでサブスクリプションを追加します。
-
サブスクリプションは「保留」ステータスで作成されます。確認の電子メールを受信し、電子メール内のリンクをクリックして電子メール・アドレスを確認する必要があります。
メトリックのチェックおよびメトリックからのアラーム定義の作成
-
左上隅のナビゲーション・メニューから、「開発者サービス」、「関数」の順に選択します。
-
モニターするアプリケーションおよび機能を選択します。
-
「メトリック」ページで、「関数エラー」チャートに移動し、「オプション」をクリックして、「この問合せにアラームを作成」をクリックします。
-
名前を追加し、「通知」の下で、通知サービスとして「宛先サービス」を選択し、your_compartmentを選択して「トピック」をmy_function_statusとして選択します。
ステータス・サービス・コネクタ・ハブの監視
この項では、単純な電子メール・アラートを使用してサービス・コネクタ・ハブ(SCH)のステータスをモニターする方法を示します。
詳細は、サービス・コネクタ・ハブの概要を参照してください。
通知サービスのトピックおよびサブスクリプションの作成
-
左上隅のナビゲーション・メニューから、「アプリケーション統合」、「通知」の順に選択します。
-
「トピックの作成」をクリックし、my_sch_status名でトピックを作成します。
-
トピックを選択し、「サブスクリプションの作成」をクリックして、次の例を使用します:
- プロトコル:電子メールを送信し、電子メールでサブスクリプションを追加します
-
サブスクリプションは「保留」ステータスで作成されます。確認の電子メールを受信し、電子メール内のリンクをクリックして電子メール・アドレスを確認する必要があります。
メトリックのチェックおよびメトリックからのアラーム定義の作成
-
左上隅のナビゲーション・メニューから、「ロギング」、「サービス・コネクタ」の順に選択します。
-
モニターするコネクタを選択し、左側のナビゲーション・パネルの「リソース」リストから「メトリック」を選択します。
-
アラームを追加するメトリック・チャート(「サービス・コネクタ・ハブ・エラー」など)から、「オプション」および「この問合せにアラームを作成」をクリックします。
-
名前を追加し、「通知」の下で、通知サービスとして「宛先サービス」を選択し、your_compartmentを選択して「トピック」をmy_sch_statusとして選択します。
まとめ
このチュートリアルでは、Oracle Cloud InfrastructureおよびSumo Logicのお客様が、サービス・コネクタ・ハブおよびOracle Functionsを使用して、Oracle Cloud Infrastructure LoggingからSumo Logicにログを移動するためのオーバーヘッドを低く高度にスケーラブルなソリューションを構成する方法を示します。
謝辞
- 作成者 - Mayur Raleraskar、ソリューション・アーキテクト
その他の学習リソース
docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。
製品ドキュメントは、Oracleヘルプ・センターを参照してください。
Move logs from Oracle Cloud Infrastructure into Sumo Logic
F50471-01
November 2021
Copyright © 2021, Oracle and/or its affiliates.