Prometheus-nginxlog-exporter 未显示正确的统计数据



我刚刚开始使用prometheus nginxlog导出器
https://github.com/martin-helmich/prometheus-nginxlog-exporter

我的nginx.conf只有一个更改

log_format custom '$remote_addr - $remote_user [$time_local] $request_method "$request_uri " $status';
access_log  /var/log/nginx/access.log  custom;

我有两个简单的站点

server {
listen       82;
server_name  localhost;
access_log  /var/log/nginx/access_default_site.log  custom;
location / {
root   /usr/share/nginx/html;
index  index.html index.htm;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/share/nginx/html;
}
}
upstream prom {
server 127.0.0.1:9090;
keepalive 15;
}
server {
listen 80;
location / {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.prom;
proxy_pass http://prom;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
}
}

etc/prometheus-nginxlog-exporter.hcl

listen {
port = 4040
}
namespace "nginx" {
source = {
files = [
"/var/log/nginx/access.log"
]
}
metrics_override = { prefix = "allnginx" }
namespace_label = "vhost"
format = "$remote_addr - $remote_user [$time_local] $request_method "$request_uri" $status"

labels {
app = "prod"
}
}
namespace "default" {
source = {
files = [
"/var/log/nginx/access_default_site.log"
]
}
metrics_override = { prefix = "allnginx" }
namespace_label = "vhost"
format = "$remote_addr - $remote_user [$time_local] $request_method "$request_uri" $status"

labels {
app = "test"
}
}

如果检查prometheus度量
curl http://localhost:4040/metrics

输出为

# HELP allnginx_http_response_count_total Amount of processed HTTP requests
# TYPE allnginx_http_response_count_total counter
allnginx_http_response_count_total{app="prod",method="",status="200",vhost="nginx"} 28
allnginx_http_response_count_total{app="prod",method="",status="302",vhost="nginx"} 7
allnginx_http_response_count_total{app="prod",method="",status="400",vhost="nginx"} 30
# HELP allnginx_parse_errors_total Total number of log file lines that could not be parsed
# TYPE allnginx_parse_errors_total counter
allnginx_parse_errors_total{vhost="default"} 0
allnginx_parse_errors_total{vhost="nginx"} 0

allnginx_http_response_count_total{app="prod",method="",status="200",vhost="nginx"} 28
为什么方法为空?如何正确配置?

如何获得关于对位置的请求的统计数据,例如/&"api";

如文档中所述
https://github.com/martin-helmich/prometheus-nginxlog-exporter#custom-标签通过
我们应该重新标记

我的工作配置是

listen {
port = 4040
}
namespace "nginx" {
source = {
files = [
"/var/log/nginx/access.log"
]
}
metrics_override = { prefix = "allnginx" }
namespace_label = "vhost"
format = "$remote_addr - $remote_user [$time_local] $request_method "$request_uri" $status"
relabel "method" { from = "request_method" }
relabel "request_uri" { from = "request_uri" }
labels {
app = "prod"
}
}
namespace "default" {
source = {
files = [
"/var/log/nginx/access_default_site.log"
]
}
metrics_override = { prefix = "allnginx" }
namespace_label = "vhost"
format = "$remote_addr - $remote_user [$time_local] $request_method "$request_uri" $status"
relabel "method" { from = "request_method" }
relabel "request_uri" { from = "request_uri" }
labels {
app = "test"
}
}

在度量中,我们可以看到类似的东西

allnginx_http_response_count_total{app="prod", instance="localhost:4040", job="nginx", method="DELETE", request_uri="/api/dashboards/uid/GLEY_3g7k", status="200", vhost="nginx"}
1
allnginx_http_response_count_total{app="prod", instance="localhost:4040", job="nginx", method="GET", request_uri="/", status="302", vhost="nginx"}
1
allnginx_http_response_count_total{app="prod", instance="localhost:4040", job="nginx", method="GET", request_uri="/", status="401", vhost="nginx"}
2
allnginx_http_response_count_total{app="prod", instance="localhost:4040", job="nginx", method="GET", request_uri="/api/alerts/states-for-dashboard?dashboardId=2", status="200", vhost="nginx"}
1
allnginx_http_response_count_total{app="prod", instance="localhost:4040", job="nginx", method="GET", request_uri="/api/alerts/states-for-dashboard?dashboardId=3", status="200", vhost="nginx"}

最新更新