Skip to content

Commit cf07ae6

Browse files
committed
Use maps instead of arrays for custom fields
We are now using maps instead of arrays to store the custom fields in ClickHouse.
1 parent 9d69e84 commit cf07ae6

File tree

18 files changed

+795
-408
lines changed

18 files changed

+795
-408
lines changed

README.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,8 @@ CREATE TABLE IF NOT EXISTS logs.logs_local ON CLUSTER `{cluster}`
2727
`pod_name` LowCardinality(String),
2828
`container_name` LowCardinality(String),
2929
`host` LowCardinality(String),
30-
`fields_string.key` Array(LowCardinality(String)),
31-
`fields_string.value` Array(String) CODEC(ZSTD(1)),
32-
`fields_number.key` Array(LowCardinality(String)),
33-
`fields_number.value` Array(Float64),
30+
`fields_string` Map(LowCardinality(String), String),
31+
`fields_number` Map(LowCardinality(String), Float64),
3432
`log` String CODEC(ZSTD(1))
3533
)
3634
ENGINE = ReplicatedMergeTree

cluster/clickhouse-operator/clickhouse-operator.yaml

+614-295
Large diffs are not rendered by default.

cluster/clickhouse/clickhouse.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,4 @@ spec:
6262
- name: dockerhub-registry
6363
containers:
6464
- name: clickhouse
65-
image: yandex/clickhouse-server:21.12.3.32
65+
image: clickhouse/clickhouse-server:22.8.1.2097

cluster/clickhouse/zookeeper-pdb.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
# Setup max number of unavailable pods in StatefulSet
3-
apiVersion: policy/v1beta1
3+
apiVersion: policy/v1
44
kind: PodDisruptionBudget
55
metadata:
66
name: zookeeper

cluster/cluster.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ containerdConfigPatches:
2424
endpoint = ["http://${reg_name}:${reg_port}"]
2525
nodes:
2626
- role: control-plane
27-
image: kindest/node:v1.20.7
27+
image: kindest/node:v1.25.2
2828
EOF
2929

3030
# connect the registry to the cluster network

cluster/fluent-bit/ingester/fluent-bit-ds.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ spec:
1818
serviceAccountName: fluent-bit
1919
serviceAccount: fluent-bit
2020
containers:
21-
- image: fluent/fluent-bit:1.9.1
21+
- image: fluent/fluent-bit:1.9.9
2222
imagePullPolicy: IfNotPresent
2323
name: fluent-bit
2424
ports:

cluster/fluent-bit/plugin/fluent-bit-cm.yaml

-2
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ data:
5757
Database logs
5858
Username admin
5959
Password admin
60-
Write_Timeout 20
61-
Read_Timeout 10
6260
Async_Insert true
6361
Wait_For_Async_Insert true
6462
Batch_Size 1000

cmd/ingester/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.17.3-alpine3.14 as build
1+
FROM golang:1.19.2-alpine3.16 as build
22
RUN apk update && apk add git make
33
WORKDIR /ingester
44
COPY go.mod go.sum ./

