【小技巧】压测过程中,直接把日志打到 VictoriaLogs 中
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
我在压测过程中发现了很多程序错误,然而日志又滚太快了;输出到文件也很难分析。于是我用如下方法,把程序输出的 json 日志导入到 VictoriaLogs,便于事后做分析。
我的测试运行在一台安装了 docker 的 linux 机器上。
启动 VictoriaLogs
mkdir -p /home/ahfu/VictoriaLogsData/
docker run -d --rm --name victorialogs \
--network="host" \
--cpuset-cpus="4,5,6,7" \
-m 2048m \
-v /home/ahfu/VictoriaLogsData/:/data/ \
-e GOMAXPROCS=4 \
victoriametrics/victoria-logs:latest \
-storageDataPath=/data/ \
-inmemoryDataFlushInterval=30s \
-memory.allowedPercent=80 \
-retentionPeriod=3d
配置 vector 日志采集器
准备 vector 对应的配置文件: vector.toml
# vector.toml
# 1) Source: 从标准输入读取(你把别的进程 stdout pipe 进来)
# 例: your_app 2>&1 | vector -c vector.toml
[sources.stdin]
type = "stdin"
# 可选:指定编码/行分隔等(一般不需要)
# encoding.charset = "utf-8"
# 2) Transform: 把整行内容放到 .message(可选,但很常用)
[transforms.parse]
type = "remap"
inputs = ["stdin"]
source = '''
log_json,err = parse_json(.message)
if err != null {
abort
}
. = log_json
if !exists(.Message) {
.Message = " "
}
'''
[sinks.jsonline_http]
type = "http"
inputs = ["parse"]
uri = "http://127.0.0.1:9428/insert/jsonline?_time_field=Timestamp&_msg_field=Properties.Message&_stream_fields=Level&ignore_fields=&decolorize_fields=&AccountID=0&ProjectID=0&debug=false&extra_fields="
method = "post"
encoding.codec = "json"
request.retry_attempts = 0
request.compression = "zstd"
framing.method = "newline_delimited"
测试一下:
echo '{"Timestamp":"2024-05-28T10:00:00Z","Level":"INFO","Message":"This is a test log message."}' | docker run --rm -i \
--network="host" \
--cpuset-cpus="3" \
-m 512m \
-v "./vector.toml:/etc/vector/vector.toml:ro" \
-e VECTOR_LOG=debug \
timberio/vector:latest-alpine \
-c /etc/vector/vector.toml
浏览器进入:http://192.168.0.xxx:9428/select/vmui/, 桌面上连接到 linux 机器的对应端口,就可以通过 vmui 来查询日志了。
启动业务进程
run-with-log:
dotnet run --project MyAPI/My.API.csproj 2>&1 | \
docker run --rm -i \
--network="host" \
--cpuset-cpus="3" \
-m 512m \
-v "./test/log/vector.toml:/etc/vector/vector.toml:ro" \
timberio/vector:latest-alpine \
-c /etc/vector/vector.toml
执行 make run-with-log 即可启动推送日志的方式来运行测试程序。
Have Fun. 😃

浙公网安备 33010602011771号