java 监控redis api_使用redis实时统计API调用次数,通用,不管你是php,java,python还是其他语言都可以...

本文提供了一种通用的API调用次数监控解决方案,通过配置Redis和Nginx动态限流模块,实现对不同语言应用的API调用统计。无需开发人员额外工作,支持邮件通知,并对内存占用进行了说明。
摘要由CSDN通过智能技术生成

关于统计API调用次数,一直都没有比较通用的方案,那么今天我来给一个解决方案,从应用层解决,不需要开发人员去做(即使去做也不一定比这个好,别觉得哥狂妄).好了也不屁话这么多,开正题了.

0x1

cd redis-4.0**version**/deps/hiredis

make

make install

git clone https://github.com/limithit/ngx_dynamic_limit_req_module.git

cd ngx_dynamic_limit_req_module

git checkout limithit-API_alerts

./configure --add-module=/path/to/this/ngx_dynamic_limit_req_module

make

make install

配置参考:

worker_processes 2;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

dynamic_limit_req_zone $binary_remote_addr zone=one:10m rate=100r/s redis=127.0.0.1 block_second=300;

server {

listen 80;

server_name localhost;

location / {

if ($document_uri ~* "index.html"){

dynamic_limit_req zone=one burst=100 nodelay;

dynamic_limit_req_status 403;

}

if ($document_uri ~* "about.html"){

dynamic_limit_req zone=one burst=30 nodelay mail_to=123@qq.com api_max=20; #mail_to是要通知邮箱 api_max是当请求达到20次以上就发邮件通知5分钟内只发一次

dynamic_limit_req_status 405;

}

root html;

index index.html index.htm;

}

error_page 403 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

其实邮箱是选填的,不需要通知的话就不用填,如果需要全局记录的话,不需要加筛选条件document_uri

server {

listen 80;

server_name localhost;

location / {

dynamic_limit_req zone=one burst=100 nodelay;

dynamic_limit_req_status 403;

root html;

index index.html index.htm;

}

error_page 403 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

0x2

会按天记录每天PV,UV,AllCount是每个域名的全部请求以及每个页面的请求次数,这取决于你的筛选条件

772db6447a5d3b12866d8a59108096a0.png

0x3

大概有人会问redis能存多少个key呢又会占用多少内存呢,根据官方的描述是100万个key 大概85MB的内存

Redis最多可以处理2 ^32键,并且在实践中经过测试,每个实例至少处理2.5亿个键。

每个哈希,列表,集和排序集可以容纳2 ^32个元素。

换句话说,您的限制可能是系统中的可用内存。

所以不必但心数据日渐增多的困扰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值