Skip to content

Commit 18e9f6d

Browse files
committed
feat: add Prometheus metrics exporter for DBLab monitoring
Add a /metrics endpoint that exports DBLab metrics in Prometheus format. Metrics include: - Engine info and uptime - Retrieval mode, status, last/next refresh times, data freshness - Synchronization metrics for physical mode (replication lag, uptime) - Pool metrics (size, free, used, data size, compression ratio) - Clone metrics (total, by status, diff sizes, cloning times) - Snapshot metrics (counts, sizes) - Branch count - Busy slots count for logical mode full refresh availability The /metrics endpoint does not require authentication.
1 parent 583e4dd commit 18e9f6d

7 files changed

Lines changed: 1590 additions & 3 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ Read more:
119119
- Resource quotas: CPU, RAM
120120
- Monitoring & security
121121
- `/healthz` API endpoint (no auth), extended `/status` endpoint ([API docs](https://api.dblab.dev))
122+
- Prometheus metrics endpoint (`/metrics`) for monitoring
122123
- Netdata module for insights
123124

124125
## How to contribute

engine/PROMETHEUS_METRICS.md

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# DBLab Prometheus Metrics
2+
3+
DBLab Engine exports metrics in Prometheus format via the `/metrics` endpoint. This endpoint does not require authentication.
4+
5+
## Endpoint
6+
7+
```
8+
GET http://<dblab-host>:<port>/metrics
9+
```
10+
11+
## Prometheus Configuration
12+
13+
Add the following to your `prometheus.yml`:
14+
15+
```yaml
16+
scrape_configs:
17+
- job_name: 'dblab'
18+
static_configs:
19+
- targets: ['<dblab-host>:2345']
20+
scrape_interval: 30s
21+
```
22+
23+
## Available Metrics
24+
25+
### Engine Metrics
26+
27+
| Metric | Type | Description |
28+
|--------|------|-------------|
29+
| `dblab_engine_info` | Gauge | Engine information with labels: version, edition, instance_id |
30+
| `dblab_engine_uptime_seconds` | Gauge | Time since Database Lab Engine started in seconds |
31+
32+
### Retrieval Metrics
33+
34+
| Metric | Type | Description |
35+
|--------|------|-------------|
36+
| `dblab_retrieval_mode` | Gauge | Current retrieval mode (1=physical, 2=logical, 0=unknown) |
37+
| `dblab_retrieval_status` | Gauge | Current retrieval status with label: status |
38+
| `dblab_retrieval_last_refresh_timestamp_seconds` | Gauge | Unix timestamp of last data refresh |
39+
| `dblab_retrieval_next_refresh_timestamp_seconds` | Gauge | Unix timestamp of next scheduled data refresh |
40+
| `dblab_retrieval_data_freshness_seconds` | Gauge | Time since last data refresh in seconds |
41+
| `dblab_retrieval_alerts_total` | Gauge | Number of retrieval alerts with labels: type, level |
42+
43+
### Synchronization Metrics (Physical Mode)
44+
45+
| Metric | Type | Description |
46+
|--------|------|-------------|
47+
| `dblab_sync_replication_lag_seconds` | Gauge | Replication lag in seconds |
48+
| `dblab_sync_replication_uptime_seconds` | Gauge | Replication uptime in seconds |
49+
50+
### Pool Metrics
51+
52+
| Metric | Type | Labels | Description |
53+
|--------|------|--------|-------------|
54+
| `dblab_pool_status` | Gauge | pool, mode | Pool status (1=active, 2=refreshing, 3=empty) |
55+
| `dblab_pool_data_state_at_timestamp_seconds` | Gauge | pool | Unix timestamp of the pool data state |
56+
| `dblab_pool_size_bytes` | Gauge | pool | Total pool size in bytes |
57+
| `dblab_pool_free_bytes` | Gauge | pool | Free space in pool in bytes |
58+
| `dblab_pool_used_bytes` | Gauge | pool | Used space in pool in bytes |
59+
| `dblab_pool_data_size_bytes` | Gauge | pool | Logical data size in bytes |
60+
| `dblab_pool_used_by_snapshots_bytes` | Gauge | pool | Space used by snapshots in bytes |
61+
| `dblab_pool_used_by_clones_bytes` | Gauge | pool | Space used by clones in bytes |
62+
| `dblab_pool_compress_ratio` | Gauge | pool | Compression ratio of the pool |
63+
| `dblab_pool_clones_total` | Gauge | pool | Number of clones in the pool |
64+
65+
### Clone Metrics
66+
67+
| Metric | Type | Labels | Description |
68+
|--------|------|--------|-------------|
69+
| `dblab_clones_total` | Gauge | - | Total number of clones |
70+
| `dblab_clones_by_status` | Gauge | status | Number of clones by status |
71+
| `dblab_clones_expected_cloning_time_seconds` | Gauge | - | Expected time to create a clone in seconds |
72+
| `dblab_clones_protected_total` | Gauge | - | Number of protected clones |
73+
| `dblab_clone_diff_size_bytes` | Gauge | clone_id, branch | Clone diff size in bytes |
74+
| `dblab_clone_logical_size_bytes` | Gauge | clone_id, branch | Clone logical size in bytes |
75+
| `dblab_clone_cloning_time_seconds` | Gauge | clone_id, branch | Time taken to create clone in seconds |
76+
77+
### Snapshot Metrics
78+
79+
| Metric | Type | Labels | Description |
80+
|--------|------|--------|-------------|
81+
| `dblab_snapshots_total` | Gauge | pool, branch, type | Total number of snapshots (type: auto/user) |
82+
| `dblab_snapshot_physical_size_bytes` | Gauge | snapshot_id, pool, branch | Snapshot physical size in bytes |
83+
| `dblab_snapshot_logical_size_bytes` | Gauge | snapshot_id, pool, branch | Snapshot logical size in bytes |
84+
| `dblab_snapshot_clone_count` | Gauge | snapshot_id, pool | Number of clones using this snapshot |
85+
86+
### Branch Metrics
87+
88+
| Metric | Type | Description |
89+
|--------|------|-------------|
90+
| `dblab_branches_total` | Gauge | Total number of branches in use |
91+
92+
### Resource/Slot Metrics
93+
94+
| Metric | Type | Description |
95+
|--------|------|-------------|
96+
| `dblab_slots_busy_total` | Gauge | Number of busy slots preventing full refresh in logical mode |
97+
98+
## Example Grafana Queries
99+
100+
### Monitor disk usage
101+
102+
```promql
103+
100 - (dblab_pool_free_bytes / dblab_pool_size_bytes * 100)
104+
```
105+
106+
### Monitor replication lag (physical mode)
107+
108+
```promql
109+
dblab_sync_replication_lag_seconds
110+
```
111+
112+
### Data freshness (logical mode)
113+
114+
```promql
115+
dblab_retrieval_data_freshness_seconds / 3600
116+
```
117+
118+
### Clone count over time
119+
120+
```promql
121+
dblab_clones_total
122+
```
123+
124+
### Alert on high disk usage
125+
126+
```promql
127+
(1 - dblab_pool_free_bytes / dblab_pool_size_bytes) > 0.85
128+
```
129+
130+
### Alert on replication lag
131+
132+
```promql
133+
dblab_sync_replication_lag_seconds > 300
134+
```
135+
136+
## Sample Output
137+
138+
```
139+
# HELP dblab_engine_info Database Lab Engine information
140+
# TYPE dblab_engine_info gauge
141+
dblab_engine_info{edition="standard",instance_id="my-instance",version="3.5.0"} 1
142+
143+
# HELP dblab_engine_uptime_seconds Time since Database Lab Engine started in seconds
144+
# TYPE dblab_engine_uptime_seconds gauge
145+
dblab_engine_uptime_seconds 86400
146+
147+
# HELP dblab_retrieval_mode Current retrieval mode (1 for physical, 2 for logical, 0 for unknown)
148+
# TYPE dblab_retrieval_mode gauge
149+
dblab_retrieval_mode 1
150+
151+
# HELP dblab_sync_replication_lag_seconds Replication lag in seconds (physical mode)
152+
# TYPE dblab_sync_replication_lag_seconds gauge
153+
dblab_sync_replication_lag_seconds 5
154+
155+
# HELP dblab_pool_size_bytes Total pool size in bytes
156+
# TYPE dblab_pool_size_bytes gauge
157+
dblab_pool_size_bytes{pool="dblab_pool"} 107374182400
158+
159+
# HELP dblab_pool_free_bytes Free space in pool in bytes
160+
# TYPE dblab_pool_free_bytes gauge
161+
dblab_pool_free_bytes{pool="dblab_pool"} 53687091200
162+
163+
# HELP dblab_clones_total Total number of clones
164+
# TYPE dblab_clones_total gauge
165+
dblab_clones_total 3
166+
```

engine/go.mod

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ require (
77
github.com/ahmetalpbalkan/dlog v0.0.0-20170105205344-4fb5f8204f26
88
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
99
github.com/aws/aws-sdk-go v1.44.309
10+
github.com/containerd/errdefs v1.0.0
1011
github.com/docker/cli v27.1.1+incompatible
1112
github.com/docker/docker v28.5.1+incompatible
1213
github.com/docker/go-connections v0.6.0
@@ -22,12 +23,13 @@ require (
2223
github.com/lib/pq v1.10.9
2324
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
2425
github.com/pkg/errors v0.9.1
26+
github.com/prometheus/client_golang v1.23.2
2527
github.com/robfig/cron/v3 v3.0.1
2628
github.com/rs/xid v1.5.0
2729
github.com/sergi/go-diff v1.3.1
2830
github.com/sethvargo/go-password v0.2.0
2931
github.com/shirou/gopsutil v3.21.11+incompatible
30-
github.com/stretchr/testify v1.11.0
32+
github.com/stretchr/testify v1.11.1
3133
github.com/testcontainers/testcontainers-go v0.40.0
3234
github.com/urfave/cli/v2 v2.25.7
3335
github.com/wagslane/go-password-validator v0.3.0
@@ -42,8 +44,9 @@ require (
4244
dario.cat/mergo v1.0.2 // indirect
4345
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
4446
github.com/Microsoft/go-winio v0.6.2 // indirect
47+
github.com/beorn7/perks v1.0.1 // indirect
4548
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
46-
github.com/containerd/errdefs v1.0.0 // indirect
49+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
4750
github.com/containerd/errdefs/pkg v0.3.0 // indirect
4851
github.com/containerd/log v0.1.0 // indirect
4952
github.com/containerd/platforms v0.2.1 // indirect
@@ -65,6 +68,7 @@ require (
6568
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
6669
github.com/jmespath/go-jmespath v0.4.0 // indirect
6770
github.com/klauspost/compress v1.18.0 // indirect
71+
github.com/kylelemons/godebug v1.1.0 // indirect
6872
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
6973
github.com/magiconair/properties v1.8.10 // indirect
7074
github.com/moby/docker-image-spec v1.3.1 // indirect
@@ -75,10 +79,14 @@ require (
7579
github.com/moby/sys/userns v0.1.0 // indirect
7680
github.com/moby/term v0.5.0 // indirect
7781
github.com/morikuni/aec v1.0.0 // indirect
82+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
7883
github.com/opencontainers/go-digest v1.0.0 // indirect
7984
github.com/opencontainers/image-spec v1.1.1 // indirect
8085
github.com/pmezard/go-difflib v1.0.0 // indirect
8186
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
87+
github.com/prometheus/client_model v0.6.2 // indirect
88+
github.com/prometheus/common v0.66.1 // indirect
89+
github.com/prometheus/procfs v0.16.1 // indirect
8290
github.com/russross/blackfriday/v2 v2.1.0 // indirect
8391
github.com/shirou/gopsutil/v4 v4.25.6 // indirect
8492
github.com/sirupsen/logrus v1.9.3 // indirect
@@ -95,8 +103,9 @@ require (
95103
go.opentelemetry.io/otel/sdk v1.21.0 // indirect
96104
go.opentelemetry.io/otel/trace v1.35.0 // indirect
97105
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
106+
go.yaml.in/yaml/v2 v2.4.2 // indirect
98107
golang.org/x/sys v0.38.0 // indirect
99108
golang.org/x/text v0.31.0 // indirect
100109
golang.org/x/time v0.12.0 // indirect
101-
google.golang.org/protobuf v1.35.2 // indirect
110+
google.golang.org/protobuf v1.36.8 // indirect
102111
)

engine/go.sum

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,12 @@ github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhP
1616
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw=
1717
github.com/aws/aws-sdk-go v1.44.309 h1:IPJOFBzXekakxmEpDwd4RTKmmBR6LIAiXgNsM51bWbU=
1818
github.com/aws/aws-sdk-go v1.44.309/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
19+
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
20+
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
1921
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
2022
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
23+
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
24+
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
2125
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
2226
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
2327
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
@@ -153,6 +157,8 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
153157
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
154158
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
155159
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
160+
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
161+
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
156162
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
157163
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
158164
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@@ -187,6 +193,8 @@ github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
187193
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
188194
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
189195
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
196+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
197+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
190198
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
191199
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
192200
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
@@ -200,6 +208,14 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
200208
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
201209
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
202210
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
211+
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
212+
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
213+
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
214+
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
215+
github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
216+
github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
217+
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
218+
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
203219
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
204220
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
205221
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
@@ -242,6 +258,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
242258
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
243259
github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8=
244260
github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
261+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
262+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
245263
github.com/testcontainers/testcontainers-go v0.40.0 h1:pSdJYLOVgLE8YdUY2FHQ1Fxu+aMnb6JfVz1mxk7OeMU=
246264
github.com/testcontainers/testcontainers-go v0.40.0/go.mod h1:FSXV5KQtX2HAMlm7U3APNyLkkap35zNLxukw9oBi/MY=
247265
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
@@ -287,6 +305,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E
287305
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
288306
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
289307
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
308+
go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
309+
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
290310
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
291311
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
292312
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -384,6 +404,8 @@ google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
384404
google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
385405
google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
386406
google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
407+
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
408+
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
387409
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
388410
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
389411
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

0 commit comments

Comments
 (0)