IBM Cloud Docs
管理 Logpush 作業

管理 Logpush 作業

IBM Cloud® Internet Services 企業級計劃可存取、DNS 和 Range 請求的詳細記錄,以及其網域的防火牆事件。HTTP 這些日誌有助於偵錯和分析,特別是與其他資料來源(例如來源的入口或應用程式伺服器日誌)結合使用時。

開始之前

在使用使用者介面建立 Logpush 作業之前,請檢閱下列資訊,並滿足任何先決條件:

  • 目前,CIS UI 支援下列目的地:

    • IBM Cloud 日誌
    • Cloud Object Storage
    • Splunk
  • 使用 Logpush 之前,請務必 啟用記錄保留功能

  • 如果使用 Cloud Object Storage,您必須有一個 Cloud Object Storage 的實例,這個實例有一個具有物件寫入存取權的水桶,而這個存取權是授予 IBM Cloud 帳戶 cislogp@us.ibm.com 的。 這可讓 CIS 將請求記錄寫入 Cloud Object Storage 桶。

  • Logpush 的資料與 Logpull 的資料相同。 但是,Logpull 允許您下載請求日誌,而 Logpush 則不同,它讓您可以將請求日誌推送到目的地。

  • DNS、Range 和防火牆事件日誌不包含在 HTTP / HTTPS 日誌中,需要單獨的工作。 這些工作可以傳送到相同的目的地。 但是,當使用 Cloud Object Storage 時,您需要指定不同的路徑。

  • Logpush 使用可公開存取的 HTTPS 端點 Cloud Object Storage,確保日誌資料在移動中加密。

  • 當傳送日誌到 Splunk 時,CIS 會檢查 IP 位址的存取權限和連接埠,然後驗證 HTTP Receive 日誌來源的憑證。 如果所有參數都有效,則會建立 Logpush。 然後,Logpush 開始將事件傳送至 HTTP Event Collector ( Splunk )。

  • 如果 CIS 沒有明確支援您的目的地,Logpush 仍可使用自訂 HTTP 目的地存取該目的地。 這包括您自訂的 HTTP 日誌伺服器。

    為避免出錯,請確定目的地可以接受名為 test.txt.gz 的 gzip 上傳檔案,其中包含 {"content":"tests"} 的壓縮內容。

  • 使用 Cloud Object Storage 時,您必須在建立 Logpush 工作後驗證所有權。 這項任務將在以下程序中說明。

在主控台中建立 Logpush 工作

若要在主控台中建立 Logpush 作業,請遵循以下步驟:

  1. 選取帳戶 > 日誌,然後按一下建立

  2. 選擇服務:

    1. 從可用選項中選取您想要的服務類型。
    2. 選擇資料集類型。
    3. 可選:輸入說明和名稱。
    4. 選取下一步
  3. 設定目的地:

    IBM Cloud 日誌

    輸入 IBM Cloud 日誌實體 ID、實體區域和 API 金鑰 (使用者管理)。

    需要設定 IBM Cloud 日誌實例的帳號的 API 金鑰。 您可以使用使用者 API 金鑰或服務 ID API 金鑰。 此密鑰用於為 Logpush 工作產生承載令牌。 API 金鑰可透過使用 更新 Logpush 工作 API 來輪換。

    對於 IBM Cloud 日誌服務,使用者或服務 ID 必須被授予傳送者 IAM 角色。

    Cloud Object Storage

    輸入 Cloud Object Storage 範例、水桶資訊 (名稱和區域) 以及水桶路徑 (選用)。 然後,將記錄整理到每日資料夾 (選用)。

    Cloud Object Storage 的目的地值必須是唯一的。 建議使用桶路徑以避免衝突。

    Splunk
    輸入 Splunk 端點、頻道 ID 和驗證標記。

    您可以選擇使用不安全的驗證;但不建議這樣做。

    自訂 HTTP 目的地

    輸入您的 HTTP 終點。

    確保端點已正確 URL-encoded,且任何必要的請求標頭會新增為格式為「header_*」的 URL 參數 (例如 header_Authorization)。

  4. 僅適用於 Cloud Object Storage 工作,驗證所有權。 若要執行此動作,請下載您在儲值桶中收到的物件,並將標記貼在 Ownership token 文字區域中。 然後按下一步

    您可以從「故障排除」部分重新傳送文件,或者如果儲存桶路徑不正確,則返回上一步。

  5. 選擇記錄欄位:

    1. 驗證 Logpush 詳細資訊是否正確。

    2. 從 Timestamp format(時戳格式)和 Frequency(頻率)功能表中選擇 Logpush 設定。

    3. 透過將啟用開關切換為來選擇是否啟用 Logpush 作業。

    4. 選擇要包含在 Logpush 工作中的記錄欄位。

      您可以使用開關選取所有欄位 或展開所有欄位。 您也可以還原為預設設定。

    5. 按一下 「完成」 以建立您的 Logpush 作業。

