Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 包括使用Telegraf plugin inputs.logparser的附加测量;格罗克“;模式(或正则表达式)_Regex_Logstash_Logstash Grok_Telegraf - Fatal编程技术网

Regex 包括使用Telegraf plugin inputs.logparser的附加测量;格罗克“;模式(或正则表达式)

Regex 包括使用Telegraf plugin inputs.logparser的附加测量;格罗克“;模式(或正则表达式),regex,logstash,logstash-grok,telegraf,Regex,Logstash,Logstash Grok,Telegraf,我正在使用telegraf插件[[inputs.logparser]]根据我运行的本地网页从Apache获取访问日志数据 使用[“%{COMBINED_LOG_FORMAT}”]模式,我能够检索访问日志提供的默认度量值,包括http_版本、请求、resp_字节等 我在httpd.conf文件中添加了“日志格式”,以将附加的“响应时间”添加到每个请求访问日志记录中,最后添加了%D,当我在实现后查看访问日志时,这是成功的 然而,到目前为止,我还无法成功地告诉Telegraf使用inputs.logp

我正在使用telegraf插件[[inputs.logparser]]根据我运行的本地网页从Apache获取访问日志数据

使用
[“%{COMBINED_LOG_FORMAT}”]
模式,我能够检索访问日志提供的默认度量值,包括http_版本、请求、resp_字节等

我在httpd.conf文件中添加了“日志格式”,以将附加的“响应时间”添加到每个请求访问日志记录中,最后添加了
%D
,当我在实现后查看访问日志时,这是成功的

然而,到目前为止,我还无法成功地告诉Telegraf使用inputs.logparser确认这个新的测量值-我正在使用带有InfluxDB的grafana仪表板来监控这个数据,它还没有作为一个额外的测量值出现

到目前为止,我尝试了以下几点:

第一个[[inputs.logparser]]部分在我的整个尝试过程中保持不变,并且始终存在/处于活动状态,这似乎是为了能够获得默认测量值

######## default logparser using COMBINED to obtain default access_log measurements ######
# Stream and parse log file(s).
[[inputs.logparser]]
  files = ["/var/log/httpd/access_log"]
  from_beginning = true

  ## Parse logstash-style "grok" patterns:
  [inputs.logparser.grok]

    patterns = ["%{COMBINED_LOG_FORMAT}"
    measurement = "apache_access_log"
    custom_patterns = '''
    '''

尝试1匹配附加到访问日志的响应时间:

############# Grok/RegEx for matching response time ######################
# Stream and parse log file(s).
[[inputs.logparser]]
  ## Log files to parse.
  files = ["/var/log/httpd/access_log"]
  from_beginning = true

  ## Parse logstash-style "grok" patterns:
  [inputs.logparser.grok]
    patterns = ["%{METRICS_INCLUDE_RESPONSE}"]

    measurement = "apache_access_log"
    custom_patterns = '''
    METRICS_INCLUDE_RESPONSE [%{NUMBER:resp}]
    '''
我的第二次尝试我想尝试普通正则表达式

############# Grok/RegEx for matching response time ######################
# Stream and parse log file(s).
[[inputs.logparser]]
  ## Log files to parse.
  files = ["/var/log/httpd/access_log"]
  from_beginning = true

  ## Parse logstash-style "grok" patterns:
  [inputs.logparser.grok]
    patterns = ["%{METRICS_INCLUDE_RESPONSE}"]   
    measurement = "apache_access_log"
    custom_patterns = '''
    METRICS_INCLUDE_RESPONSE [%([0-9]{1,3})]
    '''
在这两次尝试之后,默认测量值仍会被Telegraf记录并抓取,但响应时间不会显示为附加测量值

我认为问题在于我的定制grok模式中的语法,它没有按照我的预期匹配,因为我没有告诉它提取正确的信息?但我不确定

我在下面提供了一个访问日志输出的示例,所有细节都是以组合日志格式从Telegraf中提取出来的,除了结尾的数字,它代表响应时间

10.30.20.32 - - [09/Jan/2020:11:08:14 +0000] "POST /404.php HTTP/1.1" 200 252 "http://10.30.10.77/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" 600
10.30.20.32 - - [09/Jan/2020:11:08:15 +0000] "POST /boop.html HTTP/1.1" 200 76 "http://10.30.10.77/404.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" 472

您实际上是在扩展预定义的模式。因此,模式应该这样写(假设您的响应时间值在日志的方括号内):

您将在float数据类型中获得名为“responseTime”的度量中的响应时间值

######## default logparser using COMBINED to obtain default access_log measurements ######
# Stream and parse log file(s).
[[inputs.logparser]]
  files = ["/var/log/httpd/access_log"]
  from_beginning = true

  ## Parse logstash-style "grok" patterns:
  [inputs.logparser.grok]
    patterns = ["%{COMBINED_LOG_FORMAT} \\[%{NUMBER:responseTime:float}\\]"]
    measurement = "apache_access_log"
    custom_patterns = '''
    '''