5 个版本
0.1.10-75501d4 | 2020年2月22日 |
---|---|
0.1.9-bb1f021 | 2020年2月3日 |
0.1.7-35bfaa1 | 2020年2月1日 |
0.1.6-a180978 | 2020年1月5日 |
0.1.5-6e5ec74 | 2020年1月5日 |
2101 in 解析器实现
32KB
566 行
Fakelogs
Fakelogs 是一个随机日志生成器。它可以用于日志解析器的负载测试。
它是用 Rust 编写的,主要是一个为了熟悉语言而做的玩具项目。但是,它可能是有用的。自行承担风险使用。
状态
当前版本是 0.1.10。
安装
尚未设置安装目标,如果您希望,可以将 fakelogs
二进制文件复制到您的 $PATH
中,这样就完成了。
一些可能有用的命令
cargo build # build debug binary in ./target/debug/
cargo build --release # build release binary in ./target/release/
cargo test # launch tests
rustfmt src/*.rs # format code
./docker-build.sh # build Docker image with version tag
./bump-version.sh # bump minor version number
用法
只需启动
cargo run
或者直接运行二进制文件
./target/debug/fakelogs
./target/release/fakelogs
或者使用 docker
docker run ufoot/fakelogs
传递选项
cargo run -- --csv -100
默认情况下,生成的行遵循 Apache 常见行格式,因此看起来像
127.0.0.1 - james [09/May/2018:16:00:39 +0000] "GET /report HTTP/1.0" 200 123
127.0.0.1 - jill [09/May/2018:16:00:41 +0000] "GET /api/user HTTP/1.0" 200 234
127.0.0.1 - frank [09/May/2018:16:00:42 +0000] "POST /api/user HTTP/1.0" 200 34
127.0.0.1 - mary [09/May/2018:16:00:42 +0000] "POST /api/user HTTP/1.0" 503 12
有一个 -c
或 --csv
选项,如果您调用 fakelogs -c
,您将获得一个替代的自定义 CSV 格式
"10.0.0.4","-","apache",1549573860,"GET /api/user HTTP/1.0",200,1234
如果您在破折号后传递一个整数,它定义了每秒的行平均数。默认值为 1000。最大值为 1000000。例如,要将输出更改为每秒 10000 行
fakelogs -10000
其他标准选项包括
-h
,--help
:显示简短的帮助。-v
,--version
:显示版本。--no-high-card
:禁用高基数,随机 4 个字母部分被替换为xxxx
--no-time-skew
:禁用时间偏移,所有日志平均看起来就像现在,而不是 30 分钟前。--no-time-jitter
:禁用时间抖动,所有日志具有严格的递增时间。--no-header
:跳过标题行--no-junk
:无随机垃圾行--no-burst
:无随机突发行为,允许以恒定速率输出
日志内容
日志可能看起来是随机的,但遵循一些模式
- IP地址从固定有限列表中选择
- 用户从固定有限列表中选择
- HTTP状态码按照以下方式分配
- 2XX的50%
- 3XX的25%
- 4XX的20%
- 5XX的5%
- 请求方法按照以下方式分配
- 60%的GET请求
- 20%的POST请求
- 20%的HEAD请求
- URL的形式为
/section/XXXX-file.ext
或/XXXX/file.txt
,其中XXXX
是完全随机的,section可以是yolo
的50%(例如:/yolo/wE5d-index.html
)foo/bar
的15%bar/foo
的15%- "无section"的15%(所以URL的形式为
/w3QL/secret.txt
) pizzapino
的5%
- 大小在100字节和19,9k之间均匀分布(平均为10k)。
- 通常,时间戳生成以匹配生成时间,减去30分钟,所以日志平均看起来是从半小时前开始的。
- 但是... 10%的时间时间戳被向前或向后移动最多2分钟,平均为1分钟。这意味着时间戳不是递增的,顺序不被尊重。
- 每5秒,速率可能会改变,可以是每秒一行(慢速输出)或每秒2500行(快速输出)。这个比例是
- 40%的快速输出
- 60%的慢速输出
- 平均而言(包括慢速输出),吞吐量应该略高于每秒1000行。
- 当默认输出从每秒1000行更改时,上述所有数字都会按比例缩放,但慢速输出始终为每秒一行。
- 每1000次中就有一次会出现一个包含
请注意,这是一个漏洞!
的无效行。
许可证
Fakelogs根据MIT许可证授权。
依赖关系
约1.5MB
约28K SLoC