介绍
以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力.
项目主页: https://github.com/skyeydemon/ngx-lua-stats
功能
- 支持分不同虚拟主机统计, 同一个虚拟主机下可以分不同的location统计.
- 可以统计与query-times request-time status-code speed 相关的数据.
环境依赖
- nginx + ngx_http_lua_module
安装
http://wiki.nginx.org/HttpLuaModule#Installation
使用方法
添加全局字典
在nginx的配置中添加dict的初始化, 类似如下
|
lua_shared_dict log_dict20M;
lua_shared_dict result_dict20M;
|
为特定的location添加统计
只需要添加一句即可~~
将lua脚本嵌套进nginx的配置中, 例如:
1
2
3
4
5
6
7
8
9
10
11
12
|
server{
listen8080;
server_name weatherapi.market.xiaomi.com;
access_log/home/work/nginx/logs/weatherapi.market.xiaomi.com.log milog;
location/{
proxy_set_header Host$host;
proxy_set_headerX-Forwarded-For$remote_addr;
proxy_pass http://weatherapi.market.xiaomi.com_backend;
log_by_lua_file./site-enable/record.lua;
}
}
|
输出结果
通过配置一个server, 使得可以通过curl获取到字典里的所有结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
server{
listen8080default;
server_name_;
location/{
return404;
}
location/status{
content_by_lua_file./site-enable/output.lua;
}
location/empty_dict{
content_by_lua_file./site-enable/empty_dict.lua;
}
}
|
可以通过如下命令获取
curl ip_addr:8080/status
清理字典
运行一段时间之后, 字典会变大. 可以通过如下接口清理
curl ip_addr:8080/empty_dict
支持的统计数据说明
目前支持统计以下数据,返回的原始数据类似于
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
--------------------------
key:weatherapi.market.xiaomi.com__upstream_time_10.0.3.32:8250_counter
0.375
key:weatherapi.market.xiaomi.com__upstream_time_10.0.3.32:8250_nb_counter
124
key:weatherapi.market.xiaomi.com__upstream_time_10.0.4.93:8250_counter
0.131
key:weatherapi.market.xiaomi.com__upstream_time_10.0.4.93:8250_nb_counter
123
key:weatherapi.market.xiaomi.com__upstream_time_10.20.12.49:8250_counter
0.081
key:weatherapi.market.xiaomi.com__upstream_time_10.20.12.49:8250_nb_counter
127
key:weatherapi.market.xiaomi.com__query_counter
500
key:weatherapi.market.xiaomi.com__request_time_counter
0.683
key:weatherapi.market.xiaomi.com__upstream_time_counter
0.683
key:weatherapi.market.xiaomi.com__upstream_time_10.20.12.59:8250_counter
0.096
key:weatherapi.market.xiaomi.com__upstream_time_10.20.12.59:8250_nb_counter
126
key:weatherapi.market.xiaomi.com__bytes_sent_counter
81500
|
其中 __ 用来分割虚拟主机(包含prefix)与后面的数据项,便于数据处理.
counter表示此值一直在累加
nb表示次数
可以得到的数据包括: query次数 request_time bytes_sent upstream_time
其中 upstream_time_10.20.12.49:8250_counter 表示到某个特定后端的upstrea_time耗时累加
upstream_time_10.20.12.49:8250_nb_counter 表示到到某个特定后端的upstrea_time次数累加
如何处理数据
因为采集到的数据大多都是counter值,需要监控系统支持对于delta的处理.目前我们公司的perf-counter监控系统支持简单运算。所以这个处理起来比较简单,对于没有这种系统的同学来说,需要自己处理数据,得到delta值以及更复杂的数据,比如:
转自http://noops.me/?p=867
分享到:
相关推荐
ngx-lua是Nginx的一个模块,它允许在Nginx服务器中直接执行Lua脚本,从而实现动态处理HTTP请求,提高服务器性能和灵活性。蓝绿部署是一种无中断的软件更新策略,它通过同时运行旧版本(当前正在服务的版本)和新版本...
lua-upstream-nginx-module, Nginx C 模块将Lua向ngx_lua公开,用于 Nginx upstreams 电子邮件名称ngx_http_lua_upstream - Nginx MODULE,用于向 Nginx upstreams公开Lua到 ngx_lua目录NAME状态概要说明函数get_...
OpenResty是基于Nginx和lua-nginx-module的高性能Web平台,提供了更完整的Lua扩展库和工具集,如lua-nginx-memcached-module、lua-resty-redis等。 5.2 LuaJIT优化 LuaJIT是Lua的一个高性能Just-In-Time编译器,能...
OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web ...
ngx_lua_module是一款强大的扩展模块,专为Nginx服务器设计,允许在Nginx配置文件中直接嵌入Lua脚本,极大地增强了Nginx的功能和灵活性。这个"ngx_lua_module-windows-1.1.2.0"是该模块的一个Windows版本,适应于...
Lua-nginx-module是Nginx服务器的一个扩展模块,它允许我们在Nginx配置文件中直接嵌入 Lua 脚本,极大地增强了Nginx的功能性和灵活性。这个"lua-nginx-module-master.zip"压缩包包含了该模块的源代码,是安装和...
lua-nginx-module-0.10.22.tar.gz # 0.10.16 以后都需要 lua-resty-core和lua-resty-lrucache lua-resty-core-0.1.24.tar.gz [lua-nginx-module依赖] lua-resty-lrucache-0.12.tar ngx_devel_kit-0.3.2.tar.gz nginx...
描述这个Lua库是ngx_lua nginx模块的Redis客户端驱动程序https://github.com/openresty/lua-nginx-module/#readme这个 Lua 库利用了 ngx_lua 的 cosocket API,确保了 100% 的非阻塞行为。请注意,至少需要ngx_lua ...
大多数代码是从 ngx-lua-module 复制而来的,并且指令/常量/APIs 计划与 ngx-lua 模块兼容。 感谢ngx-lua模块的出色工作。 使用 nginx-1.4.4 测试。 指令 服务器 听 so_keepalive tcp_nodelay 超时 解析器 ...
《Lua在Nginx中的应用:Lua-Nginx-Module 0.10.9rc7详解》 Lua-Nginx-Module是Nginx服务器中一个强大的扩展模块,允许我们在Nginx配置文件中直接嵌入Lua脚本,极大地提高了Nginx处理动态请求的能力。本文将详细探讨...
ngx-http-cas-client-lua警告,CAS集成功能正常,但是里程可能会有所不同...建造似乎是基于lua的nginx处理的事实上的标准,因此请使用它。 它内置了很多功能(无论如何都需要)(以及单独的模块,例如ssl支持)。 取决
OpenResty 是一个通过扩展 nginx 的快速 Web 应用服务器。 Nginx Openresty For Windows (NOW) 是带有 Openresty 的 Windows 版本中的 Nginx。 它有一些特点: 高性能 并发两万多个连接 多进程 支持共享内存 支持...
ngx_stream_lua_module-将Lua的功能嵌入到Nginx流/ TCP服务器中。 该模块是OpenResty的核心组件。 如果您使用的是此模块,则实际上是在使用OpenResty。 该模块不随Nginx源一起分发。 请参阅。 目录 代码库 错误和...
综上所述,"nginx-lua-prometheus-master.zip" 文件包含了一个利用 Lua 和 Prometheus 对 Nginx 进行监控的完整解决方案,涵盖了从数据采集、处理到可视化的整个流程,对于希望深入了解 Nginx 高级用法和监控实践的...
Lua语言以其轻量级、高效和强大的脚本能力,近年来在Web开发领域备受青睐,尤其是在Nginx服务器中,Lua与Nginx的结合使用,通过lua-nginx-module模块,实现了动态处理和扩展功能,极大地提升了Nginx的灵活性和可编程...
Lua-nginx-module,又称为ngx_lua,是一个极其重要的开源项目,它将强大的Lua脚本语言引入到Nginx服务器中,使得Nginx具备了更丰富的功能扩展能力。通过这个模块,我们可以利用Lua的简洁语法和高效性能来处理HTTP...
总的来说,ngx_lua 是一个强大的工具,它扩展了 Nginx 的功能,使得开发者可以用 Lua 这种简洁且高性能的语言来编写复杂的 Web 应用。通过深入学习 ngx_lua,开发者可以构建出更加高效、灵活的 Web 服务。在 Windows...
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=../lua-nginx-module-0.9.15 --add-module=../ngx_devel_kit-0.2.19 make -j4 make install echo '/usr/local/lib' >> /etc/...