Skip to content

ログ

デプロイのログタブでは、OpenTelemetry(OTel)標準形式でモデルおよびエージェントワークフローからログを受信し、アプリケーションのパフォーマンスやエラーに関する詳細な分析、トラブルシューティング、理解のために、関連するログ情報を一元化します。 さらに、モニタリング > データ探索タブでは、スパン固有のログをフィルターして表示することが可能です。

収集されたログは期間指定によるフィルター機能を提供し、OTel Logs APIを利用することで同様のフィルター機能を備えたログをプログラムでエクスポートすることが可能です。 ログはOTelに準拠しているため、サードパーティ製のオブザーバビリティツール(Datadogなど)へのエクスポートのために標準化されています。

アクセスと保持

ログはすべてのデプロイおよびターゲットタイプで利用可能です。 デプロイで「オーナー」ロールと「ユーザー」ロールを持つユーザーのみが、これらのログを表示できます。 ログは30日間保持され、その後自動的に削除されます。

デプロイのログにアクセスするには、デプロイタブでデプロイを検索してクリックし、アクティビティログタブ、ログの順にクリックします。 The logging levels available are INFO, DEBUG, WARN, CRITICAL and ERROR.

コントロール 説明
範囲(UTC) Select the logging date range Last 15 min, Last hour, Last day, or Custom range.
レベル Select the logging level to view: Debug, Info, Warning, Error, or Critical.
表示を更新 Refresh the contents of the Logs tab to load new logs.
Copy logs Copy the contents of the current Logs tab view.
Search Search the text contents of the logs tab.

OTelログのエクスポート

以下のコード例では、OTel Logs APIを使用してデプロイのOpenTelemetry互換ログを取得し、プレビューとERRORログの数を表示した後、ログを出力ファイルに書き込みます。 コードを実行する前に、entity_id変数にデプロイIDを設定し、<DEPLOYMENT_ID>をデプロイの概要タブまたはURLから取得したデプロイIDに置き換えます。 さらに、export_logs_to_json関数を、ターゲットとするオブザーバビリティサービスで想定される形式に合わせて変更できます。

DataRobot Python Client version

The following script requires datarobot version 3.11.0 or higher installed to support OpenTelemetry logging submodules.

Export OTel logs to JSON
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import json
import datarobot as dr
from datarobot.models.otel import OtelLogEntry

# Initialize DataRobot client for authentication
dr_client = dr.Client()

# Provide DataRobot entity information
entity_type: str = "deployment"
entity_id: str = "<DEPLOYMENT_ID>" # From the deployment Overview tab or URL

# Set output filename
output_filename: str = "datarobot_otel_logs.json"

def export_logs_to_json(logs: list[OtelLogEntry], filename: str) -> None:
    """Export logs to a JSON file"""
    log_entries = []
    for log in logs:
        log_payload = dict(log.__dict__)
        log_payload.update(
            {
                "entity_type": entity_type,
                "entity_id": entity_id,
                "timestamp": log.timestamp.isoformat(),
            }
        )
        log_entries.append(log_payload)

    with open(filename, 'w') as f:
        json.dump(log_entries, f, indent=2)

# Get and export OTel logs
try:
    print(f"Getting logs for {entity_type} {entity_id}...")
    logs: list[OtelLogEntry] = OtelLogEntry.list(entity_type, entity_id)
    print(f"Found {len(logs)} logs")

    # Preview first few logs
    for log in logs[:5]:
        print(f"{log}")

    # Example: Filter for ERROR logs only
    error_logs = [log for log in logs if log.level.upper() == 'ERROR']
    print(f"Found {len(error_logs)} ERROR logs")

    # Export to JSON file
    print(f"Writing logs to {output_filename}...")
    export_logs_to_json(logs, output_filename)
    print(f"Exported {len(logs)} logs to {output_filename}")

except dr.errors.ClientError as e:
    print(f"API Error: {e}")
except FileNotFoundError as e:
    print(f"File Error: {e}")
except Exception as e:
    print(f"Unexpected Error: {e}")