nginx监控模块部分功能开发

2016/04/06 nginx 共 1315 字,约 4 分钟

nginx监控模块部分功能开发

监控系统的开发是linux后台系统的必备技术,应用于接入控制层,CDN节点,微服务架构系统。本文介绍Nginx监控系统开发的部分功能。实现如下功能:

(1)请求次数统计;

(2)响应状态次数统计;

(3)请求和响应报文的流量统计;

这里只是粗略实现功能,需要根据实际需求,添加时间维度进行统计,并进行测试调优;同时结合前端开发将统计信息以各种方式呈现。另外还可扩充proxy_pass,proxy_cache以及redis_pass内存缓存的流量统计。

Ngx_lua(Openresty)开发可以提高开发效率,并通过reload时,实现无缝更新,之前的数据不丢失;Nginx C Module运行效率更高,采用Nginx C开发,能够更好驾驭Nginx,掌握Nginx的精髓。

Ngx_lua实现

充分利用ngx_lua的API进行开发。并通过shared_dict进行共享。

(1)在http{}段配置共享内存traffic_data

lua_shared_dict traffic_data 10m;

(2)在server{}段配置log_ly_lua_file

(3)在location /mytraffic_ua配置 content_by_lua_file

   log_by_lua_file /usr/local/nginx/lua/traffic/get_traffic_info.lua;

   location /mytraffic_lua {

       default_type "text/html";

       content_by_lua_file /usr/local/nginx/lua/traffic/show_traffic_info.lua;

   }

【注】详见gitHub。

Nginx C Module实现

开发Nginx C 模块ngx_http_traffic_status_module。详见gitHub。

nginx.conf配置如下:

   location /mytraffic {

       traffic_statistics request_times packet_bytes status_codes;

   }

 

   location /mytraffic1 {

       traffic_statistics request_times;

   }

 

   location /mytraffic2 {

       traffic_statistics packet_bytes;

   }

 

   location /mytraffic3 {

       traffic_statistics status_codes;

   }

运行示例如下:

root@ubuntu:/usr/local/nginx/sbin# curl -k http://192.168.137.134:8080/mytraffic

http request times: 5

recevie packet bytes: 467

send packet bytes: 1423

—- http status —-


200: 4

404: 1


提交代码到gitHub

参考资料

文档信息

Search

    Table of Contents