google / google/mtail

Temporary Variables

Open
#333 1 comment 0 reactions 0 assignees View on GitHub
enhancement mtail-Language/VM
Dominant language
Go
Stars
4k
Forks
392
PR merge metrics
No merged PRs in 30d

Description

Is it possible to store temporary variables in an mtail program for convenience? Hidden variables seem to be for storing state between lines, but these variables would just be used for transforming data from each line. For example, using the apache program in examples, if you wanted to transform response code to response code group to save on cardinality, is this the right way to do it?

```
# Parser for the common apache log format as follow.
# LogFormat "%h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-agent}i\"
counter apache_http_requests_total by request_method, http_version, status_code
counter apache_http_bytes_total by request_method, http_version, status_code
gauge apache_http_response_time by remote_host, request_method, request_uri, status_code, user_agent
gauge apache_http_response_size by remote_host, request_method, request_uri, status_code, user_agent
hidden text status_code_group

/^/ +
/(?P[0-9A-Za-z\.:-]+) / + # %h
/(?P[0-9A-Za-z-]+) / + # %l
/(?P[0-9A-Za-z-]+) / + # %u
/\[(?P\d{2}\/\w{3}\/\d{4}:\d{2}:\d{2}:\d{2} (\+|-)\d{4})\] / + # %u
/"(?P[A-Z]+) (?P\S+) (?PHTTP\/[0-9\.]+)" / + # \"%r\"
/(?P\d{3}) / + # %>s
/((?P\d+)|-) / + # %b
/(?P\d+) / + # %D
/"(?P\S+)" / + # \"%{Referer}i\"
/"(?P[[:print:]]+)"/ + # \"%{User-agent}i\"
/$/ {
strptime($timestamp, "02/Jan/2006:15:04:05 -0700") # for tests

if $status_code < 200 {
status_code_group = "2xx"
}
if $status_code >= 200 && $status_code < 300 {
status_code_group = "3xx"
}
if $status_code >= 300 && $status_code < 400 {
status_code_group = "4xx"
}
if $status_code >= 400 && $status_code < 500 {
status_code_group = "4xx"
}
if $status_code >= 500 {
status_code_group = "5xx"
}

apache_http_requests_total[$request_method][$http_version][$status_code_group]++
$response_size > 0 {
apache_http_bytes_total[$request_method][$http_version][$status_code_group] += $response_size
apache_http_response_size[$remote_host][$request_method][$request_uri][$status_code_group][$user_agent] += $response_size
}
apache_http_response_time[$remote_host][$request_method][$request_uri][$status_code_group][$user_agent] = $response_time

del status_code_group
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.