Logtail插件会根据您的采集配置定期请求指定的URL,将请求返回的body内容作为数据源上传到日志服务。本文介绍如何通过日志服务控制台创建Logtail采集配置来采集HTTP数据。

前提条件

已在服务器上安装Logtail,详情请参见安装Logtail(Linux系统)安装Logtail(Windows系统)
说明 目前支持Linux Logtail 0.16.0及以上版本,Window 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必须以httphttps开头。
  • 不支持自定义证书。
  • 不支持交互式通信方式。

操作步骤

例如:每隔1000ms请求一次nginx status模块,URL为http://127.0.0.1/ngx_status,使用正则表达式提取返回body中的状态信息,操作步骤如下所示。

  1. 登录日志服务控制台
  2. 接入数据区域,选择自定义数据插件
  3. 选择日志空间页签中,选择目标Project和Logstore,单击下一步
    您也可以单击立即创建,重新创建Project和Logstore,详情请参见步骤1:创建Project和Logstore
  4. 创建机器组页签中,创建机器组。
  5. 机器组配置页签中,应用机器组。
    选择一个机器组,将该机器组从源机器组移动到应用机器组
  6. 数据源设置页签中,配置配置名称插件配置
    • inputs为Logtail采集配置,必选项,请根据您的数据源配置。
      说明 一个inputs中只允许配置一个类型的数据源。
    • processors为Logtail处理配置,可选项。您可以配置一种或多种处理方式,详情请参见处理数据
    {
     "inputs": [
         {
             "type": "metric_http",
             "detail": {
                 "IntervalMs": 1000,
                 "Addresses": [
                     "http://127.0.0.1/ngx_status"
                 ],
                 "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的内容,默认为空。
    PerAddressSleepMs int Addresses列表中,每个URL请求的间隔时间,单位:ms,默认值:100ms。
    ResponseTimeoutMs int 请求超时的时间,单位:ms,默认值:5000ms。
    IncludeBody bool 是否采集请求的body,默认值:false。如果为true,则将请求body内容存放在名为content的key中。
    FollowRedirects bool 是否自动处理重定向,默认值:false。
    InsecureSkipVerify bool 是否跳过https安全检查,默认值:false。
    ResponseStringMatch string 对返回的body内容进行正则表达式检查,检查结果存放在名为_response_match_的key中,如果匹配,value为yes;如果不匹配,value为false
  7. 查询分析配置页签中,设置索引。
    默认已设置索引,您也可以根据业务需求,重新设置索引,具体请参见开启并配置索引
    说明
    • 全文索引和字段索引属性必须至少启用一种。同时启用时,以字段索引属性为准。
    • 索引类型为long、double时,大小写敏感和分词符属性无效。

执行结果

采集完成后,您可以在日志服务控制台查看数据,除通过正则表达式解析过的数据外,还包括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字段则为空,取值为yes、no。