日志示例
{"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
标签:status,exporter,log,cdn,nginx,prometheus,api,type
From: https://blog.51cto.com/yuyiff/6019275