從 CLI 建立 Logpush 作業

您可以使用 ibmcloud cis logpush-job-create CLI 來建立 Logpush 工作。

若要為特定網域建立 Logpush 作業並啟用該作業,請執行下列指令:

ibmcloud cis logpush-job-create DNS_DOMAIN_ID --destination PATH --name JOB_NAME --fields all --enable true

其中:

-destination:指定前往目的地的路徑。 支援的目的地路徑如下:

IBM Cloud 記錄路徑
IBM Cloud 日誌
ibmcl://<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=<IBM_API_KEY>

例如:需要設定 Logs 範例的帳號的 API 金鑰。
ibmcl://604a309c-585c-4a42-955d-76239ccc1905.ingress.us-south.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=zxzeNQI22dPwxxxxxxxx9jxdtn1EVK

IBM Cloud 您可以使用使用者 API 金鑰或服務 ID API 金鑰。 此密鑰用於為 Logpush 工作產生承載令牌。 API 金鑰可透過使用更新 Logpush 工作 API 來輪換。

重要: 使用者或服務 ID 必須在 IBM Cloud 日誌服務上被授予寄件者 IAM 角色。

Cloud Object Storage 路徑
Cloud Object Storage
cos://<BUCKET_OBJECT_PATH>?region=<REGION>&instance-id=<IBM_ClOUD_OBJECT_STORAGE_INSTANCE_ID>

例如:
cos://cis-test-bucket/logs?region=us&instance-id=f75e6d90-4212-4026-851c-d572071146cd

自訂 HTTP 路徑
自訂 HTTP
https://<HOSTNAME>?header_Authorization=Basic%20REDACTED&tags=host:<DOMAIN_NAME>,dataset:<LOGPUSH_DATASET>

例如:
https://logs.example.com?header_Authorization=a64Vxxxxx5Aq

--name:指定 Logpush 工作名稱。

--fields:指定要包含在記錄檔中的記錄欄位清單。 使用逗號分隔多個欄位。 使用 ibmcloud cis logpush-available-fields DNS_DOMAIN_ID --dataset DATASET 指令可取得可用日誌欄位的完整清單,或使用 all 將所有可用欄位包含在日誌檔案中。

--enable:是啟用或停用 Logpush 工作的標誌。 有效值為 truefalse (預設值)。

Cloud Object Storage:驗證所有權

建立 Logpush 工作將日誌傳送至 Cloud Object Storage 之後,您必須驗證所有權。

當挑戰標記寫入指定 Cloud Object Storage 桶中的檔案時,請遵循下列步驟:

  • 從 Cloud Object Storage bucket 下載檔案並開啟。
  • 從檔案複製挑戰標記並貼入指令提示,以解決所有權挑戰。

CIS 驗證所有權挑戰後,Logpush 作業就會成功建立。 然後,工作會每 30 秒或達到 100,000 條記錄後 (以先到者為準),將請求記錄推送到您的 Cloud Object Storage bucket。 請注意,在 30 秒期間或每 100,000 條記錄可能會推送多個檔案。

