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