日志示例

{"remote_addr":"10.43.144.171","@timestamp":"2023-01-17T17:27:14+08:00","request":"GET /v1/stat_des/?id=20230117170221 HTTP/1.1","status":"200","size":171,"ua":"ApiPOST Runtime +https://www.apipost.cn","http_x_forwarded_for":"","ups_status":"200","content_type":"multipart/form-data; boundary=--------------------------918403458724736690579996","sent_http_content_length":"171","request_body":"","http_host":"tencentcdn01v.ops.shyc3.qianxin-inc.cn"}
[api]
  enabled = true
[sources.file01]
  type = "file"
  ignore_older_secs = 600
  include = [ "/var/log/nginx/access.log" ]
  read_from = "beginning"

[transforms.parsing]
  type = "remap" # required
  inputs = ["file01"] # required
  source = '''
  . = parse_json!(string!(.message))
  '''

[transforms.cdn_api_nginx]
  type = "log_to_metric"
  inputs = [ "parsing" ]

  [[transforms.cdn_api_nginx.metrics]]
  type = "counter"
  field = "remote_addr"
  name= "log"

    [transforms.cdn_api_nginx.metrics.tags]
    remote_addr = "{{remote_addr}}"
    request = "{{request}}"
    status = "{{status}}"
    ups_status = "{{ups_status}}"
    http_host = "{{http_host}}"

[sinks.prometheus_exporter]
  type = "prometheus_exporter" # required
  inputs = ["cdn_api_nginx"] # required
  address = "0.0.0.0:9080" # required
  default_namespace = "cdn_api_nginx"

示例结果

curl 127.0.0.1:9080/metrics
# HELP cdn_api_nginx_log log
# TYPE cdn_api_nginx_log counter
cdn_api_nginx_log{http_host="tencentcdn01v.ops.shyc3.qianxin-inc.cn",remote_addr="10.43.144.171",request="GET /v1/stat_des/?id=20230117170221 HTTP/1.1",status="200",ups_status="200"} 3