我正在为我们的NGINX Plus服务器构建一个监控系统,我们正在Kubernetes上运行这些服务器。默认情况下,NGINX Plus自带API来获取统计数据,但他们不进入特定的代码,他们得到汇总像1XX, 2xx我希望得到指标的特定代码,如200,301,302,404,我能找到的唯一方法是解析NGINX日志文件使用工具,如telegraf,但问题是默认情况下NGINX流日志使用STDOUT和STDERR,telegraf不能真正从流中捕获日志,并且将日志存储在容器上没有意义,因为它不会被fluent-bit提取。
我在同一个pod中运行NGINX和telegraf, K8s有shareProcessNamespace,允许访问同一个pod中的容器文件系统,但NGINX并没有真正写这些日志来文件它的流。
是否有任何方法我可以解析日志,也流日志到docker恶魔?
默认的NGINX流日志使用STDOUT和STDERR
所以你应该部署一个配置到access.log
或syslog
的NGiNX
,请记住telegraf NGiNX输入插件可能没有你需要的细节:
使用这个配置:
[[inputs.nginx]] ## An array of Nginx stub_status URI to gather stats. urls = ["http://localhost/status"]
./telegraf --config telegraf.conf --input-filter nginx --test
它产生:
* Plugin: nginx, Collection 1 > nginx,port=80,server=localhost >accepts=605i,active=2i,handled=605i,reading=0i,requests=12132i,waiting=1i,writ>ing=1i 1456690994701784331
(除非您与Prometheus一起配置了Metrics Collection)