使用应用程序接口发送日志

您可以使用提取 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 请求的授权“头”中加入该令牌,其格式为:Bearer .

例如,您可以通过运行以下 CLI 命令来检索 IAM 持有者令牌并将其导出为环境变量:

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

使用cURL发送日志

下表概述了端点详细信息:

Singles 提取端点详细信息
详细信息 值
URL <INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles
HTTP Method POST
头 Content-Type application/json
头 Authorization Bearer $IAM_TOKEN

Where

  • 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 False 1 – Debug
2 – Verbose
3 – Info
4 – Warn
5 – Error
6 – Critical
如果未指定,则将使用 1 – Debug 。
timestamp number False UTC 毫秒。 如果没有指定,则将使用日志到达网关的时间。
computerName string False
category string False
className string False
methodName string False
threadId string False
hiResTimestamp string False UTC 纳秒

如果您未指定 severity,则日志的严重性将被分配为 1 – Debug。

每个请求最多可以发送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 选项提供详细输出,可以帮助您确定命令是否成功完成或是否存在授权或连接问题。