ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了したら、これらの値をクラウド環境に固有の値に置き換えてください。
DatadogによるOracle Cloud Infrastructureの監視
イントロダクション
Oracle Cloudの監視および管理性プラットフォームは、お客様がいる場所で対応することを目指しています。オラクルでは、一般的なサード・パーティ可観測性ツールを使用して、業務状況を標準化し、これらのツールと相互運用可能にして、お客様がOracle Cloud Infrastructureに投資したツールを使用し続けることができることを理解しています。
このチュートリアルでは、Oracle Cloud InfrastructureからDatadogにログを移動する方法を説明します。Datadogは、アプリケーションへの完全な可視性を提供する監視およびセキュリティ・サービスを提供する一般的な可観測性ツールです。
Datadog APIキーの作成
-
Datadogアカウントで「統合」を選択し、「API」で「APIキーの作成」をクリックします。これによりAPIキーが生成されます。
取得するログの構成
-
Oracle Cloud Infrastructureコンソールで、「ナビゲーション」メニューをクリックし、「ロギング」メニューの下にある「ログ・グループ」を選択します。
-
ログ・グループを作成するには、「ログ・グループの作成」をクリックします。
-
コンパートメントを選択し、名前data_log_groupおよび説明を追加します。
-
ログ・グループを作成した後、左側のメニューで「ログ」を選択します。
-
「サービス・ログの有効化」をクリックし、ダイアログ・ボックスに情報を入力して「ログの有効化」をクリックします。「サービス」で「ログ・カテゴリ」を選択します。
- リソース: リソースとして使用するログを入力します。
- ログ名: ログの名前(datadogなど)を入力します。
残りのフィールドは適切に入力します。バケット名datadog_logsのOracle Object Storeが表示されているこの例を参照してください。
Datadogにログを取り込むためのOracle Functionの構成
-
ナビゲーション・メニューをクリックし、「ソリューションおよびプラットフォーム」セクションを選択します。「開発者サービス」メニューで「ファンクション」を選択します。
-
「アプリケーションの作成」をクリックし、datadog01などの名前を入力します。
-
アプリケーションを作成したら、アプリケーション名をクリックし、左側のメニューで「スタート・ガイド」を選択します。
-
クラウド・シェルを起動します。
-
リージョンのコンテキストを使用します。
fn list contextfn list context fn use context us-phoenix-1
-
ファンクションのコンパートメントIDでコンテキストを更新します。
fn update context oracle.compartment-id <compartment-id>
-
使用するレジストリの場所でコンテキストを更新します。
fn update context registry phx.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
phxを3桁のリージョン・コードに置き換えます。
-
「認証トークンの生成」をクリックします。
Auth Tokenをパスワードとして使用してレジストリにログインします。
docker login phx.ocir.io
phxを3桁のリージョン・コードに置き換えます。
次の情報を要求されます。
- ユーザー名: <tenancyname>/<username>
- パスワード: パスワードの作成
ノート: Oracle Identity Cloud Serviceを使用している場合、ユーザー名は<tenancyname>/oracleidentitycloudservice/<username>です。
-
'hello- world'ボイラープレート・ファンクションを生成します。
fn init --runtime python datadog
fn initコマンドは、datadogというフォルダを生成します。このフォルダには、func.py、func.yaml、および requirements.txtという3つのファイルが含まれています。
func.pyを開き、ファイルの内容を次のコードで置き換えます。
-
次のスニペットに示すように、必要なPythonモジュールをインポートします:
import io import oci import re import os import json import sys import requests import logging import time from fdk import response
-
ログ・データを解析するファンクションを定義し、Datadog APIを呼び出してログを取り込みます。
def handler(ctx, data: io.BytesIO=None): try: logs = json.loads(data.getvalue())
Oracle Cloud Infrastructure Loggingサービスによって生成されるログの形式の詳細は、ロギング・フォーマットの概要を参照してください。
-
各ログ・エントリからログ・ソース、タイムスタンプおよびデータを取得します。
if "data" in item: if type(item.get("data")) is dict: data = item.get("data", {}) else: data = item.get("data") else: data = "" if "source" in item: source = item.get("source") else: Source = "" if "time" in item: time = item.get("time") else: time = "" payload = {} payload.update({"source":source}) payload.update({"time": time}) payload.update({"data":data})
-
Datadog APIエンドポイントURLおよび認証トークンを格納する変数を作成します。
datadoghost = os.environ['DATADOG_HOST'] datadogtoken = os.environ['DATADOG_TOKEN']
ノート: func.yamlのDATADOG_HOSTおよびDATADOG_TOKENの値を設定します。
-
必要なペイロードを使用してDatadog APIを起動します。
headers = {'Content-type': 'application/json', 'DD-API-KEY': datadogtoken} x = requests.post(datadoghost, data = json.dumps(payload), headers=headers) logging.getLogger().info(x.text) except (Exception, ValueError) as ex: logging.getLogger().info(str(ex)) return
構成部分には、ステップ1で取得したDatadogエンドポイントURLおよびトークン・フォーム認証が含まれます。
RESTエンドポイントはhttps://http-intake.logs.datadoghq.com/v1/inputで、詳細はDatadogのドキュメントを参照してください。func.yaml
schema_version: 20180708 name: datadogapp version: 0.0.1 runtime: python entrypoint: /python/bin/fdk /function/func.py handler memory: 1024 timeout: 120 config: DATADOG_HOST: https://http-intake.logs.datadoghq.com/v1/input DATADOG_TOKEN: ZZZZZzzzzzzzzzz
requirements.txt
fdk datetime requests oci
-
-
アプリケーションを作成します。
fn create app datadog01 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaxxxxxxxxxxx"]'
サブネットOCIDのsubnetIDsを変更します。
-
ファンクションをデプロイします。
fn -v deploy --app datadog
ロギングからログを読み取ってファンクションをトリガーするためのサービス・コネクタの作成
-
「ナビゲーション」メニューをクリックし、「ソリューションおよびプラットフォーム」セクションを選択します。「ロギング」メニューで「サービス・コネクタ」を選択します。
-
「コネクタの作成」をクリックし、ソースをロギング、ターゲットをファンクションとして選択します。
-
「ソース接続の構成」で、コンパートメント名、ログ・グループdatadog_log_groupおよびログdatadogを選択します。
-
監査ログを使用する場合は、+Anotherログ・ボタンをクリックしてコンパートメントを選択し、ログ・グループに_Auditを追加します。
-
ファンクションに書き込むポリシーを作成するように求められた場合は、「作成」をクリックします。
サービス・コネクタが設定され、ロギング・サービスでログが見つかるたびにDatadogにログを取り込む関数がトリガーされます。
DatadogでのOCI監査ログのビジュアル化
-
Datadogで、「ログ」メニューをクリックして、OCIから収集されたログを表示します。
トラブルシューティング
この項では、単純なEメール・アラートを使用してソリューションのステータスを監視する方法を示します。
機能
詳細は、テクニカル・ドキュメンテーションを参照してください。
通知サービスのトピックおよびサブスクリプションの作成
-
左上隅のメニューから、「アプリケーション統合」、「通知」の順に選択します
-
「トピックの作成」をクリックし、my_function_status名でトピックを作成します
-
トピックを選択し、「サブスクリプションの作成」をクリックして、次の例を使用します:
- プロトコル: 電子メールを送信し、電子メールを使用してサブスクリプションを作成
-
サブスクリプションは「保留中」ステータスで作成されます。確認の電子メールが届きます。電子メール内のリンクをクリックして、電子メール・アドレスを確認する必要があります。
メトリックを確認し、メトリックからアラーム定義を作成します
-
左上隅のメニューから、「開発者サービス」、「ファンクション」の順に選択します
-
モニターするアプリケーションおよび機能を選択します
-
「メトリック」ページから、「関数エラー」チャートに移動し、「オプション」をクリックしてこの問合せにアラームを作成します
-
名前を追加し、「通知」で通知サービスとして「宛先サービス」を選択し、コンパートメントyour_compartmentを選択して、my_function_statusとして「トピック」を選択します
サービス・コネクタ・ハブ
この項では、単純なEメール・アラートを使用してサービス・コネクタ・ハブ(SCH)のステータスをモニターする方法を示します。
詳細は、テクニカル・ドキュメンテーションを参照してください。
通知サービスのトピックおよびサブスクリプションの作成
-
左上隅のメニューから、「アプリケーション統合」、「通知」の順に選択します
-
「トピックの作成」をクリックし、my_sch_status名でトピックを作成します
-
トピックを選択し、「サブスクリプションの作成」をクリックして、次の例を使用します:
- プロトコル: 電子メールを送信し、電子メールを使用してサブスクリプションを作成
-
サブスクリプションは「保留中」ステータスで作成されます。確認の電子メールが届きます。電子メール内のリンクをクリックして、電子メール・アドレスを確認する必要があります。
メトリックを確認し、メトリックからアラーム定義を作成します
-
左上隅のメニューから、「ロギング」、「サービス・コネクタ」の順に選択します
-
モニターするコネクタを選択し、左側のナビゲーション・ペインの「リソース」の下にある「メトリック」リンクをクリックします
-
アラームe.g「サービス・コネクタ・ハブ・エラー」を追加するメトリック・チャートから、「オプション」をクリックし、この問合せにアラームを作成します
-
名前を追加し、「通知」で通知サービスとして「宛先サービス」を選択し、コンパートメントyour_compartmentを選択して、my_sch_statusとして「トピック」を選択します
まとめ
このチュートリアルでは、Oracle Cloud InfrastructureおよびDatadogのお客様が、サービス・コネクタのハブおよびファンクションを使用して、ログをOracle Cloud Infrastructure LoggingからDatadogに移動するための低オーバーヘッドでスケーラブルなソリューションを構成する方法を示します。
謝辞
著者 - Igor Aragao de Souza(プリンシパル・ビッグ・データ・コンサルタント)
その他の学習リソース
docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Monitor Oracle Cloud Infrastructure with Datadog
F36991-06
October 2022
Copyright © 2022, Oracle and/or its affiliates.