diff --git a/CHANGELOG.md b/CHANGELOG.md index a2e1030328..9c1b870068 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ We use *breaking :warning:* to mark changes that are not backward compatible (re ### Changed - [#7123](https://github.com/thanos-io/thanos/pull/7123) Rule: Change default Alertmanager API version to v2. +- [#7222](https://github.com/thanos-io/thanos/pull/7123) Automatic detection of memory limits and configure GOMEMLIMIT to match. ### Removed diff --git a/cmd/thanos/config.go b/cmd/thanos/config.go index 5c5318212e..a6abd7c3c9 100644 --- a/cmd/thanos/config.go +++ b/cmd/thanos/config.go @@ -13,6 +13,7 @@ import ( "strings" "time" + "github.com/KimMachineGun/automemlimit/memlimit" extflag "github.com/efficientgo/tools/extkingpin" "github.com/pkg/errors" @@ -283,3 +284,42 @@ func parseFlagLabels(s []string) (labels.Labels, error) { sort.Sort(lset) return lset, nil } + +type goMemLimitConfig struct { + enableAutoGoMemlimit bool + memlimitRatio float64 +} + +func (gml *goMemLimitConfig) registerFlag(cmd extkingpin.FlagClause) *goMemLimitConfig { + cmd.Flag("enable-auto-gomemlimit", + "Enable go runtime to automatically limit memory consumption."). + Default("false").BoolVar(&gml.enableAutoGoMemlimit) + + cmd.Flag("auto-gomemlimit.ratio", + "The ratio of reserved GOMEMLIMIT memory to the detected maximum container or system memory."). + Default("0.9").FloatVar(&gml.memlimitRatio) + + return gml +} + +func configureGoAutoMemLimit(common goMemLimitConfig) error { + if common.memlimitRatio <= 0.0 || common.memlimitRatio > 1.0 { + return errors.New("--auto-gomemlimit.ratio must be greater than 0 and less than or equal to 1.") + } + + if common.enableAutoGoMemlimit { + if _, err := memlimit.SetGoMemLimitWithOpts( + memlimit.WithRatio(common.memlimitRatio), + memlimit.WithProvider( + memlimit.ApplyFallback( + memlimit.FromCgroup, + memlimit.FromSystem, + ), + ), + ); err != nil { + return errors.Wrap(err, "Failed to set GOMEMLIMIT automatically") + } + } + + return nil +} diff --git a/cmd/thanos/main.go b/cmd/thanos/main.go index d6eafde695..d8d69a9e7c 100644 --- a/cmd/thanos/main.go +++ b/cmd/thanos/main.go @@ -49,6 +49,10 @@ func main() { Default(logging.LogFormatLogfmt).Enum(logging.LogFormatLogfmt, logging.LogFormatJSON) tracingConfig := extkingpin.RegisterCommonTracingFlags(app) + goMemLimitConf := goMemLimitConfig{} + + goMemLimitConf.registerFlag(app) + registerSidecar(app) registerStore(app) registerQuery(app) @@ -61,6 +65,11 @@ func main() { cmd, setup := app.Parse() logger := logging.NewLogger(*logLevel, *logFormat, *debugName) + if err := configureGoAutoMemLimit(goMemLimitConf); err != nil { + level.Error(logger).Log("msg", "failed to configure Go runtime memory limits", "err", err) + os.Exit(1) + } + // Running in container with limits but with empty/wrong value of GOMAXPROCS env var could lead to throttling by cpu // maxprocs will automate adjustment by using cgroups info about cpu limit if it set as value for runtime.GOMAXPROCS. undo, err := maxprocs.Set(maxprocs.Logger(func(template string, args ...interface{}) { diff --git a/docs/components/compact.md b/docs/components/compact.md index 91e6fd04c6..3991b1a8ca 100644 --- a/docs/components/compact.md +++ b/docs/components/compact.md @@ -279,6 +279,9 @@ usage: thanos compact [] Continuously compacts blocks in an object store bucket. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --block-discovery-strategy="concurrent" One of concurrent, recursive. When set to concurrent, stores will concurrently issue @@ -375,6 +378,8 @@ Flags: non-downsampled data is not efficient and useful e.g it is not possible to render all samples for a human eye anyway + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. --hash-func= Specify which hash function to use when calculating the hashes of produced files. If no function has been specified, it does not diff --git a/docs/components/query-frontend.md b/docs/components/query-frontend.md index 5df99529f2..8025cdecc8 100644 --- a/docs/components/query-frontend.md +++ b/docs/components/query-frontend.md @@ -199,10 +199,15 @@ Query frontend command implements a service deployed in front of queriers to improve query parallelization and caching. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --cache-compression-type="" Use compression in results cache. Supported values are: 'snappy' and ” (disable compression). + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. -h, --help Show context-sensitive help (also try --help-long and --help-man). --http-address="0.0.0.0:10902" diff --git a/docs/components/query.md b/docs/components/query.md index 59aa9ed783..4cf291537f 100644 --- a/docs/components/query.md +++ b/docs/components/query.md @@ -294,6 +294,11 @@ Flags: --alert.query-url=ALERT.QUERY-URL The external Thanos Query URL that would be set in all alerts 'Source' field. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. --endpoint= ... Addresses of statically configured Thanos API servers (repeatable). The scheme may be prefixed with 'dns+' or 'dnssrv+' to detect diff --git a/docs/components/receive.md b/docs/components/receive.md index 8b59a87533..9519b822dc 100644 --- a/docs/components/receive.md +++ b/docs/components/receive.md @@ -297,6 +297,11 @@ usage: thanos receive [] Accept Prometheus remote write API requests and write to local tsdb. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. --grpc-address="0.0.0.0:10901" Listen ip:port address for gRPC endpoints (StoreAPI). Make sure this address is routable diff --git a/docs/components/rule.md b/docs/components/rule.md index a60b32ca83..5c784c9a3f 100644 --- a/docs/components/rule.md +++ b/docs/components/rule.md @@ -316,7 +316,12 @@ Flags: lookups. The port defaults to 9093 or the SRV record's value. The URL path is used as a prefix for the regular Alertmanager API path. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --data-dir="data/" data directory + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. --eval-interval=1m The default evaluation interval to use. --for-grace-period=10m Minimum duration between alert and restored "for" state. This is maintained only for alerts diff --git a/docs/components/sidecar.md b/docs/components/sidecar.md index 8a31801b13..e50978ca02 100644 --- a/docs/components/sidecar.md +++ b/docs/components/sidecar.md @@ -76,6 +76,11 @@ usage: thanos sidecar [] Sidecar for Prometheus server. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. --grpc-address="0.0.0.0:10901" Listen ip:port address for gRPC endpoints (StoreAPI). Make sure this address is routable diff --git a/docs/components/store.md b/docs/components/store.md index 0f5f55d022..5b2844c6dc 100644 --- a/docs/components/store.md +++ b/docs/components/store.md @@ -29,6 +29,9 @@ Store node giving access to blocks in a bucket provider. Now supported GCS, S3, Azure, Swift, Tencent COS and Aliyun OSS. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --block-discovery-strategy="concurrent" One of concurrent, recursive. When set to concurrent, stores will concurrently issue @@ -69,6 +72,8 @@ Flags: cause the store to read them. For such use cases use Prometheus + sidecar. Ignored if --no-cache-index-header option is specified. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. --grpc-address="0.0.0.0:10901" Listen ip:port address for gRPC endpoints (StoreAPI). Make sure this address is routable diff --git a/docs/components/tools.md b/docs/components/tools.md index 6f0879d885..331e0ac4c8 100644 --- a/docs/components/tools.md +++ b/docs/components/tools.md @@ -12,20 +12,26 @@ usage: thanos tools [ ...] Tools utility commands Flags: - -h, --help Show context-sensitive help (also try --help-long and - --help-man). - --log.format=logfmt Log format to use. Possible options: logfmt or json. - --log.level=info Log filtering level. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. Subcommands: tools bucket verify [] @@ -115,29 +121,36 @@ usage: thanos tools bucket [] [ ...] Bucket utility commands Flags: - -h, --help Show context-sensitive help (also try --help-long and - --help-man). - --log.format=logfmt Log format to use. Possible options: logfmt or json. - --log.level=info Log filtering level. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. --objstore.config= - Alternative to 'objstore.config-file' flag (mutually - exclusive). Content of YAML file that contains - object store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. Subcommands: tools bucket verify [] @@ -216,9 +229,14 @@ usage: thanos tools bucket web [] Web interface for remote storage bucket. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --disable-admin-operations Disable UI/API admin operations like marking blocks for deletion and no compaction. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. -h, --help Show context-sensitive help (also try --help-long and --help-man). --http-address="0.0.0.0:10902" @@ -334,65 +352,74 @@ issue this might take time and will need downloading all specified blocks to disk. Flags: - --delete-delay=0s Duration after which blocks marked for deletion - would be deleted permanently from source bucket by - compactor component. If delete-delay is non zero, - blocks will be marked for deletion and compactor - component is required to delete blocks from source - bucket. If delete-delay is 0, blocks will be deleted - straight away. Use this if you want to get rid of - or move the block immediately. Note that deleting - blocks immediately can cause query failures, if store - gateway still has the block loaded, or compactor is - ignoring the deletion because it's compacting the - block at the same time. - -h, --help Show context-sensitive help (also try --help-long and - --help-man). - --id=ID ... Block IDs to verify (and optionally repair) only. - If none is specified, all blocks will be verified. - Repeated field + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --delete-delay=0s Duration after which blocks marked for deletion + would be deleted permanently from source bucket + by compactor component. If delete-delay is + non zero, blocks will be marked for deletion + and compactor component is required to delete + blocks from source bucket. If delete-delay is 0, + blocks will be deleted straight away. + Use this if you want to get rid of or move + the block immediately. Note that deleting + blocks immediately can cause query failures, + if store gateway still has the block loaded, + or compactor is ignoring the deletion because + it's compacting the block at the same time. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --id=ID ... Block IDs to verify (and optionally repair) + only. If none is specified, all blocks will be + verified. Repeated field -i, --issues=index_known_issues... ... - Issues to verify (and optionally repair). Possible - issue to verify, without repair: [overlapped_blocks]; - Possible issue to verify and repair: - [index_known_issues duplicated_compaction] - --log.format=logfmt Log format to use. Possible options: logfmt or json. - --log.level=info Log filtering level. + Issues to verify (and optionally repair). + Possible issue to verify, without repair: + [overlapped_blocks]; Possible issue to + verify and repair: [index_known_issues + duplicated_compaction] + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. --objstore-backup.config= - Alternative to 'objstore-backup.config-file' - flag (mutually exclusive). Content of YAML - file that contains object store-backup - configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - Used for repair logic to backup blocks before - removal. + Alternative to 'objstore-backup.config-file' + flag (mutually exclusive). Content of YAML + file that contains object store-backup + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + Used for repair logic to backup blocks before + removal. --objstore-backup.config-file= - Path to YAML file that contains object - store-backup configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - Used for repair logic to backup blocks before - removal. + Path to YAML file that contains object + store-backup configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + Used for repair logic to backup blocks before + removal. --objstore.config= - Alternative to 'objstore.config-file' flag (mutually - exclusive). Content of YAML file that contains - object store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - -r, --repair Attempt to repair blocks for which issues were - detected + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + -r, --repair Attempt to repair blocks for which issues were + detected --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. ``` @@ -412,33 +439,40 @@ usage: thanos tools bucket ls [] List all blocks in the bucket. Flags: - --exclude-delete Exclude blocks marked for deletion. - -h, --help Show context-sensitive help (also try --help-long and - --help-man). - --log.format=logfmt Log format to use. Possible options: logfmt or json. - --log.level=info Log filtering level. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + --exclude-delete Exclude blocks marked for deletion. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. --objstore.config= - Alternative to 'objstore.config-file' flag (mutually - exclusive). Content of YAML file that contains - object store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - -o, --output="" Optional format in which to print each block's - information. Options are 'json', 'wide' or a custom - template. + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + -o, --output="" Optional format in which to print each block's + information. Options are 'json', 'wide' or a + custom template. --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. ``` @@ -458,42 +492,48 @@ usage: thanos tools bucket inspect [] Inspect all blocks in the bucket in detailed, table-like way. Flags: - -h, --help Show context-sensitive help (also try --help-long - and --help-man). - --log.format=logfmt Log format to use. Possible options: logfmt or - json. - --log.level=info Log filtering level. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. --objstore.config= - Alternative to 'objstore.config-file' - flag (mutually exclusive). Content of - YAML file that contains object store - configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - --output=table Output format for result. Currently supports table, - cvs, tsv. + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + --output=table Output format for result. Currently supports + table, cvs, tsv. -l, --selector==\"\" ... - Selects blocks based on label, e.g. '-l - key1=\"value1\" -l key2=\"value2\"'. All key value - pairs must match. - --sort-by=FROM... ... Sort by columns. It's also possible to sort by - multiple columns, e.g. '--sort-by FROM --sort-by - UNTIL'. I.e., if the 'FROM' value is equal the rows - are then further sorted by the 'UNTIL' value. - --timeout=5m Timeout to download metadata from remote storage + Selects blocks based on label, e.g. '-l + key1=\"value1\" -l key2=\"value2\"'. All key + value pairs must match. + --sort-by=FROM... ... Sort by columns. It's also possible to sort by + multiple columns, e.g. '--sort-by FROM --sort-by + UNTIL'. I.e., if the 'FROM' value is equal the + rows are then further sorted by the 'UNTIL' + value. + --timeout=5m Timeout to download metadata from remote storage --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. ``` @@ -516,85 +556,91 @@ Replicate data from one object storage to another. NOTE: Currently it works only with Thanos blocks (meta.json has to have Thanos metadata). Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --compaction=COMPACTION ... - Only blocks with these compaction levels - will be replicated. Repeated flag. Overrides - compaction-min and compaction-max if set. - --compaction-max=4 Only blocks up to a maximum of this compaction - level will be replicated. - --compaction-min=1 Only blocks with at least this compaction level - will be replicated. - -h, --help Show context-sensitive help (also try --help-long - and --help-man). + Only blocks with these compaction levels + will be replicated. Repeated flag. Overrides + compaction-min and compaction-max if set. + --compaction-max=4 Only blocks up to a maximum of this compaction + level will be replicated. + --compaction-min=1 Only blocks with at least this compaction level + will be replicated. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). --http-address="0.0.0.0:10902" - Listen host:port for HTTP endpoints. - --http-grace-period=2m Time to wait after an interrupt received for HTTP - Server. - --http.config="" [EXPERIMENTAL] Path to the configuration file - that can enable TLS or authentication for all HTTP - endpoints. - --id=ID ... Block to be replicated to the destination bucket. - IDs will be used to match blocks and other - matchers will be ignored. When specified, this - command will be run only once after successful - replication. Repeated field + Listen host:port for HTTP endpoints. + --http-grace-period=2m Time to wait after an interrupt received for + HTTP Server. + --http.config="" [EXPERIMENTAL] Path to the configuration file + that can enable TLS or authentication for all + HTTP endpoints. + --id=ID ... Block to be replicated to the destination + bucket. IDs will be used to match blocks and + other matchers will be ignored. When specified, + this command will be run only once after + successful replication. Repeated field --ignore-marked-for-deletion - Do not replicate blocks that have deletion mark. - --log.format=logfmt Log format to use. Possible options: logfmt or - json. - --log.level=info Log filtering level. - --matcher=MATCHER blocks whose external labels match this matcher - will be replicated. All Prometheus matchers are - supported, including =, !=, =~ and !~. + Do not replicate blocks that have deletion mark. + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. + --matcher=MATCHER blocks whose external labels match this matcher + will be replicated. All Prometheus matchers are + supported, including =, !=, =~ and !~. --max-time=9999-12-31T23:59:59Z - End of time range limit to replicate. Thanos - Replicate will replicate only metrics, which - happened earlier than this value. Option can be a - constant time in RFC3339 format or time duration - relative to current time, such as -1d or 2h45m. - Valid duration units are ms, s, m, h, d, w, y. + End of time range limit to replicate. + Thanos Replicate will replicate only metrics, + which happened earlier than this value. Option + can be a constant time in RFC3339 format or time + duration relative to current time, such as -1d + or 2h45m. Valid duration units are ms, s, m, h, + d, w, y. --min-time=0000-01-01T00:00:00Z - Start of time range limit to replicate. Thanos - Replicate will replicate only metrics, which - happened later than this value. Option can be a - constant time in RFC3339 format or time duration - relative to current time, such as -1d or 2h45m. - Valid duration units are ms, s, m, h, d, w, y. + Start of time range limit to replicate. Thanos + Replicate will replicate only metrics, which + happened later than this value. Option can be a + constant time in RFC3339 format or time duration + relative to current time, such as -1d or 2h45m. + Valid duration units are ms, s, m, h, d, w, y. --objstore-to.config= - Alternative to 'objstore-to.config-file' - flag (mutually exclusive). Content of - YAML file that contains object store-to - configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - The object storage which replicate data to. + Alternative to 'objstore-to.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store-to + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + The object storage which replicate data to. --objstore-to.config-file= - Path to YAML file that contains object - store-to configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - The object storage which replicate data to. + Path to YAML file that contains object + store-to configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + The object storage which replicate data to. --objstore.config= - Alternative to 'objstore.config-file' - flag (mutually exclusive). Content of - YAML file that contains object store - configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - --resolution=0s... ... Only blocks with these resolutions will be - replicated. Repeated flag. - --single-run Run replication only one time, then exit. + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + --resolution=0s... ... Only blocks with these resolutions will be + replicated. Repeated flag. + --single-run Run replication only one time, then exit. --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. ``` @@ -624,54 +670,59 @@ usage: thanos tools bucket downsample [] Continuously downsamples blocks in an object store bucket. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --block-files-concurrency=1 - Number of goroutines to use when - fetching/uploading block files from object - storage. - --data-dir="./data" Data directory in which to cache blocks and - process downsamplings. + Number of goroutines to use when + fetching/uploading block files from object + storage. + --data-dir="./data" Data directory in which to cache blocks and + process downsamplings. --downsample.concurrency=1 - Number of goroutines to use when downsampling - blocks. - --hash-func= Specify which hash function to use when - calculating the hashes of produced files. If no - function has been specified, it does not happen. - This permits avoiding downloading some files twice - albeit at some performance cost. Possible values - are: "", "SHA256". - -h, --help Show context-sensitive help (also try --help-long - and --help-man). + Number of goroutines to use when downsampling + blocks. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + --hash-func= Specify which hash function to use when + calculating the hashes of produced files. + If no function has been specified, it does not + happen. This permits avoiding downloading some + files twice albeit at some performance cost. + Possible values are: "", "SHA256". + -h, --help Show context-sensitive help (also try + --help-long and --help-man). --http-address="0.0.0.0:10902" - Listen host:port for HTTP endpoints. - --http-grace-period=2m Time to wait after an interrupt received for HTTP - Server. - --http.config="" [EXPERIMENTAL] Path to the configuration file - that can enable TLS or authentication for all HTTP - endpoints. - --log.format=logfmt Log format to use. Possible options: logfmt or - json. - --log.level=info Log filtering level. + Listen host:port for HTTP endpoints. + --http-grace-period=2m Time to wait after an interrupt received for + HTTP Server. + --http.config="" [EXPERIMENTAL] Path to the configuration file + that can enable TLS or authentication for all + HTTP endpoints. + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. --objstore.config= - Alternative to 'objstore.config-file' - flag (mutually exclusive). Content of - YAML file that contains object store - configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. - --wait-interval=5m Wait interval between downsample runs. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. + --wait-interval=5m Wait interval between downsample runs. ``` @@ -705,34 +756,41 @@ currently running compacting same block, this operation would be potentially a noop. Flags: - --details=DETAILS Human readable details to be put into marker. - -h, --help Show context-sensitive help (also try --help-long and - --help-man). - --id=ID ... ID (ULID) of the blocks to be marked for deletion - (repeated flag) - --log.format=logfmt Log format to use. Possible options: logfmt or json. - --log.level=info Log filtering level. - --marker=MARKER Marker to be put. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --details=DETAILS Human readable details to be put into marker. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --id=ID ... ID (ULID) of the blocks to be marked for + deletion (repeated flag) + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. + --marker=MARKER Marker to be put. --objstore.config= - Alternative to 'objstore.config-file' flag (mutually - exclusive). Content of YAML file that contains - object store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - --remove Remove the marker. + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + --remove Remove the marker. --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. ``` @@ -780,12 +838,17 @@ block for deletion to avoid overlaps. WARNING: This procedure is *IRREVERSIBLE* after certain time (delete delay), so do backup your blocks first. Flags: + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. --delete-blocks Whether to delete the original blocks after rewriting blocks successfully. Available in non dry-run mode only. --dry-run Prints the series changes instead of doing them. Defaults to true, for user to double check. (: Pass --no-dry-run to skip this. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. --hash-func= Specify which hash function to use when calculating the hashes of produced files. If no function has been specified, it does not @@ -857,35 +920,40 @@ usage: thanos tools bucket upload-blocks [] Upload blocks push blocks from the provided path to the object storage. Flags: - -h, --help Show context-sensitive help (also try --help-long - and --help-man). - --label=key="value" ... External labels to add to the uploaded blocks - (repeated). - --log.format=logfmt Log format to use. Possible options: logfmt or - json. - --log.level=info Log filtering level. + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --label=key="value" ... External labels to add to the uploaded blocks + (repeated). + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. --objstore.config= - Alternative to 'objstore.config-file' - flag (mutually exclusive). Content of - YAML file that contains object store - configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration + Alternative to 'objstore.config-file' + flag (mutually exclusive). Content of + YAML file that contains object store + configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration --objstore.config-file= - Path to YAML file that contains object - store configuration. See format details: - https://thanos.io/tip/thanos/storage.md/#configuration - --path="./data" Path to the directory containing blocks to - upload. + Path to YAML file that contains object + store configuration. See format details: + https://thanos.io/tip/thanos/storage.md/#configuration + --path="./data" Path to the directory containing blocks to + upload. --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. ``` @@ -911,21 +979,27 @@ usage: thanos tools rules-check --rules=RULES Check if the rule files are valid or not. Flags: - -h, --help Show context-sensitive help (also try --help-long and - --help-man). - --log.format=logfmt Log format to use. Possible options: logfmt or json. - --log.level=info Log filtering level. - --rules=RULES ... The rule files glob to check (repeated). + --auto-gomemlimit.ratio=0.9 + The ratio of reserved GOMEMLIMIT memory to the + detected maximum container or system memory. + --enable-auto-gomemlimit Enable go runtime to automatically limit memory + consumption. + -h, --help Show context-sensitive help (also try + --help-long and --help-man). + --log.format=logfmt Log format to use. Possible options: logfmt or + json. + --log.level=info Log filtering level. + --rules=RULES ... The rule files glob to check (repeated). --tracing.config= - Alternative to 'tracing.config-file' flag - (mutually exclusive). Content of YAML file - with tracing configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration + Alternative to 'tracing.config-file' flag + (mutually exclusive). Content of YAML file + with tracing configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration --tracing.config-file= - Path to YAML file with tracing - configuration. See format details: - https://thanos.io/tip/thanos/tracing.md/#configuration - --version Show application version. + Path to YAML file with tracing + configuration. See format details: + https://thanos.io/tip/thanos/tracing.md/#configuration + --version Show application version. ``` diff --git a/go.mod b/go.mod index c1d4718cdb..151eebabcb 100644 --- a/go.mod +++ b/go.mod @@ -126,7 +126,11 @@ require ( require ( github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect + github.com/cilium/ebpf v0.11.0 // indirect + github.com/containerd/cgroups/v3 v3.0.3 // indirect + github.com/docker/go-units v0.5.0 // indirect github.com/go-openapi/runtime v0.27.1 // indirect + github.com/godbus/dbus/v5 v5.0.4 // indirect github.com/golang-jwt/jwt/v5 v5.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/hashicorp/go-version v1.6.0 // indirect @@ -134,6 +138,8 @@ require ( github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/onsi/ginkgo v1.16.5 // indirect + github.com/opencontainers/runtime-spec v1.0.2 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/sercand/kuberesolver/v4 v4.0.0 // indirect github.com/zhangyunhao116/umap v0.0.0-20221211160557-cb7705fafa39 // indirect go.opentelemetry.io/collector/featuregate v1.0.1 // indirect @@ -153,6 +159,7 @@ require ( require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3 // indirect + github.com/KimMachineGun/automemlimit v0.5.0 github.com/OneOfOne/xxhash v1.2.6 // indirect github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect diff --git a/go.sum b/go.sum index d56dcd1e74..43a47acb98 100644 --- a/go.sum +++ b/go.sum @@ -632,6 +632,8 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/KimMachineGun/automemlimit v0.5.0 h1:BeOe+BbJc8L5chL3OwzVYjVzyvPALdd5wxVVOWuUZmQ= +github.com/KimMachineGun/automemlimit v0.5.0/go.mod h1:di3GCKiu9Y+1fs92erCbUvKzPkNyViN3mA0vti/ykEQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= @@ -749,6 +751,8 @@ github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moA github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.11.0 h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y= +github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs= github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= @@ -764,6 +768,8 @@ github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101 h1:7To3pQ+pZo0i3dsWEbi github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= +github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.4.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -850,6 +856,8 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= +github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= @@ -927,6 +935,7 @@ github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= @@ -1345,6 +1354,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02/go.mod h1:JNdpVEzCpXBgIiv4ds+TzhN1hrtxq6ClLrTlT9OQRSc= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e h1:4cPxUYdgaGzZIT5/j0IfqOrrXmq6bG8AwvwisMXpdrg= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e/go.mod h1:DYR5Eij8rJl8h7gblRrOZ8g0kW1umSpKqYIBTgeDtLo= @@ -1370,6 +1381,8 @@ github.com/ovh/go-ovh v1.4.3 h1:Gs3V823zwTFpzgGLZNI6ILS4rmxZgJwJCz54Er9LwD0= github.com/ovh/go-ovh v1.4.3/go.mod h1:AkPXVtgwB6xlKblMjRKJJmjRp+ogrE7fz2lVgcQY8SY= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=