APIを使ってログを送信する

取り込みAPIを使用すると、 IBM Cloud Logs インスタンスにログを送信できます。

ベアラートークンを使った認証

リクエストを認証するには、 IBM Cloud® Identity and Access Management (IAM) アクセス トークンを取得する必要があります。

IBM CloudCLI を使用してトークンを取得するには、以下の手順を実行します:

  1. IBM Cloud にログインします。

    ログインするエンティティがIBM Cloud Logsサービスの「Sender ロールを持っていることを確認してください。

  2. 以下のコマンドを実行します。

    ibmcloud iam oauth-tokens
    
  3. このトークンを HTTP リクエストのAuthorizationヘッダーにBearerという形式で入れる .

たとえば、次の CLI コマンドを実行すると、IAM ベアラー トークンを取得し、それを環境変数としてエクスポートできます。

export IAM_TOKEN=`ibmcloud iam oauth-tokens --output json | jq -r '.iam_token'`

cURLてログを送信する

次の表にエンドポイントの詳細を示します。

シングル摂取エンドポイントの詳細
詳細
URL <INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles
HTTP Method POST
ヘッダー Content-Type application/json
ヘッダー Authorization Bearer $IAM_TOKEN

説明

  • INSTANCE_ID : ログを送信するIBM Cloud Logsインスタンスの GUID。
  • REGION: IBM Cloud Logs インスタンスがあるリージョン。
  • IAM_TOKEN : ログへの送信の承認を要求するために使用される IAM ベアラー トークン。 権限 logs.data.send が必要です。

ログラインを送信するには、以下のcURLコマンドを使用する:

curl -v --location "<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "ENTER_APPLICATION_NAME",
      "subsystemName": "ENTER_SUBSYSTEM_NAME",
      "severity": "ENTER_SEVERITY",
      "computerName": "ENTER_VALUE",
      "text": ENTER_LOG_LINE,
      "category": "ENTER_VALUE",
      "className": "ENTER_VALUE",
      "methodName": "ENTER_VALUE",
      "threadId": "ENTER_VALUE"
    }]'

次の表は、リクエスト内のログ行ごとに含めることができる JSON オブジェクトの概要を示しています。

JSON オブジェクトの配列
プロパティー名 プロパティー・タイプ 必須 詳細情報
applicationName string ある
subsystemName string ある
text string/json ある Ajax または同様のテクノロジを使用している場合は、 JSON.stringify () を使用してデータを送信する必要がある場合があります。
severity number いいえ 1 – Debug
2 – Verbose
3 – Info
4 – Warn
5 – Error
6 – Critical
指定されていない場合は 1 – Debug が使用されます。
timestamp number いいえ UTC ミリ秒。 指定されていない場合は、ログがゲートウェイに到達した時刻が使用されます。
computerName string いいえ
category string いいえ
className string いいえ
methodName string いいえ
threadId string いいえ
hiResTimestamp string いいえ UTCナノ秒

severity を指定しない場合、ログには 1 – Debug の重大度が割り当てられます。

1 回のリクエストあたり最大2MB 、つまり中サイズのログ約 3,000 個を送信できます。

たとえば、次のコマンドを実行して、 eu-es リージョンのインスタンスにログを送信できます。

curl -v --location "https://90d208cc-e1dd-4fb2-a938-358e5996f056.ingress.eu-es.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "cs-rest-test3",
      "subsystemName": "cs-rest-test3",
      "computerName": "computer test3",
      "text": {"key":"value","message":"148.145.31.214 - user [24/Oct/2023:15:54:46 +0000] \"PATCH /maximized/Triple-buffered_Managed/core.hmtl HTTP/1.1\" 400 7074 1.666 \"-\" \"Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_4 rv:6.0) Gecko/1929-02-10 Firefox/37.0\" \"-\"","countryme":"Italy"},
      "category": "cat-1",
      "className": "class-1",
      "methodName": "method-1",
      "threadId": "thread-1"
    }]'

-v オプションは、コマンドが正常に完了したかどうか、または認証や接続の問題があったかどうかを判断するのに役立つ詳細な出力を提供します。