3 个版本
0.1.3 | 2024 年 3 月 28 日 |
---|---|
0.1.1 | 2024 年 3 月 21 日 |
0.1.0 | 2024 年 3 月 21 日 |
795 在 命令行工具 中排名
每月 98 次下载
46KB
387 行
cold-stat
A CLI 工具,用于静态分析 AWS Lambda 函数的初始化时间,即冷启动。
先决条件
- 需要 Rust 工具链来安装此工具
- 需要 AWS 凭证来访问 AWS
- 以下操作必须在 IAM 策略中授权
lambda:GetFunctionConfiguration
以获取函数当前环境变量Lambda.UpdateFunctionConfiguration
更新函数环境变量,强制冷启动lambda:InvokeFunction
调用函数logs:StartQuery
查询 CloudWatch 日志以进行冷启动分析
安装
cargo install cold-stat
用法
cold-stat [OPTIONS] --function <FUNCTION> --payload <PAYLOAD>
# Example
cold-stat --verbose --function=YOUR-FUNC-NAME --iterations=300 \
--payload='{"foo": "bar"}'
选项
-f
,--function <FUNCTION>
- 要调用的函数名称或 ARN
-p
,--payload <PAYLOAD>
- 要发送到函数的 JSON 负载
--log-group-name<LOG_GROUP_NAME>
- 要分析的 CloudWatch 日志组名称
- [默认:
/aws/lambda/FUNCTION
]
--log-stream-filter<LOG_STREAM_FILTER>
- 用于过滤 CloudWatch 日志组流的正则表达式。当多个函数共享日志组时很有用
- [示例:
/YOUR-FUNCTION-NAME/
] 当日志流命名如2021/01/01/YOUR-FUNCTION-NAME[$LATEST]
-i
,--iterations <ITERATIONS>
- 调用函数的迭代次数
- 建议至少设置
30
。因为收集到的冷启动数量通常略短于指定的ITERATIONS
,这是由于 CloudWatch 日志的最终一致性导致的 - [默认:
100
]
-v
,--verbose
- 启用时打印调试日志
-h
,--help
- 打印帮助
-V
,--version
- 打印版本
结果
mem
- 函数的内存大小
count
- 收集到的冷启动次数
stddev
,min
,max
- 冷启动时间的标准差、最小值和最大值
p50
,p90
,p95
,p99
,p995
,p999
- 冷启动时间的分位数
- 例如,
p50
是50分位数,也称为中位数 p995
和p999
分别是99.5和99.9分位数
开发
构建
git clone https://github.com/exoego/cold-stat
cd cold-stat
cargo build
运行
cargo run -- \
--function=YOUR-FUNC-NAME \
--iterations=10 \
--verbose \
--payload='{"foo": "bar"}'
致谢
- 此工具高度受lumigo-io/SAR-measure-cold-start的启发
依赖项
~26–40MB
~566K SLoC