Logtail会根据您的采集配置定期请求指定的URL,将请求返回的Body内容作为数据源上传到日志服务。本文介绍如何通过日志服务控制台创建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内容以及响应时间作为数据源上传到日志服务。
功能
支持配置多个URL。
支持配置HTTP方法。
支持配置HTTP请求的间隔。
支持自定义请求头。
支持HTTPS。
支持检测body是否匹配固定模式。
应用场景
监控应用状态(以HTTP方式提供监控接口),例如:
Nginx
Docker(HTTP方式)
Elastic Search
Haproxy
其他以HTTP方式提供监控接口的服务
检测服务可用性。
定期请求服务,通过状态码以及请求延迟做服务的可用性监控。
定期拉取数据,例如微博评论、粉丝数等。
使用限制
URL必须以
http
或https
开头。不支持自定义证书。
不支持交互式通信方式。
操作步骤
例如每隔1000ms请求一次nginx status模块,URL为http://127.0.0.1/ngx_status
,使用正则表达式提取返回body中的状态信息,操作步骤如下所示。
登录日志服务控制台。
在接入数据区域,选择自定义数据插件。
选择目标Project和Logstore,单击下一步。
创建机器组。
如果您已有可用的机器组,请单击使用现有机器组。
如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
在ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建。
具体操作,请参见安装Logtail(ECS实例)。
重要如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您需要手动安装Logtail。具体操作,请参见安装Logtail(Linux系统)或安装Logtail(Windows系统)。手动安装Logtail后,您必须在该服务器上手动配置用户标识。具体操作,请参见配置用户标识。
确认参数配置无误后,单击确定。
安装完成后,单击确认安装完毕。
在创建机器组页面,输入名称,单击下一步。
日志服务支持创建IP地址机器组和用户自定义标识机器组,详细参数说明请参见创建IP地址机器组和创建用户自定义标识机器组。
确认目标机器组已在应用机器组区域,单击下一步。
重要创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。
在数据源设置页签中,设置配置名称和插件配置,然后单击下一步。
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列表。
重要必须以
http
或https
开头。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内容进行正则表达式检查,检查结果被存放在名为_response_match_的key中,如果匹配,value为yes;如果不匹配,value为no。
预览数据及创建索引,然后单击下一步。
日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引。
重要如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
问题排查
使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见Logtail采集日志失败的排查思路进行排查。
执行结果
采集完成后,您可以在日志服务控制台查看数据,除通过正则表达式解析过的数据外,还包括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字段。如果不存在 |