cmd/ingester/README.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ An example Deployment for the ClickHouse ingester can be found in the [ingester.
1414
| `--clickhouse.database` | `CLICKHOUSE_DATABASE` | ClickHouse database name. | `logs` |
1515
| `--clickhouse.username` | `CLICKHOUSE_USERNAME` | ClickHouse username for the connection. | |
1616
| `--clickhouse.password` | `CLICKHOUSE_PASSWORD` | ClickHouse password for the connection. | |
17-
| `--clickhouse.write-timeout` | `CLICKHOUSE_WRITE_TIMEOUT` | ClickHouse write timeout for the connection. | `10` |
18-
| `--clickhouse.read-timeout` | `CLICKHOUSE_READ_TIMEOUT` | ClickHouse read timeout for the connection. | `10` |
17+
| `--clickhouse.dial-timeout` | `CLICKHOUSE_DIAL_TIMEOUT` | ClickHouse dial timeout. | `10s` |
18+
| `--clickhouse.conn-max-lifetime` | `CLICKHOUSE_CONN_MAX_LIFETIME` | ClickHouse maximum connection lifetime. | `1h` |
19+
| `--clickhouse.max-idle-conns` | `CLICKHOUSE_MAX_IDLE_CONNS` | ClickHouse maximum number of idle connections. | `5` |
20+
| `--clickhouse.max-open-conns` | `CLICKHOUSE_MAX_OPEN_CONNS` | ClickHouse maximum number of open connections. | `10` |
1921
| `--clickhouse.async-insert` | `CLICKHOUSE_ASYNC_INSERT` | Enable async inserts. | `false` |
2022
| `--clickhouse.wait-for-async-insert` | `CLICKHOUSE_WAIT_FOR_ASYNC_INSERT` | Wait for async inserts. | `false` |
2123
| `--clickhouse.batch-size` | `CLICKHOUSE_BATCH_SIZE` | The size for how many log lines should be buffered, before they are written to ClickHouse. | `100000` |

cmd/ingester/main.go

+35-13
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ var (
2525
clickhouseUsername string
2626
clickhousePassword string
2727
clickhouseDatabase string
28-
clickhouseWriteTimeout string
29-
clickhouseReadTimeout string
28+
clickhouseDialTimeout string
29+
clickhouseConnMaxLifetime string
30+
clickhouseMaxIdleConns int
31+
clickhouseMaxOpenConns int
3032
clickhouseAsyncInsert bool
3133
clickhouseWaitForAsyncInsert bool
3234
clickhouseBatchSize int64
@@ -65,14 +67,32 @@ func init() {
6567
defaultClickHouseDatabase = os.Getenv("CLICKHOUSE_DATABASE")
6668
}
6769

68-
defaultClickHouseWriteTimeout := "10"
69-
if os.Getenv("CLICKHOUSE_WRITE_TIMEOUT") != "" {
70-
defaultClickHouseWriteTimeout = os.Getenv("CLICKHOUSE_WRITE_TIMEOUT")
70+
defaultClickHouseDialTimeout := "10s"
71+
if os.Getenv("CLICKHOUSE_DIAL_TIMEOUT") != "" {
72+
defaultClickHouseDialTimeout = os.Getenv("CLICKHOUSE_DIAL_TIMEOUT")
7173
}
7274

73-
defaultClickHouseReadTimeout := "10"
74-
if os.Getenv("CLICKHOUSE_READ_TIMEOUT") != "" {
75-
defaultClickHouseReadTimeout = os.Getenv("CLICKHOUSE_READ_TIMEOUT")
75+
defaultClickHouseConnMaxLifetime := "1h"
76+
if os.Getenv("CLICKHOUSE_CONN_MAX_LIFETIME") != "" {
77+
defaultClickHouseConnMaxLifetime = os.Getenv("CLICKHOUSE_CONN_MAX_LIFETIME")
78+
}
79+
80+
defaultClickHouseMaxIdleConns := 5
81+
if os.Getenv("CLICKHOUSE_MAX_IDLE_CONNS") != "" {
82+
defaultClickHouseMaxIdleConnsString := os.Getenv("CLICKHOUSE_MAX_IDLE_CONNS")
83+
defaultClickHouseMaxIdleConnsParsed, err := strconv.Atoi(defaultClickHouseMaxIdleConnsString)
84+
if err == nil && defaultClickHouseMaxIdleConnsParsed > 0 {
85+
defaultClickHouseMaxIdleConns = defaultClickHouseMaxIdleConnsParsed
86+
}
87+
}
88+
89+
defaultClickHouseMaxOpenConns := 10
90+
if os.Getenv("CLICKHOUSE_MAX_OPEN_CONNS") != "" {
91+
defaultClickHouseMaxOpenConnsString := os.Getenv("CLICKHOUSE_MAX_OPEN_CONNS")
92+
defaultClickHouseMaxOpenConnsParsed, err := strconv.Atoi(defaultClickHouseMaxOpenConnsString)
93+
if err == nil && defaultClickHouseMaxOpenConnsParsed > 0 {
94+
defaultClickHouseMaxOpenConns = defaultClickHouseMaxOpenConnsParsed
95+
}
7696
}
7797

7898
defaultClickHouseAsyncInsert := false
@@ -156,8 +176,10 @@ func init() {
156176
flag.StringVar(&clickhouseUsername, "clickhouse.username", defaultClickHouseUsername, "ClickHouse username for the connection.")
157177
flag.StringVar(&clickhousePassword, "clickhouse.password", defaultClickHousePassword, "ClickHouse password for the connection.")
158178
flag.StringVar(&clickhouseDatabase, "clickhouse.database", defaultClickHouseDatabase, "ClickHouse database name.")
159-
flag.StringVar(&clickhouseWriteTimeout, "clickhouse.write-timeout", defaultClickHouseWriteTimeout, "ClickHouse write timeout for the connection.")
160-
flag.StringVar(&clickhouseReadTimeout, "clickhouse.read-timeout", defaultClickHouseReadTimeout, "ClickHouse read timeout for the connection.")
179+
flag.StringVar(&clickhouseDialTimeout, "clickhouse.dial-timeout", defaultClickHouseDialTimeout, "ClickHouse dial timeout.")
180+
flag.StringVar(&clickhouseConnMaxLifetime, "clickhouse.conn-max-lifetime", defaultClickHouseConnMaxLifetime, "ClickHouse maximum connection lifetime.")
181+
flag.IntVar(&clickhouseMaxIdleConns, "clickhouse.max-idle-conns", defaultClickHouseMaxIdleConns, "ClickHouse maximum number of idle connections.")
182+
flag.IntVar(&clickhouseMaxOpenConns, "clickhouse.max-open-conns", defaultClickHouseMaxOpenConns, "ClickHouse maximum number of open connections.")
161183
flag.BoolVar(&clickhouseAsyncInsert, "clickhouse.async-insert", defaultClickHouseAsyncInsert, "Enable async inserts.")
162184
flag.BoolVar(&clickhouseWaitForAsyncInsert, "clickhouse.wait-for-async-insert", defaultClickHouseWaitForAsyncInsert, "Wait for async inserts.")
163185
flag.Int64Var(&clickhouseBatchSize, "clickhouse.batch-size", defaultClickHouseBatchSize, "The size for how many log lines should be buffered, before they are written to ClickHouse.")
@@ -201,7 +223,7 @@ func main() {
201223
},
202224
}
203225

204-
logger, err := zapConfig.Build()
226+
logger, err := zapConfig.Build(zap.AddCaller(), zap.AddCallerSkip(1))
205227
if err != nil {
206228
panic(err)
207229
}
@@ -225,7 +247,7 @@ func main() {
225247

226248
log.Info(nil, "Version information", version.Info()...)
227249
log.Info(nil, "Build context", version.BuildContext()...)
228-
log.Info(nil, "Clickhouse configuration", zap.String("clickhouseAddress", clickhouseAddress), zap.String("clickhouseUsername", clickhouseUsername), zap.String("clickhousePassword", "*****"), zap.String("clickhouseDatabase", clickhouseDatabase), zap.String("clickhouseWriteTimeout", clickhouseWriteTimeout), zap.String("clickhouseReadTimeout", clickhouseReadTimeout), zap.Int64("clickhouseBatchSize", clickhouseBatchSize), zap.Duration("clickhouseFlushInterval", clickhouseFlushInterval))
250+
log.Info(nil, "Clickhouse configuration", zap.String("clickhouseAddress", clickhouseAddress), zap.String("clickhouseUsername", clickhouseUsername), zap.String("clickhousePassword", "*****"), zap.String("clickhouseDatabase", clickhouseDatabase), zap.String("clickhouseDialTimeout", clickhouseDialTimeout), zap.String("clickhouseConnMaxLifetime", clickhouseConnMaxLifetime), zap.Int("clickhouseMaxIdleConns", clickhouseMaxIdleConns), zap.Int("clickhouseMaxOpenConns", clickhouseMaxOpenConns), zap.Int64("clickhouseBatchSize", clickhouseBatchSize), zap.Duration("clickhouseFlushInterval", clickhouseFlushInterval))
229251
log.Info(nil, "Kafka configuration", zap.String("kafkaBrokers", kafkaBrokers), zap.String("kafkaGroup", kafkaGroup), zap.String("kafkaVersion", kafkaVersion), zap.String("kafkaTopics", kafkaTopics))
230252

231253
// Create a http server, which can be used for the liveness and readiness probe in Kubernetes. The server also
@@ -246,7 +268,7 @@ func main() {
246268
// Create a new client for the configured ClickHouse instance. Then pass the ClickHouse client to the Run function
247269
// of the Kafka package, which listens for message in the configured Kafka instance. These messages are then written
248270
// to ClickHouse via the created ClickHouse client.
249-
client, err := clickhouse.NewClient(clickhouseAddress, clickhouseUsername, clickhousePassword, clickhouseDatabase, clickhouseWriteTimeout, clickhouseReadTimeout, clickhouseAsyncInsert, clickhouseWaitForAsyncInsert)
271+
client, err := clickhouse.NewClient(clickhouseAddress, clickhouseUsername, clickhousePassword, clickhouseDatabase, clickhouseDialTimeout, clickhouseConnMaxLifetime, clickhouseMaxIdleConns, clickhouseMaxOpenConns, clickhouseAsyncInsert, clickhouseWaitForAsyncInsert)
250272
if err != nil {
251273
log.Fatal(nil, "Could not create ClickHouse client", zap.Error(err))
252274
}

cmd/plugin/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
FROM golang:1.17.3 as build
1+
FROM golang:1.19.2 as build
22
WORKDIR /root
33
COPY go.mod go.sum ./
44
RUN go mod download
55
COPY . .
66
RUN make build-plugin
77

8-
FROM fluent/fluent-bit:1.9.1
8+
FROM fluent/fluent-bit:1.9.9
99
COPY --from=build /root/out_clickhouse.so /fluent-bit/bin/
1010
EXPOSE 2020
1111
CMD ["/fluent-bit/bin/fluent-bit", "--plugin", "/fluent-bit/bin/out_clickhouse.so", "--config", "/fluent-bit/etc/fluent-bit.conf"]

cmd/plugin/README.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ An example configuration file can be found in the [fluent-bit-cm.yaml](../../clu
1414
| `Database` | The name of the database for the logs. | `logs` |
1515
| `Username` | The username, to authenticate to ClickHouse. | |
1616
| `Password` | The password, to authenticate to ClickHouse. | |
17-
| `Write_Timeout` | The write timeout for ClickHouse. | `10` |
18-
| `Read_Timeout` | The read timeout for ClickHouse. | `10` |
17+
| `Dial_Timeout` | ClickHouse dial timeout. | `10s` |
18+
| `Conn_Max_Lifetime` | ClickHouse maximum connection lifetime. | `1h` |
19+
| `Max_Idle_Conns` | ClickHouse maximum number of idle connections. | `5` |
20+
| `Max_Open_Conns` | ClickHouse maximum number of open connections. | `10` |
1921
| `Async_Insert` | Use async inserts to write logs into ClickHouse. | `false` |
2022
| `Wait_For_Async_Insert` | Wait for the async insert operation. | `false` |
2123
| `Batch_Size` | The size for how many log lines should be buffered, before they are written to ClickHouse. | `10000` |

cmd/plugin/main.go

+37-23
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@ import (
2424
)
2525

2626
const (
27-
defaultDatabase string = "logs"
28-
defaultWriteTimeout string = "10"
29-
defaultReadTimeout string = "10"
30-
defaultBatchSize int64 = 10000
31-
defaultFlushInterval time.Duration = 60 * time.Second
27+
defaultDatabase string = "logs"
28+
defaultDialTimeout string = "10s"
29+
defaultConnMaxLifetime string = "1h"
30+
defaultMaxIdleConns int = 5
31+
defaultMaxOpenConns int = 10
32+
defaultBatchSize int64 = 10000
33+
defaultFlushInterval time.Duration = 60 * time.Second
3234
)
3335

3436
var (
@@ -80,7 +82,7 @@ func FLBPluginInit(plugin unsafe.Pointer) int {
8082
},
8183
}
8284

83-
logger, err := zapConfig.Build()
85+
logger, err := zapConfig.Build(zap.AddCaller(), zap.AddCallerSkip(1))
8486
if err != nil {
8587
panic(err)
8688
}
@@ -101,14 +103,28 @@ func FLBPluginInit(plugin unsafe.Pointer) int {
101103

102104
password := output.FLBPluginConfigKey(plugin, "password")
103105

104-
writeTimeout := output.FLBPluginConfigKey(plugin, "write_timeout")
105-
if writeTimeout == "" {
106-
writeTimeout = defaultReadTimeout
106+
dialTimeout := output.FLBPluginConfigKey(plugin, "dial_timeout")
107+
if dialTimeout == "" {
108+
dialTimeout = defaultDialTimeout
107109
}
108110

109-
readTimeout := output.FLBPluginConfigKey(plugin, "read_timeout")
110-
if readTimeout == "" {
111-
readTimeout = defaultReadTimeout
111+
connMaxLifetime := output.FLBPluginConfigKey(plugin, "conn_max_lifetime")
112+
if connMaxLifetime == "" {
113+
connMaxLifetime = defaultConnMaxLifetime
114+
}
115+
116+
maxIdleConnsStr := output.FLBPluginConfigKey(plugin, "max_idle_conns")
117+
maxIdleConns, err := strconv.Atoi(maxIdleConnsStr)
118+
if err != nil || maxIdleConns < 0 {
119+
log.Warn(nil, "Could not parse maxIdleConns setting, use default setting", zap.Error(err), zap.Int("default", defaultMaxIdleConns))
120+
maxIdleConns = defaultMaxIdleConns
121+
}
122+
123+
maxOpenConnsStr := output.FLBPluginConfigKey(plugin, "max_open_conns")
124+
maxOpenConns, err := strconv.Atoi(maxOpenConnsStr)
125+
if err != nil || maxOpenConns < 0 {
126+
log.Warn(nil, "Could not parse maxOpenConns setting, use default setting", zap.Error(err), zap.Int("default", defaultMaxOpenConns))
127+
maxOpenConns = defaultMaxOpenConns
112128
}
113129

114130
asyncInsertStr := output.FLBPluginConfigKey(plugin, "async_insert")
@@ -140,9 +156,9 @@ func FLBPluginInit(plugin unsafe.Pointer) int {
140156
forceNumberFieldsStr := output.FLBPluginConfigKey(plugin, "force_number_fields")
141157
forceNumberFields = strings.Split(forceNumberFieldsStr, ",")
142158

143-
log.Info(nil, "Clickhouse configuration", zap.String("clickhouseAddress", address), zap.String("clickhouseUsername", username), zap.String("clickhousePassword", "*****"), zap.String("clickhouseDatabase", database), zap.String("clickhouseWriteTimeout", writeTimeout), zap.String("clickhouseReadTimeout", readTimeout), zap.Int64("clickhouseBatchSize", batchSize), zap.Duration("clickhouseFlushInterval", flushInterval), zap.Strings("forceNumberFields", forceNumberFields))
159+
log.Info(nil, "Clickhouse configuration", zap.String("address", address), zap.String("username", username), zap.String("password", "*****"), zap.String("database", database), zap.String("dialTimeout", dialTimeout), zap.String("connMaxLifetime", connMaxLifetime), zap.Int("maxIdleConns", maxIdleConns), zap.Int("maxOpenConns", maxOpenConns), zap.Int64("batchSize", batchSize), zap.Duration("flushInterval", flushInterval))
144160

145-
clickhouseClient, err := clickhouse.NewClient(address, username, password, database, writeTimeout, readTimeout, asyncInsert, waitForAsyncInsert)
161+
clickhouseClient, err := clickhouse.NewClient(address, username, password, database, dialTimeout, connMaxLifetime, maxIdleConns, maxOpenConns, asyncInsert, waitForAsyncInsert)
146162
if err != nil {
147163
log.Fatal(nil, "Could not create ClickHouse client", zap.Error(err))
148164
return output.FLB_ERROR
@@ -187,7 +203,9 @@ func FLBPluginFlushCtx(ctx, data unsafe.Pointer, length C.int, tag *C.char) int
187203
}
188204

189205
row := clickhouse.Row{
190-
Timestamp: timestamp,
206+
Timestamp: timestamp,
207+
FieldsString: make(map[string]string),
208+
FieldsNumber: make(map[string]float64),
191209
}
192210

193211
for k, v := range data {
@@ -260,21 +278,17 @@ func FLBPluginFlushCtx(ctx, data unsafe.Pointer, length C.int, tag *C.char) int
260278
row.Log = stringValue
261279
default:
262280
if isNumber {
263-
row.FieldsNumber.Key = append(row.FieldsNumber.Key, k)
264-
row.FieldsNumber.Value = append(row.FieldsNumber.Value, numberValue)
281+
row.FieldsNumber[k] = numberValue
265282
} else {
266283
if contains(k, forceNumberFields) {
267284
parsedNumber, err := strconv.ParseFloat(stringValue, 64)
268285
if err == nil {
269-
row.FieldsNumber.Key = append(row.FieldsNumber.Key, k)
270-
row.FieldsNumber.Value = append(row.FieldsNumber.Value, parsedNumber)
286+
row.FieldsNumber[k] = parsedNumber
271287
} else {
272-
row.FieldsString.Key = append(row.FieldsString.Key, k)
273-
row.FieldsString.Value = append(row.FieldsString.Value, stringValue)
288+
row.FieldsString[k] = stringValue
274289
}
275290
} else {
276-
row.FieldsString.Key = append(row.FieldsString.Key, k)
277-
row.FieldsString.Value = append(row.FieldsString.Value, stringValue)
291+
row.FieldsString[k] = stringValue
278292
}
279293
}
280294
}

go.mod

+15-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/kobsio/klogs
33
go 1.19
44

55
require (
6-
github.com/ClickHouse/clickhouse-go v1.5.4
6+
github.com/ClickHouse/clickhouse-go/v2 v2.3.0
77
github.com/Shopify/sarama v1.37.2
88
github.com/fluent/fluent-bit-go v0.0.0-20220311094233-780004bf5562
99
github.com/prometheus/client_golang v1.13.0
@@ -13,15 +13,19 @@ require (
1313
)
1414

1515
require (
16+
github.com/ClickHouse/ch-go v0.47.3 // indirect
17+
github.com/andybalholm/brotli v1.0.4 // indirect
1618
github.com/beorn7/perks v1.0.1 // indirect
1719
github.com/cespare/xxhash/v2 v2.1.2 // indirect
18-
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect
1920
github.com/davecgh/go-spew v1.1.1 // indirect
2021
github.com/eapache/go-resiliency v1.3.0 // indirect
2122
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
2223
github.com/eapache/queue v1.1.0 // indirect
24+
github.com/go-faster/city v1.0.1 // indirect
25+
github.com/go-faster/errors v0.6.1 // indirect
2326
github.com/golang/protobuf v1.5.2 // indirect
2427
github.com/golang/snappy v0.0.4 // indirect
28+
github.com/google/uuid v1.3.0 // indirect
2529
github.com/hashicorp/errwrap v1.0.0 // indirect
2630
github.com/hashicorp/go-multierror v1.1.1 // indirect
2731
github.com/hashicorp/go-uuid v1.0.3 // indirect
@@ -32,20 +36,25 @@ require (
3236
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
3337
github.com/klauspost/compress v1.15.11 // indirect
3438
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
35-
github.com/pierrec/lz4 v2.6.1+incompatible // indirect
39+
github.com/paulmach/orb v0.7.1 // indirect
3640
github.com/pierrec/lz4/v4 v4.1.17 // indirect
41+
github.com/pkg/errors v0.9.1 // indirect
3742
github.com/pmezard/go-difflib v1.0.0 // indirect
3843
github.com/prometheus/client_model v0.2.0 // indirect
3944
github.com/prometheus/common v0.37.0 // indirect
4045
github.com/prometheus/procfs v0.8.0 // indirect
4146
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
4247
github.com/rogpeppe/go-internal v1.9.0 // indirect
48+
github.com/segmentio/asm v1.2.0 // indirect
49+
github.com/shopspring/decimal v1.3.1 // indirect
4350
github.com/ugorji/go/codec v1.1.8 // indirect
44-
go.uber.org/atomic v1.7.0 // indirect
45-
go.uber.org/multierr v1.6.0 // indirect
51+
go.opentelemetry.io/otel v1.9.0 // indirect
52+
go.opentelemetry.io/otel/trace v1.9.0 // indirect
53+
go.uber.org/atomic v1.10.0 // indirect
54+
go.uber.org/multierr v1.8.0 // indirect
4655
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
4756
golang.org/x/net v0.0.0-20220927171203-f486391704dc // indirect
48-
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect
57+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect
4958
google.golang.org/protobuf v1.28.1 // indirect
5059
gopkg.in/yaml.v3 v3.0.1 // indirect
5160
)

0 commit comments

Comments
 (0)