#负载测试 #日志解析器 # #随机 #生成器 # #

bin+lib fakelogs

fakelogs 是一个随机日志生成器。它可以用于日志解析器的负载测试。

5 个版本

0.1.10-75501d42020年2月22日
0.1.9-bb1f0212020年2月3日
0.1.7-35bfaa12020年2月1日
0.1.6-a1809782020年1月5日
0.1.5-6e5ec742020年1月5日

2101 in 解析器实现

MIT 许可证

32KB
566

Fakelogs

Fakelogs 是一个随机日志生成器。它可以用于日志解析器的负载测试。

它是用 Rust 编写的,主要是一个为了熟悉语言而做的玩具项目。但是,它可能是有用的。自行承担风险使用。

Fakelogs icon

状态

Build Status

当前版本是 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