您也可以使用水桶路徑中的 {DATE} 令牌,將 Logpush 日誌整理到每日資料夾中。 例如: cos://mybucket/cislog/{DATE}?region=us-south&instance-id=c84e2a79-ce6d-3c79-a7e4-7e7ab3054cfe

指令範例

支援目的地的 CLI 範例:

IBM Cloud 日誌

範例

ibmcloud cis logpush-job-create 601b728b86e630c744c81740f72570c3 --destination "ibmcl://604a309c-585c-4a42-955d-76239ccc1905.ingress.us-south.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=xxxxxxxx" --name logpushJobGen --enable true --fields RayID --dataset http_requests --frequency high -i 1a9174b6-0106-417a-844b-c8eb43a72f63
Cloud Object Storage

範例

ibmcloud cis logpush-job-create 31984fea73a15b45779fa0df4ef62f9b --destination cos://cis-test-bucket/logs?region=us&instance-id=f75e6d90-4212-4026-851c-d572071146cd --name logpushcreate --enable true --fields all --timestamps rfc3339 --dataset http_requests --frequency low -i cis-demo --output JSON
自訂 HTTP

範例

ibmcloud cis logpush-job-create 601b728b86e630c744c81740f72570c3 --destination https://logs.example.com?header_Authorization=a64VuywesDu5Aq" --name logpushJobGen --enable true --fields RayID --dataset http_requests --frequency high -i 1a9174b6-0106-417a-844b-c8eb43a72f63

使用 API 建立 Logpush 作業

使用 IBM Cloud Logs、Cloud Object Storage 或 Splunk 時,您可以使用 Create a Logpush job API 來建立 Logpush job。

使用 API 取得資料集的可用日誌欄位

可在 Logpush Job 的 logpull_options 中指定日誌欄位,以自訂傳送至目的地的內容。 若要取得 Logpush 資料集的可用日誌欄位,請遵循下列步驟:

  1. 使用正確的變數設定您的 API 環境。

  2. 將以下值儲存在 API 命令中使用的變數中:

    CRN:服務實例的完整 URL 編碼 CRN。

    ZONE_ID:網域 ID。

    DATASET:正在檢查的 Logpush 資料集。 之一 http_requests, range_events, dns_logs, firewall_events

  3. 當所有變數都啟動後,建立Logpush作業:

    curl -X GET https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/datas/$DATASET/fields \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN"'
    

建立 Logpush 工作以傳送日誌到您的目的地

