Sentinel流控日志与索引
前言
Sentinel是如何记录流控日志的,以及日志和索引的格式是怎么样的。本文将对此做个梳理。
一、流控日志记录
1.日志频率
流控日志每秒记录一次。
SCHEDULER.scheduleAtFixedRate(new MetricTimerListener(), 0, 1, TimeUnit.SECONDS);
2.日志格式
说明
时间戳 |
例如:1598276503000 |
---|---|
格式化的日期 |
例如:2020-08-24 21:41:43 |
resource名称 |
例如:Get:/hello |
passQps |
通过的Qps,即:在获取令牌(entry)统计的Qps |
blockQps |
阻塞的Qps,即:在抛出BlockException时统计的Qps |
successQps |
成功的QPS,即:在释放令牌(entry)后统计的Qps |
exceptionQps |
异常的Qps,即:抛出非BlockException的Qps |
rt |
从获取令牌(entry)到释放的响应时间 |
occupiedPassQps |
本时间窗口容量已满,占用未来时间窗口的Qps,默认为false不开启 |
concurrency |
并发度,未使用 |
classification |
resource类型0:common,1:common_web,2:common_rpc,3:common_api_gateway,4:common_db_sql |
3.日志说明
日志目录 |
默认日志目录为:user.home/logs/csp,可以通过csp.sentinel.log.dir参数设置 |
---|---|
日志名称 |
appName-metrics.log.yyyy-MM-dd.n,可以通过csp.sentinel.app.name指定每创建一个日志文件n会递增,可以通过logNameUsePid将pid加入到日志文件名中,默认false。例如:com-alibaba-csp-sentinel-dashboard-DashboardApplication-metrics.log.2020-08-25.5 |
日志大小 |
默认50M,可以通过csp.sentinel.metric.file.single.size设置 |
日志数量 |
默认最多6个文件,可以通过csp.sentinel.metric.file.total.count设置 |
4.索引格式
日志的索引由8位的时间戳和8位的日志位点构成。
时间戳 |
例如:1598276503000 |
---|---|
日志位点 |
记录了该时间对应日志文件中所在的位置 |
索引名称 |
日志文件名称.idx例如:com-alibaba-csp-sentinel-dashboard-DashboardApplication-metrics.log.2020-08-25.5.idx |
二、日志检索
API说明
List<MetricNode> find(long beginTimeMs, int recommendLines) |
---|
根据开始时间,检索流控日志,条数为recommendLines |
findByTimeAndResource(long beginTimeMs, long endTimeMs, String identity) |
---|
根据开始时间和结束时间检索流控日志,identify为资源名称为null时则不区分资源 |
- 上传文件的陷阱
- BZOJ4872: [Shoi2017]分手是祝愿
- JSONP挖掘与高级利用
- CTF---隐写术入门第二题 小苹果
- 隐含层权重参数的初始化方式的对比实验
- BZOJ4868: [Shoi2017]期末考试
- namespace用法
- 全站缓存时代
- 洛谷P1962 斐波那契数列(矩阵快速幂)
- 负载均衡https转发会让服务器误判
- 凯撒加密之一个神奇的Python的API
- 10分钟搞懂TensorBoard用法
- 【最新TensorFlow1.4.0教程02】利用Eager Execution 自定义操作和梯度 (可在 GPU 运行)
- 清北集训Day1T3 LYK loves jumping(期望DP)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用python爬取前程无忧网,看看我们是否真的“前程无忧”?
- 超硬核的 Python 数据可视化教程!
- Spark Core项目实战 | Top10 热门品类
- Spark Core项目实战 | 页面单跳转化率统计
- Chrome DevTools 全攻略!助力高效开发
- 终于有人把 Docker 讲清楚了,别再说不会 Docker 了!
- 如何在ggplot2图形上添加显著性差异注释?
- 动态曲线图(linechart)--Matplotlib绘制
- 分布式事务、分布式锁、分布式session
- Redis为什么变慢了?常见延迟问题定位与分析
- PyTorch Trick集锦
- client-go 之 Indexer 的理解
- 你的登录接口真的安全吗?
- Python,你真的会使用 staticmethod 和 classmethod 吗?
- GitLabCI/CD自动集成和部署到远程服务器