通过nginx + lua来统计nginx上的监控网络请求和性能
介绍
以前我们为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 result_dict 20M;
|
1
2
|
lua_shared_dict log_dict20M;
lua_shared_dict result_dict20M;
|
为特定的location添加统计
只需要添加一句即可~~
将lua脚本嵌套进nginx的配置中, 例如:
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;
}
}
|
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获取到字典里的所有结果
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;
}
}
|
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
通过nginx + lua来统计nginx上的监控网络请求和性能的更多相关文章
- Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...
- IOS开发之—— 在AFN基础上进行的网络请求的封装
网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...
- 寻找[nginx] 由Lua 粘合的Nginx生态环境-- agentzh
来自:linuxtone org Chnangelog: 120312 fixed as s/hhttp/http/g ,thanx muxueqz 12030 ...
- nginx+lua在我司的实践
导读:nginx是一个高性能的反向代理服务器,lua是一个小巧的脚本语言,这两个的巧妙结合会擦出怎样的火花呢. 关键词:nginx,lua,nginx+lua 前言 nginx,lua,nginx+l ...
- OpenResty(Nginx+Lua)开发入门
Nginx入门 本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: nginx启动.关闭.重启 http://www.cnblogs.com/derekchen/archi ...
- 高并发 Nginx+Lua OpenResty系列(3)——模块指令
Nginx Lua 模块指令 Nginx共11个处理阶段,而相应的处理阶段是可以做插入式处理,即可插拔式架构:另外指令可以在http.server.server if.location.locatio ...
- 通过ngx-lua来统计Nginx上的虚拟主机性能数据
Web server调研分析 Filed under: Web Server — cmpan @ 2012-10-29 20:38:34 摘要 简单可依赖的架构首先需要有一个简单可依赖的前端WebSe ...
- linux服务器上nginx日志访问量统计命令
linux服务器上nginx日志访问量统计命令 日志文件所在地方:/var/log/nginx/access_iqueendress.com.log/var/log/nginx/access_m.iq ...
- 基于nginx + lua实现的反向代理动态更新
大家都知道,nginx是当前应用非常广泛的web服务器,热度因为他的高并发高性能高可靠性,且轻量级!牛逼的不行,不多说这些. 今天要介绍的是,如何基于nginx和lua脚本,也就是在openresty ...
随机推荐
- [转载]java正则表达式
转载自:http://butter.iteye.com/blog/1189600 1.正则表达式的知识要点1.正则表达式是什么?正则表达式是一种可以用于模式匹配和替换的强有力的工具.2.正则表达式的优 ...
- Chrome浏览器插件开发-关于案例
前言 关于案例 下一章 版本更新提示案例 一.前言 上章我们提到过开发一个插件所需要的步骤: Chrome浏览器插件开发-淘宝自动登录 并且还介绍了如何在页面上面注入脚本代码,并且成功的完成用户名和密 ...
- 第13课:HTML基础之DOM操作2
1. 1)d.innerHTML:标签中的所有内容 删除某个标签 a)可以直接修改innerHTML的值: b) 2)d.innerText:标签中的文本内容 3)input.value='aaa' ...
- VirtualBox只能生成32位虚拟机
/************************************************************************* * VirtualBox只能生成32位虚拟机 * ...
- java利用freemarker导出world
一.简单导出(不含循环导出) 1.新建一个word文件.如下图: 2.使用word将文件另存为xml的格式 3.编辑xml文件内容,将'用户名'替换成-> ${username}.'简介'替换成 ...
- CSS元素、边框、背景、列表样式
一.元素样式 1.width控制元素宽度 2.height控制元素宽度 3.padding控制元素内边距 内容与边框之间的距离 4.margin控制元素外边距 元素边框与其他元素边框之间的距离,如果两 ...
- iMac 10年
10年前,也就是1998年8月15号,Apple 推出了蓝色半透明的 iMac G3(指上市,发布时间为当年5月6号),当年销售200万台,从此开启了它的一个时代,人们一旦说起设计,那么 Apple ...
- [Luogu4899][IOI2018] werewolf 狼人
luogu sol \(\mbox{IOI2018}\)的出题人有没有看过\(\mbox{NOI2018}\)的题目呀... \(\mbox{Kruskal}\)重构树+二维数点. 题目相当于是问你从 ...
- IT项目管理工具总结
IT项目管理工具总结 俗话说"工欲善其事必先利其器",在一个项目开发流程中,如果搭配一个比较完善的项目管理工具,必将取得事半功倍的效果.本文搜集了目前项目管理界比较有规模的管理工具 ...
- C#多线程应用:子线程更新主窗体控件的值(二)
在上篇文章中,我已经给大家列了一个在主线程中实现的方式,这篇文章来给大家说说使用Invoke的方式的例子: 对于不代理不太熟悉的朋友,建议先查查相关资料: 例子一: 在C#中,直接在子线程中对窗体上的 ...