若要建立一個 Logpush 工作到您的目的地 ( IBM Cloud Logs, Cloud Object Storage, 或 Splunk ),請遵循下列步驟:

  1. 使用正確的變數設定您的 API 環境。

  2. 將以下值儲存在 API 命令中使用的變數中:

    CRN:服務實例的完整 URL 編碼雲端資源名稱 (CRN)。

    ZONE_ID:網域 ID。

    --request body:用於建立 Logpush 工作正文的資訊 ( logpush_job_DESTINATION_req ) 其中 DESTINATION 為下列值之一:

    IBM Cloud 日誌目的地
    IBM Cloud 日誌

    ibmcl:用於識別推送資料的 IBM Cloud Logs 實例的資訊。 ibmcl 物件內的欄位為

    • instance_id : IBM Cloud 日誌實例的 ID。
    • region : IBM Cloud 日誌實例的區域 (例如 us-south )。
    • api_key :需要設定 IBM Cloud Logs 帳戶的 API 金鑰。 您可以使用使用者 API 金鑰或服務 ID API 金鑰。 此密鑰用於為 Logpush 工作產生承載令牌。 API 金鑰可透過使用更新 Logpush 工作 API 來輪換。

    重要 :該使用者或服務 ID 必須在 IBM Cloud Logs 服務上被授予 Sender IAM 角色。

    ibmcl_names : 可選欄位,用於自訂 IBM Cloud 日誌中使用的應用程式和子系統名稱。 ibmcl_names 物件內的欄位為

    • application_name :工作的自訂應用程式名稱。
    • subsystem_name :工作的自訂子系統名稱。
    Cloud Object Storage 目的地
    Cloud Object Storage

    cos:識別推送資料的 Cloud Object Storage 桶的資訊。 cos 物件內的欄位為

    • bucket_name :傳送日誌的 COS 桶名稱 (例如: cos-bucket001 )。
    • region : Cloud Object Storage 實例的區域 (例如: us-south )。
    • id :COS 實例的 ID。
    Splunk 目的地
    Splunk

    splunk:用來辨識推送資料的 Splunk HTTP Event Collector (HEC) 的資訊。 splunk 物件內的欄位:

    • endpoint_url : URL 的 Splunk HEC。
    • channel_id :用於唯一識別日誌推送的隨機 GUID。
    • skip_verify :用於跳過 HTTP Event Collector 證書驗證的布林標誌。 只有在 HEC 使用自簽證書時,才將此設定為 true
    • source_type : Splunk 來源類型 (例如: cloudflare:json )。
    • auth_token : Splunk 授權令牌。
    自訂 HTTP 目的地
    自訂 HTTP
    destination_conf:用於設定推送資料的自訂 HTTP 目的地的資訊。 標頭可指定由 Logpush 使用,查詢參數以 header_ 為前綴 (例如:header_Authorization=XXXX)。

    name:Logpush 作業的名稱。

    enabled:作業是否啟用。 truefalse.

    logpull_options:設定字串。 例如,fields=RayID,ZoneID&timestamps=rfc3339

    dataset:拉取的資料集。 之一 http_requests, dns_logs, range_events, firewall_events

    frequency: CIS 將記錄批次傳送至目的地的頻率。 highlow.

  3. 當所有變數都啟動後,建立Logpush作業:

    IBM Cloud 日誌

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "ibmcl": {
          "instance_id": "f8k3309c-585c-4a42-955d-76239cccf8k3",
          "region": "us-south",
          "api_key": "f8k3NQI22dPwNVCcmS62YFL1tm9vaehY6C9jxdtnf8k3"
       },
       "ibmcl_names": {
          "application_name": "cis-edge-logs",
          "subsystem_name": "stage-firewall-logs"
       }
       "dataset": "http_requests",
       "enabled": true,
       "logpull_options": "fields=RayID,ZoneID&timestamps=rfc3339",
       "name": "CIS-Edge-Requests",
       "frequency": "low"
    }'
    

    Cloud Object Storage

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "cos": {
          "bucket_name": "example_bucket",
          "path": "temp/",
          "id": "cos_instance_id",
          "region": "us-east"
       },
       "dataset": "firewall_events",
       "enabled": false,
       "name": "CIS-Firewall-COS",
       "frequency": "low",
       "logpull_options": "fields=RayID,ZoneID&timestamps=rfc3339",
       "ownership_challenge": "xxxxxxx"
    }'
    

    Splunk

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "splunk": {
          "endpoint_url": "example.splunkcloud.com:8088/services/collector/raw",
          "channel_id": "def3c136-7a01-4655-b17f-8e25a780ef2c",
          "skip_verify": false,
          "source_type": "cloudflare:json",
          "auth_token": "Splunk fake3585-0f38-4d62-8b43-c4b78584fake"
       },
       "dataset": "http_requests",
       "enabled": true,
       "name": "CIS-Splunk-Logpush",
       "frequency": "high",
       "logpull_options": "fields=RayID,CacheResponseBytes,CacheResponseStatus,CacheCacheStatus&timestamps=rfc3339"
    }'
    

    自訂 HTTP

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "destination_conf": "https://logs.example.com?header_Authorization=a64VuywesDu5Aq",
       "dataset": "http_requests",
       "enabled": true,
       "name": "CIS-Custom-Logpush",
       "frequency": "high",
       "logpull_options": "fields=RayID,CacheResponseBytes,CacheResponseStatus,CacheCacheStatus&timestamps=rfc3339"
    }'