我已经使用存根状态模块编译了Nginx,我希望数据由Logstash处理并发送到ElasticSearch。我正在使用Logstash http_poller模块每10秒获取一次状态。
见http://nginx.org/en/docs/http/ngx_http_stub_status_module.html。这是从Nginx存根状态模块检索时的数据:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
如何将数据解析为便于ElasticSearch的格式?我一直在尝试多线过滤器和一些grok模式,但到目前为止没有任何成功。
答案 0 :(得分:0)
存根状态的输出与nginx_status(也可能是apache)相同。
我也收集了弹性搜索的这些信息,但我使用了collectd。您也可以使用collectd,或者查看代码附带的nginx插件以及它们如何解析它。
如果您想使用collectd,我建议:通过apt-get获取它或从collectd.org下载源代码以获取最新版本。 (你需要4.2或更高)
vi /etc/collectd/collectd.conf
确保取消注释LoadPlugin nginx 添加或编辑以下行。
<Plugin nginx>
URL "http://status.yourhost.com/stub_status"
</Plugin>
然后你需要将数据记录到logstash;
这里都解释了这一点。
https://www.elastic.co/guide/en/logstash/current/plugins-codecs-collectd.html
我相信插件的来源是:
https://github.com/collectd/collectd/blob/463fb2d44339625aae269e07f2773ee4f158faa8/src/nginx.c
答案 1 :(得分:0)
对于任何感兴趣的人:我找到了这个模块,这让它变得更容易! https://github.com/lindsayevans/nginx-json-status-module