0

我正在使用这个模块https://github.com/Lax/ngx_http_accounting_module来计算 nginx 请求计数和字节输出

我可以看到 bytes_out 在代码中使用并且工作正常。

代码片段:ngx_http_accounting_handler(ngx_http_request_t *r){ .. stats->bytes_out += r->connection->sent; }

但是如何计算bytes_in?任何线索?我检查了 ngx_http_request_s & ngx_connection_s 有“发送”数据但没有接收数据。任何建议都会非常有帮助

谢谢

4

2 回答 2

1

使用 r->request_length,就像在 nginx 核心中为$request_length日志模块变量所做的那样。

于 2012-09-06T08:04:18.517 回答
0

我已经更新ngx_http_accounting_module,添加bytes_in support

的原始版本(v0.1)ngx_http_accounting_module没有实现bytes_in

在 v0.2 中,此值被添加到 stats 变量中。

     stats->nr_requests += 1;
+    stats->bytes_in += r->request_length;
     stats->bytes_out += r->connection->sent;

输出格式更改为以下代码,添加bytes_in:到输出缓冲区。

-    sprintf(output_buffer, "pid:%i|from:%ld|to:%ld|accounting_id:%s|requests:%ld|bytes_out:%ld",
+    sprintf(output_buffer, "pid:%i|from:%ld|to:%ld|accounting_id:%s|requests:%ld|bytes_in:%ld|bytes_out:%ld",
                 ngx_getpid(),
                 ngx_http_accounting_old_time,
                 ngx_http_accounting_new_time,
                 name,
                 stats->nr_requests,
+                stats->bytes_in,
                 stats->bytes_out
             );

有关更多详细信息,请参见此处:https ://github.com/Lax/ngx_http_accounting_module/tree/v0.2 。

谢谢马克西姆杜宁!

于 2014-05-14T11:09:40.280 回答