全部產品
Search
文件中心

Simple Log Service:採集HTTP資料

更新時間:Jun 30, 2024

Logtail會根據您的採集配置定期請求指定的URL,將請求返回的Body內容作為資料來源上傳到Log Service。本文介紹如何通過Log Service控制台建立Logtail採集配置採集HTTP資料。

前提條件

已在伺服器上安裝Logtail。更多資訊,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)

說明

目前支援Linux Logtail 0.16.0及以上版本,Windows Logtail 1.0.0.8及以上版本。

原理

Logtail根據您在採集配置中設定的HTTP請求的URL、Method、Header、Body等資訊,定期對指定URL發起請求,將請求返回的狀態代碼、body內容以及回應時間作為資料來源上傳到Log Service。

實現原理

功能

  • 支援配置多個URL。

  • 支援配置HTTP方法。

  • 支援配置HTTP請求的間隔。

  • 支援自訂要求標頭。

  • 支援HTTPS。

  • 支援檢測body是否匹配固定模式。

應用情境

  • 監控應用狀態(以HTTP方式提供監控介面),例如:

    • Nginx

    • Docker(HTTP方式)

    • Elastic Search

    • Haproxy

    • 其他以HTTP方式提供監控介面的服務

  • 檢測服務可用性。

    定期請求服務,通過狀態代碼以及請求延遲做服務的可用性監控。

  • 定期拉取資料,例如微博評論、粉絲數等。

使用限制

  • URL必須以httphttps開頭。

  • 不支援自訂認證。

  • 不支援互動式通訊方式。

操作步驟

例如每隔1000ms請求一次nginx status模組,URL為http://127.0.0.1/ngx_status,使用Regex提取返回body中的狀態資訊,操作步驟如下所示。

  1. 登入Log Service控制台

  2. 接入資料地區,選擇自訂資料外掛程式

  3. 選擇目標Project和Logstore,單擊下一步

  4. 建立機器組。

    • 如果您已有可用的機器組,請單擊使用現有機器組

    • 如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。

      1. ECS機器頁簽中,通過手動選擇執行個體方式選擇目標ECS執行個體,單擊建立

        具體操作,請參見安裝Logtail(ECS執行個體)

        重要

        如果您的伺服器是與Log Service屬於不同帳號的ECS、其他雲廠商的伺服器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)。手動安裝Logtail後,您必須在該伺服器上手動設定使用者標識。具體操作,請參見配置使用者標識

      2. 確認參數配置無誤後,單擊確定

      3. 安裝完成後,單擊確認安裝完畢

      4. 建立機器組頁面,輸入名稱,單擊下一步

        Log Service支援建立IP地址機器組和使用者自訂標識機器組,詳細參數說明請參見建立IP地址機器組建立使用者自訂標識機器組

  5. 確認目標機器組已在應用機器組地區,單擊下一步

    重要

    建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組無心跳進行排查。

  6. 資料來源設定頁簽中,設定配置名稱外掛程式配置,然後單擊下一步

    • inputs為資料來源配置,必選項。

      重要

      一個inputs中只允許配置一個類型的資料來源。

    • processors為處理配置,用於解析資料。可選項,您可以配置一種或多種處理方式。

      如果當前的inputs配置無法滿足日誌解析需求,您可以在外掛程式配置中添加processors配置,即添加Logtail外掛程式處理資料。例如提取欄位、提取日誌時間、脫敏資料、過濾日誌等。更多資訊,請參見使用Logtail外掛程式處理資料

    {
     "inputs": [
         {
             "type": "metric_http",
             "detail": {
                 "IntervalMs": 1000,
                 "Addresses": [
                     "http://127.0.0.1/ngx_status"
                 ],
                 "Headers": {"key":"value"},
                 "IncludeBody": true
             }
         }
     ],
     "processors" : [
         {
             "type": "processor_regex",
             "detail" : {
                 "SourceKey": "content",
                 "Regex": "Active connections: (\\d+)\\s+server accepts handled requests\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+Reading: (\\d+) Writing: (\\d+) Waiting: (\\d+).*",
                 "Keys": [
                     "connection",
                     "accepts",
                     "handled",
                     "requests",
                     "reading",
                     "writing",
                     "waiting"
                 ],
                 "FullMatch": true,
                 "NoKeyError": true,
                 "NoMatchError": true,
                 "KeepSource": false
             }
         }
     ]
    }

    參數

    類型

    是否必選

    參數說明

    type

    string

    資料來源類型,固定為metric_http。

    Addresses

    string 數組

    URL列表。

    重要

    必須以httphttps開頭。

    IntervalMs

    int

    每次請求的間隔,單位:ms。

    Method

    string

    請求的方法名。必須大寫,預設為GET

    Body

    string

    HTTP Body欄位內容,預設為空白。

    Headers

    key:string, value:string map

    HTTP Header的內容,預設為空白。例如{"key":"value"},請根據實際值替換。

    PerAddressSleepMs

    int

    Addresses列表中,每個URL請求的間隔時間,單位:ms,預設值:100 ms。

    ResponseTimeoutMs

    int

    請求逾時的時間,單位:ms,預設值:5000 ms。

    IncludeBody

    boolean

    是否採集請求的Body,預設值:false。如果為true,則將請求Body內容存放在名為content的key中。

    FollowRedirects

    boolean

    是否自動處理重新導向,預設值:false。

    InsecureSkipVerify

    boolean

    是否跳過HTTPS安全檢查,預設值:false。

    ResponseStringMatch

    string

    對返回的Body內容進行Regex檢查,檢查結果被存放在名為_response_match_的key中,如果匹配,value為yes;如果不匹配,value為no

  7. 預覽資料及建立索引,然後單擊下一步

    Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。更多資訊,請參見建立索引

    重要

    如果您要查詢和分析日誌,那麼全文索引和欄位索引必須至少啟用一種。同時啟用時,以欄位索引為準。

相關文檔

執行結果

採集完成後,您可以在Log Service控制台查看資料,除通過Regex解析過的資料外,還包括HTTP請求附加的method、address、time、code、result資訊。

"Index" : "7"  
"connection" : "1"  
"accepts" : "6079"  
"handled" : "6079"  
"requests" : "11596"  
"reading" : "0"  
"writing" : "1"  
"waiting" : "0"
"_method_" : "GET"  
"_address_" : "http://127.0.0.1/ngx_status"  
"_response_time_ms_" : "1.320"  
"_http_response_code_" : "200"  
"_result_" : "success"

每次請求,預設上傳以下欄位。

欄位

說明

_address_

請求地址。

_method_

要求方法。

_response_time_ms_

響應延遲時間,單位:ms。

_http_response_code_

狀態代碼。

_result_

請求的結果,取值為success、invalid_body、match_regex_invalid、mismatch、timeout。

_response_match_

返回的body內容是否匹配ResponseStringMatch欄位。如果不存在ResponseStringMatch欄位,值為null,如果指定了ResponseStringMatch欄位,值為yes或no。