介紹
以前我們為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的初始化, 類似如下
1
2
|
lua_shared_dict
log_dict
20M
;
lua_shared_dict
result_dict
20M
;
|
為特定的location添加統計
只需要添加一句即可~~
將lua腳本嵌套進nginx的配置中, 例如:
1
2
3
4
5
6
7
8
9
10
11
12
|
server
{
listen
8080
;
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_header
X
-
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
{
listen
8080
default
;
server_name
_
;
location
/
{
return
404
;
}
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