mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
4478e48eb6
This can be done via extra_fields query arg or via VL-Extra-Fields HTTP header. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/7354#issuecomment-2448671445
83 lines
2.8 KiB
Go
83 lines
2.8 KiB
Go
package logstorage
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func BenchmarkLogRowsMustAdd(b *testing.B) {
|
|
rows := newBenchRows(map[string]string{
|
|
"input.type": "filestream",
|
|
"ecs.version": "8.0.0",
|
|
"host.hostname": "foobar-baz-abc",
|
|
"host.architecture": "x86_64",
|
|
"host.name": "foobar-baz-abc",
|
|
"host.os.codename": "bionic",
|
|
"host.os.type": "linux",
|
|
"host.os.platform": "ubuntu",
|
|
"host.os.version": "18.04.6 LTS (Bionic Beaver)",
|
|
"host.os.family": "debian",
|
|
"host.os.name": "Ubuntu",
|
|
"host.os.kernel": "4.15.0-211-generic",
|
|
"host.id": "a634d50249af449dbcb3ce724822568a",
|
|
"host.containerized": "false",
|
|
"host.ip": `["10.0.0.42","10.224.112.1","172.20.0.1","172.18.0.1","172.19.0.1","fc00:f853:ccd:e793::1","fe80::1","172.21.0.1","172.17.0.1"]`,
|
|
"host.mac": `["02-42-42-90-52-D9","02-42-C6-48-A6-84","02-42-FD-91-7E-17","52-54-00-F5-13-E7","54-E1-AD-89-1A-4C","F8-34-41-3C-C0-85"]`,
|
|
"agent.ephemeral_id": "6c251f67-7210-4cef-8f72-a9546cbb48cc",
|
|
"agent.id": "e97243c5-5ef3-4dc1-8828-504f68731e87",
|
|
"agent.name": "foobar-baz-abc",
|
|
"agent.type": "filebeat",
|
|
"agent.version": "8.8.0",
|
|
"log.file.path": "/var/log/auth.log",
|
|
"log.offset": "37908",
|
|
}, []string{
|
|
"Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=0)",
|
|
"Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=1)",
|
|
"Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=2)",
|
|
"Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=3)",
|
|
"Jun 4 20:34:07 foobar-baz-abc sudo: pam_unix(sudo:session): session opened for user root by (uid=4)",
|
|
})
|
|
streamFields := []string{
|
|
"host.hostname",
|
|
"agent.name",
|
|
"log.file.path",
|
|
}
|
|
|
|
b.ReportAllocs()
|
|
b.SetBytes(int64(len(rows)))
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
for pb.Next() {
|
|
benchmarkLogRowsMustAdd(rows, streamFields)
|
|
}
|
|
})
|
|
}
|
|
|
|
func benchmarkLogRowsMustAdd(rows [][]Field, streamFields []string) {
|
|
lr := GetLogRows(streamFields, nil, nil, "")
|
|
var tid TenantID
|
|
for i, fields := range rows {
|
|
tid.AccountID = uint32(i)
|
|
tid.ProjectID = uint32(2 * i)
|
|
timestamp := int64(i) * 1000
|
|
lr.MustAdd(tid, timestamp, fields)
|
|
}
|
|
PutLogRows(lr)
|
|
}
|
|
|
|
func newBenchRows(constFields map[string]string, messages []string) [][]Field {
|
|
rows := make([][]Field, 0, len(messages))
|
|
for _, msg := range messages {
|
|
row := make([]Field, 0, len(constFields)+1)
|
|
for k, v := range constFields {
|
|
row = append(row, Field{
|
|
Name: k,
|
|
Value: v,
|
|
})
|
|
}
|
|
row = append(row, Field{
|
|
Name: "_msg",
|
|
Value: msg,
|
|
})
|
|
rows = append(rows, row)
|
|
}
|
|
return rows
|
|
}
|