采集HTTP數(shù)據(jù)
Logtail會根據(jù)您的采集配置定期請求指定的URL,將請求返回的Body內(nèi)容作為數(shù)據(jù)源上傳到日志服務(wù)。本文介紹如何通過日志服務(wù)控制臺創(chuàng)建Logtail采集配置采集HTTP數(shù)據(jù)。
前提條件
已在服務(wù)器上安裝Logtail。更多信息,請參見安裝Logtail(Linux系統(tǒng))或安裝Logtail(Windows系統(tǒng))。
目前支持Linux Logtail 0.16.0及以上版本,Windows Logtail 1.0.0.8及以上版本。
原理
Logtail根據(jù)您在采集配置中設(shè)置的HTTP請求的URL、Method、Header、Body等信息,定期對指定URL發(fā)起請求,將請求返回的狀態(tài)碼、body內(nèi)容以及響應(yīng)時間作為數(shù)據(jù)源上傳到日志服務(wù)。
功能
支持配置多個URL。
支持配置HTTP方法。
支持配置HTTP請求的間隔。
支持自定義請求頭。
支持HTTPS。
支持檢測body是否匹配固定模式。
應(yīng)用場景
監(jiān)控應(yīng)用狀態(tài)(以HTTP方式提供監(jiān)控接口),例如:
Nginx
Docker(HTTP方式)
Elastic Search
Haproxy
其他以HTTP方式提供監(jiān)控接口的服務(wù)
檢測服務(wù)可用性。
定期請求服務(wù),通過狀態(tài)碼以及請求延遲做服務(wù)的可用性監(jiān)控。
定期拉取數(shù)據(jù),例如微博評論、粉絲數(shù)等。
使用限制
URL必須以
http
或https
開頭。不支持自定義證書。
不支持交互式通信方式。
操作步驟
例如每隔1000ms請求一次nginx status模塊,URL為http://127.0.0.1/ngx_status
,使用正則表達(dá)式提取返回body中的狀態(tài)信息,操作步驟如下所示。
登錄日志服務(wù)控制臺。
在接入數(shù)據(jù)區(qū)域,選擇自定義數(shù)據(jù)插件。
選擇目標(biāo)Project和Logstore,單擊下一步。
創(chuàng)建機器組。
如果您已有可用的機器組,請單擊使用現(xiàn)有機器組。
如果您還沒有可用的機器組,請執(zhí)行以下操作(以ECS為例)。
在ECS機器頁簽中,通過手動選擇實例方式選擇目標(biāo)ECS實例,單擊創(chuàng)建。
具體操作,請參見安裝Logtail(ECS實例)。
重要如果您的服務(wù)器是與日志服務(wù)屬于不同賬號的ECS、其他云廠商的服務(wù)器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統(tǒng))或安裝Logtail(Windows系統(tǒng))。手動安裝Logtail后,您必須在該服務(wù)器上手動配置用戶標(biāo)識。具體操作,請參見配置用戶標(biāo)識。
確認(rèn)參數(shù)配置無誤后,單擊確定。
安裝完成后,單擊確認(rèn)安裝完畢。
在創(chuàng)建機器組頁面,輸入名稱,單擊下一步。
日志服務(wù)支持創(chuàng)建IP地址機器組和用戶自定義標(biāo)識機器組,詳細(xì)參數(shù)說明請參見創(chuàng)建IP地址機器組和創(chuàng)建用戶自定義標(biāo)識機器組。
確認(rèn)目標(biāo)機器組已在應(yīng)用機器組區(qū)域,單擊下一步。
重要創(chuàng)建機器組后立刻應(yīng)用,可能因為連接未生效,導(dǎo)致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組無心跳進行排查。
在數(shù)據(jù)源設(shè)置頁簽中,設(shè)置配置名稱和插件配置,然后單擊下一步。
inputs為數(shù)據(jù)源配置,必選項。
重要一個inputs中只允許配置一個類型的數(shù)據(jù)源。
processors為處理配置,用于解析數(shù)據(jù)。可選項,您可以配置一種或多種處理方式。
如果當(dāng)前的inputs配置無法滿足日志解析需求,您可以在插件配置中添加processors配置,即添加Logtail插件處理數(shù)據(jù)。例如提取字段、提取日志時間、脫敏數(shù)據(jù)、過濾日志等。更多信息,請參見使用Logtail插件處理數(shù)據(jù)。
{ "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 } } ] }
參數(shù)
類型
是否必選
參數(shù)說明
type
string
是
數(shù)據(jù)源類型,固定為metric_http。
Addresses
string 數(shù)組
是
URL列表。
重要必須以
http
或https
開頭。IntervalMs
int
是
每次請求的間隔,單位:ms。
Method
string
否
請求的方法名。必須大寫,默認(rèn)為
GET
。Body
string
否
HTTP Body字段內(nèi)容,默認(rèn)為空。
Headers
key:string, value:string map
否
HTTP Header的內(nèi)容,默認(rèn)為空。例如
{"key":"value"}
,請根據(jù)實際值替換。PerAddressSleepMs
int
否
Addresses列表中,每個URL請求的間隔時間,單位:ms,默認(rèn)值:100 ms。
ResponseTimeoutMs
int
否
請求超時的時間,單位:ms,默認(rèn)值:5000 ms。
IncludeBody
boolean
否
是否采集請求的Body,默認(rèn)值:false。如果為true,則將請求Body內(nèi)容存放在名為content的key中。
FollowRedirects
boolean
否
是否自動處理重定向,默認(rèn)值:false。
InsecureSkipVerify
boolean
否
是否跳過HTTPS安全檢查,默認(rèn)值:false。
ResponseStringMatch
string
否
對返回的Body內(nèi)容進行正則表達(dá)式檢查,檢查結(jié)果被存放在名為_response_match_的key中,如果匹配,value為yes;如果不匹配,value為no。
預(yù)覽數(shù)據(jù)及創(chuàng)建索引,然后單擊下一步。
日志服務(wù)默認(rèn)開啟全文索引。您也可以根據(jù)采集到的日志,手動創(chuàng)建字段索引,或者單擊自動生成索引,日志服務(wù)將自動生成字段索引。更多信息,請參見創(chuàng)建索引。
重要如果您要查詢和分析日志,那么全文索引和字段索引必須至少啟用一種。同時啟用時,以字段索引為準(zhǔn)。
問題排查
使用Logtail采集日志后,如果預(yù)覽頁面或查詢頁面無數(shù)據(jù),您可以參見Logtail采集日志失敗的排查思路進行排查。
執(zhí)行結(jié)果
采集完成后,您可以在日志服務(wù)控制臺查看數(shù)據(jù),除通過正則表達(dá)式解析過的數(shù)據(jù)外,還包括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"
每次請求,默認(rèn)上傳以下字段。
字段 | 說明 |
_address_ | 請求地址。 |
_method_ | 請求方法。 |
_response_time_ms_ | 響應(yīng)延遲時間,單位:ms。 |
_http_response_code_ | 狀態(tài)碼。 |
_result_ | 請求的結(jié)果,取值為success、invalid_body、match_regex_invalid、mismatch、timeout。 |
_response_match_ | 返回的body內(nèi)容是否匹配ResponseStringMatch字段。如果不存在 |