<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OPSaid – Thanos</title><link>https://opsaid.net/docs/observability/metrics/thanos/</link><description>Recent content in Thanos on OPSaid</description><generator>Hugo -- gohugo.io</generator><atom:link href="https://opsaid.net/docs/observability/metrics/thanos/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Query Frontend</title><link>https://opsaid.net/docs/observability/metrics/thanos/query-frontend/</link><pubDate>Fri, 21 Oct 2022 12:48:13 +0800</pubDate><guid>https://opsaid.net/docs/observability/metrics/thanos/query-frontend/</guid><description>
&lt;h2 id="query-frontend-组件">Query Frontend 组件&lt;/h2>
&lt;p>基于 thanos/v0.28，面向用户层面用于提供查询数据，它是无状态可以进行水平扩展，用于对范围查询与缓存。&lt;/p>
&lt;p>当前仅接口&lt;code>/api/v1/query_range&lt;/code>会经过该组件处理，其他接口请求会直接传递到下游查询组件。&lt;/p>
&lt;h2 id="启动参数">启动参数&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>cache-compression-type&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>对结果集的压缩，支持 &amp;lsquo;snappy&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-address&lt;/td>
&lt;td>0.0.0.0:10902&lt;/td>
&lt;td>监听 HTTP 服务地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-grace-period&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>HTTP服务接收到停止需等待时间，通过配置 context.WithTimeout 的实现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.default-time-range&lt;/td>
&lt;td>24h&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.max-query-parallelism&lt;/td>
&lt;td>14&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.max-retries-per-request&lt;/td>
&lt;td>5&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.partial-response&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>如果未指定partial_response参数，则为标签请求启用部分响应&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.response-cache-config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &lt;code>labels.response-cache-config-file&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.response-cache-config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.response-cache-max-freshness&lt;/td>
&lt;td>1m&lt;/td>
&lt;td>最近允许标签请求的可缓存结果，以防止缓存可能仍在变化中的最近结果&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>labels.split-interval&lt;/td>
&lt;td>24h&lt;/td>
&lt;td>按间隔拆分标签请求并并行执行，标签时应大于0。配置了响应缓存配置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.format&lt;/td>
&lt;td>logfmt&lt;/td>
&lt;td>日志格式，可取值：logfmt、json&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.level&lt;/td>
&lt;td>info&lt;/td>
&lt;td>日志级别&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.request.decision&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>已被废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-frontend.compress-responses&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>压缩HTTP响应&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-frontend.downstream-tripper-config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &lt;code>query-frontend.downstream-tripper-config-file&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-frontend.downstream-tripper-config-file&lt;/td>
&lt;td>TODO；包含downstream tripper的配置，如果是 ‘127.0.0.1’ 则建议 max_idle_conns_per_host 至少配置为100&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-frontend.downstream-url&lt;/td>
&lt;td>&amp;ldquo;http://localhost:9090&amp;rdquo;&lt;/td>
&lt;td>转发至下游兼容 prometheus query api 地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-frontend.forward-header&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>转发至下游的http请求头&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-frontend.log-queries-longer-than&lt;/td>
&lt;td>0&lt;/td>
&lt;td>记录超过配置时间的慢查询，设置0为关闭，设置小于0则开启所有&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-frontend.org-id-header&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>用于标识慢速查询源的请求头名称，将会植入至慢日志&amp;rsquo;org_id&amp;rsquo;字段中，如为配置默认植入的值为&amp;rsquo;anonymous'&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.align-range-with-step&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.max-query-length&lt;/td>
&lt;td>0&lt;/td>
&lt;td>限制查询的时间最大区间范围，设置0为禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.max-query-parallelism&lt;/td>
&lt;td>14&lt;/td>
&lt;td>TODO; 前端将并行计划最大查询范围请求数&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.max-retries-per-request&lt;/td>
&lt;td>5&lt;/td>
&lt;td>TODO; 单个查询范围请求的最大重试次数；除此之外，将返回下游错误&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.partial-response&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>如果未指定partial_response参数，则为查询范围请求启用部分响应&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.request-downsampled&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>在对范围请求的响应为空或不完整的情况下，对下采样数据进行额外查询&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.response-cache-config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &lt;code>query-range.response-cache-config-file&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.response-cache-config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>响应缓存的配置文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.response-cache-max-freshness&lt;/td>
&lt;td>1m&lt;/td>
&lt;td>最近允许查询范围请求的可缓存结果，以防止缓存可能仍在变化中的最近结果&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query-range.split-interval&lt;/td>
&lt;td>24h&lt;/td>
&lt;td>按间隔拆分查询范围请求并并行执行，如果&lt;code>query-range.response-cache-config&lt;/code>配置了，则必须开启&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &lt;code>request.logging-config-file&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO；&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &lt;code>tracing.config-file&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>链路跟踪配置文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.disable-cors&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否禁用跨域，默认允许所有&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="功能特性">功能特性&lt;/h2>
&lt;h3 id="查询分割">查询分割&lt;/h3>
&lt;p>针对一个长查询切割为多个子查询，由启动参数&lt;code>--query-range.split-interval&lt;/code>设定，这有以下几个好处：&lt;/p>
&lt;ol>
&lt;li>保护&amp;rsquo;Query&amp;rsquo;查询组件，如果是比较大的范围查询有可能导致 OOM 发生；&lt;/li>
&lt;li>更好的并行处理；&lt;/li>
&lt;li>更好的负载均衡；&lt;/li>
&lt;/ol>
&lt;h3 id="失败重试">失败重试&lt;/h3>
&lt;p>由启动参数 &lt;code>--query-range.max-retries-per-request&lt;/code> 设定，当HTTP请求查询失败时，会进行最大重试次数；&lt;/p>
&lt;h3 id="查询缓存">查询缓存&lt;/h3>
&lt;p>可以对前端查询的结果进行缓存，以便后续复用它们，如果缓存的结果不完整，将计算所需的子查询，并在下游查询器上并行执行它们。查询前端可以选择将查询与其步骤参数对齐，以提高查询结果的可缓存性。目前支持内存缓存（fifo cache）、memcached和redis。&lt;/p>
&lt;p>以下几种情况将不会缓存：&lt;/p>
&lt;ol>
&lt;li>不对副本去重，如查询开启参数&lt;code>dedup=false&lt;/code>；&lt;/li>
&lt;li>开启查询指定存储过滤，Enable Store Filtering；&lt;/li>
&lt;li>下游查询组件设置了&amp;quot;Cache-Control=no-store&amp;quot;头；&lt;/li>
&lt;/ol>
&lt;h3 id="开启慢日志">开启慢日志&lt;/h3>
&lt;p>由启动参数 &lt;code>--query-frontend.log-queries-longer-than&lt;/code> 设置最大允许时间，超过则记录。&lt;/p></description></item><item><title>Docs: Query</title><link>https://opsaid.net/docs/observability/metrics/thanos/query/</link><pubDate>Thu, 20 Oct 2022 21:55:27 +0800</pubDate><guid>https://opsaid.net/docs/observability/metrics/thanos/query/</guid><description>
&lt;h2 id="query-组件">Query 组件&lt;/h2>
&lt;p>基于 thanos 0.28.1&lt;/p>
&lt;h2 id="启动参数">启动参数&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>alert.query-url&lt;/td>
&lt;td>-&lt;/td>
&lt;td>外部可访问的 Thanos Query URL 地址，以便在告警时可以在 &amp;lsquo;Source&amp;rsquo; 字段中展示&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enable-feature&lt;/td>
&lt;td>query-pushdown&lt;/td>
&lt;td>TODO；&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>endpoint&lt;/td>
&lt;td>-&lt;/td>
&lt;td>Thanos API servers 的地址，可以重复多个，支持 &amp;lsquo;dns+&amp;rsquo; 或 &amp;lsquo;dnssrv+&amp;rsquo; 协议自动发现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>endpoint-strict&lt;/td>
&lt;td>-&lt;/td>
&lt;td>同上，明确的地址，不管是否健康探测失败&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-address&lt;/td>
&lt;td>0.0.0.0:10901&lt;/td>
&lt;td>gRPC服务 StoreAPI 监听的地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-client-server-name&lt;/td>
&lt;td>-&lt;/td>
&lt;td>grpc认证&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-client-tls-ca&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-client-tls-cert&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-client-tls-key&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-client-tls-secure&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-client-tls-skip-verify&lt;/td>
&lt;td>-&lt;/td>
&lt;td>跳过CA验证，一般在自签证书情况下忽略ca验证&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-grace-period&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>gRPC服务接收到停止需等待时间，通过配置 context.WithTimeout 的实现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-max-connection-age&lt;/td>
&lt;td>60m&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-cert&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否开启tls认证，为空表示禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-client-ca&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TLS CA，为空表示不对客户端验证&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-key&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否开启tls认证，为空表示禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-address&lt;/td>
&lt;td>0.0.0.0:10902&lt;/td>
&lt;td>监听 HTTP 服务地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-grace-period&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>HTTP服务接收到停止需等待时间，通过配置 context.WithTimeout 的实现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.format&lt;/td>
&lt;td>logfmt&lt;/td>
&lt;td>日志格式，可取值：logfmt、json&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.level&lt;/td>
&lt;td>info&lt;/td>
&lt;td>日志级别&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.request.decision&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>已被废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.active-query-path&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.auto-downsampling&lt;/td>
&lt;td>-&lt;/td>
&lt;td>如果未指定max_source_resolution参数，则启用自动调整（step/5）以确定存储网关中应使用的数据源&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.default-evaluation-interval&lt;/td>
&lt;td>1m&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.default-step&lt;/td>
&lt;td>1s&lt;/td>
&lt;td>在 range 查询的默认步长，仅当未在UI上配置时生效。不支持在grafana使用，grafana可支持 __step 变量&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.lookback-delta&lt;/td>
&lt;td>5m&lt;/td>
&lt;td>当持续存在的指标，后端突然不在返回，需保持原先值的一段时间，比如关闭数据采集需等待这个时间才会看到没有数据&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.max-concurrent&lt;/td>
&lt;td>20&lt;/td>
&lt;td>TODO; 最大的查询处理请求&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.max-concurrent-select&lt;/td>
&lt;td>4&lt;/td>
&lt;td>TODO; 最大的 select 查询请求&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.metadata.default-time-range&lt;/td>
&lt;td>0s&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.partial-response&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.replica-label&lt;/td>
&lt;td>-&lt;/td>
&lt;td>用于标识副本的标签，查询的结果集会移除这些标签&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.timeout&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>最大查询处理时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO；&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO；&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>selector-label&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO；标签名与值，会自动带到 endpoint 指定的查询地址，可配置多个&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>store&lt;/td>
&lt;td>-&lt;/td>
&lt;td>被废弃，由 endpoint 代替&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>store-strict&lt;/td>
&lt;td>-&lt;/td>
&lt;td>被废弃，由 &lt;code>endpoint-strict&lt;/code> 代替&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>store.response-timeout&lt;/td>
&lt;td>0ms&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>store.sd-dns-interval&lt;/td>
&lt;td>30s&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>store.sd-files&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>store.sd-interval&lt;/td>
&lt;td>5m&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>store.unhealthy-timeout&lt;/td>
&lt;td>5m&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.disable-cors&lt;/td>
&lt;td>-&lt;/td>
&lt;td>是否禁止跨域，默认是允许&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.external-prefix&lt;/td>
&lt;td>-&lt;/td>
&lt;td>静态资源在html中的前缀&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.prefix-header&lt;/td>
&lt;td>-&lt;/td>
&lt;td>功能同上，根据http请求头去设置前缀，不能与上面同时使用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.route-prefix&lt;/td>
&lt;td>-&lt;/td>
&lt;td>接口前缀&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Docs: Receiver</title><link>https://opsaid.net/docs/observability/metrics/thanos/receiver/</link><pubDate>Sat, 08 Oct 2022 15:31:20 +0800</pubDate><guid>https://opsaid.net/docs/observability/metrics/thanos/receiver/</guid><description>
&lt;h2 id="参数解析">参数解析&lt;/h2>
&lt;h3 id="启动参数">启动参数&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>grpc-address&lt;/td>
&lt;td>0.0.0.0:10901&lt;/td>
&lt;td>gRPC服务 StoreAPI 监听的地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-grace-period&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>gRPC服务接收到停止需等待时间，通过配置 context.WithTimeout 的实现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-max-connection-age&lt;/td>
&lt;td>60m&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-cert&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否开启tls认证，为空表示禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-client-ca&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TLS CA，为空表示不对客户端验证&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-key&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否开启tls认证，为空表示禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>hash-func&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO; 如：&amp;quot;&amp;quot;, &amp;ldquo;SHA256&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-address&lt;/td>
&lt;td>0.0.0.0:10902&lt;/td>
&lt;td>监听 HTTP 服务地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-grace-period&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>HTTP服务接收到停止需等待时间，通过配置 context.WithTimeout 的实现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO; http的配置，用于开启TLS、认证等&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>label&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>格式：=&amp;quot;&amp;quot;，植入标签，用于标识&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.format&lt;/td>
&lt;td>logfmt&lt;/td>
&lt;td>日志格式，可取值：logfmt、json&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.level&lt;/td>
&lt;td>info&lt;/td>
&lt;td>日志级别&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>objstore.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 ‘objstore.config-file’ 对象存储地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>objstore.config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>对象存储地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.default-tenant-id&lt;/td>
&lt;td>default-tenant&lt;/td>
&lt;td>如果未设置租户ID，则以此为默认值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.hashrings&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;receive.hashrings-file&amp;rsquo;，优先级高&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.hashrings-algorithm&lt;/td>
&lt;td>hashmod&lt;/td>
&lt;td>用于 hashrings 算法，可取：hashmod, ketama&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.hashrings-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.hashrings-file-refresh-interval&lt;/td>
&lt;td>5m&lt;/td>
&lt;td>刷新 hashrings-file 指向文件的时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.local-endpoint&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>在hashring文件列表配置的所有地址，指明哪个为该节点，如果为空且配置了hashring则开启&amp;quot;RoutingOnly&amp;quot;模式&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.relabel-config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;receive.relabel-config-file&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.relabel-config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.replica-header&lt;/td>
&lt;td>THANOS-REPLICA&lt;/td>
&lt;td>TODO; 用于表示副本数的HTTP请求头&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.replication-factor&lt;/td>
&lt;td>1&lt;/td>
&lt;td>TODO; int((h.options.ReplicationFactor / 2) + 1)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.tenant-certificate-field&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>使用 tls 证书中的属性表示租户，必须是 organization, organizationalUnit or commonName 之一，优先级高于 receive.tenant-header&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.tenant-header&lt;/td>
&lt;td>THANOS-TENANT&lt;/td>
&lt;td>HTTP请求头，值代表写入的租户&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>receive.tenant-label-name&lt;/td>
&lt;td>tenant_id&lt;/td>
&lt;td>植入到指标里租户的标签名&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.address&lt;/td>
&lt;td>0.0.0.0:19291&lt;/td>
&lt;td>用于 remote write 的http服务地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.client-server-name&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.client-tls-ca&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>用于验证客户端&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.client-tls-cert&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>同上&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.client-tls-key&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>同上&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.server-tls-cert&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>用于 remote write 服务是否开启tls，为空表示关闭&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.server-tls-key&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>同上&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.server-tls-client-ca&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>用于验证客户端，未配置则不开启&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;request.logging-config-file&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;rsquo;tracing.config-file&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.allow-overlapping-blocks&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.max-exemplars&lt;/td>
&lt;td>0&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.no-lockfile&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.path&lt;/td>
&lt;td>./data&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.retention&lt;/td>
&lt;td>15d&lt;/td>
&lt;td>性能数据保留的时间，设置0表示不过期&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.wal-compression&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否压缩 wal&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;ul>
&lt;li>隐藏参数&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>receive-forward-timeout&lt;/td>
&lt;td>5s&lt;/td>
&lt;td>转发的超时时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.min-block-duration&lt;/td>
&lt;td>2h&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.max-block-duration&lt;/td>
&lt;td>2h&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>shipper.ignore-unequal-block-size&lt;/td>
&lt;td>false&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>shipper.allow-out-of-order-uploads&lt;/td>
&lt;td>false&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="两种模式">两种模式&lt;/h2>
&lt;h3 id="routing-receiver">Routing Receiver&lt;/h3>
&lt;p>在启动参数不配置以下时，为该模式，仅做流量转发&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>--receive.local-endpoint&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>RECEIVE.LOCAL-ENDPOINT
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>该模式需明确指定&lt;code>--receive.hashrings-file&lt;/code>参数。&lt;/p>
&lt;/blockquote>
&lt;h3 id="ingesting-receiver">Ingesting Receiver&lt;/h3>
&lt;p>在启动参数不配置以下时，为该模式，仅做数据存储&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>--receive.hashrings-file&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&amp;lt;path&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>该模式需明确指定&lt;code>--receive.local-endpoint&lt;/code>参数。&lt;/p>
&lt;/blockquote>
&lt;h3 id="routeringestor">RouterIngestor&lt;/h3>
&lt;p>既是Routing也是Ingesting&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>// determineMode returns the ReceiverMode that this receiver is configured to run in.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// This is used to configure this Receiver&lt;span style="color:#4e9a06">&amp;#39;s forwarding and ingesting behavior at runtime.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">func (rc *receiveConfig) determineMode() receive.ReceiverMode {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> // Has the user provided some kind of hashring configuration?
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> hashringSpecified := rc.hashringsFileContent != &amp;#34;&amp;#34; || rc.hashringsFilePath != &amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> // Has the user specified the --receive.local-endpoint flag?
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> localEndpointSpecified := rc.endpoint != &amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> switch {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> case hashringSpecified &amp;amp;&amp;amp; localEndpointSpecified:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> return receive.RouterIngestor
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> case hashringSpecified &amp;amp;&amp;amp; !localEndpointSpecified:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> // Be careful - if the hashring contains an address that routes to itself and does not specify a local
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> // endpoint - you&amp;#39;&lt;/span>ve just created an infinite loop / fork bomb :&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> receive.RouterOnly
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> default:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // hashring configuration has not been provided so we ingest all metrics locally.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> receive.IngestorOnly
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Config</title><link>https://opsaid.net/docs/observability/metrics/thanos/config/</link><pubDate>Thu, 29 Sep 2022 15:47:36 +0800</pubDate><guid>https://opsaid.net/docs/observability/metrics/thanos/config/</guid><description>
&lt;h2 id="公共资源配置">公共资源配置&lt;/h2>
&lt;h2 id="alertmanagers">alertmanagers&lt;/h2>
&lt;h3 id="配置实例">配置实例&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>alertmanagers:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- http_config:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> basic_auth:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> username: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> password: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> password_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> bearer_token: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> bearer_token_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> proxy_url: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tls_config:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ca_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cert_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> key_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> server_name: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> insecure_skip_verify: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> static_configs: &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> file_sd_configs:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - files: &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> refresh_interval: 0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> scheme: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> path_prefix: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> timeout: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> api_version: v2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="数据结构">数据结构&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> AlertingConfig struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Alertmanagers &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>AlertmanagerConfig &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;alertmanagers&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// AlertmanagerConfig represents a client to a cluster of Alertmanager endpoints.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> AlertmanagerConfig struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> HTTPClientConfig httpconfig.ClientConfig &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;http_config&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> EndpointsConfig httpconfig.EndpointsConfig &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;,inline&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Timeout model.Duration &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;timeout&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> APIVersion APIVersion &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;api_version&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>httpconfig.ClientConfig&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>// ClientConfig configures an HTTP client.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> ClientConfig struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // The HTTP basic authentication credentials &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> BasicAuth BasicAuth &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;basic_auth&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // The bearer token &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> BearerToken string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;bearer_token&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // The bearer token file &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> BearerTokenFile string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;bearer_token_file&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // HTTP proxy server to use to connect to the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ProxyURL string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;proxy_url&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // TLSConfig to use to connect to the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> TLSConfig TLSConfig &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;tls_config&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // TransportConfig &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> Client transport properties
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> TransportConfig TransportConfig &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;transport_config&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // ClientMetrics contains metrics that will be used to instrument
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // the client that will be created with this config.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ClientMetrics *extpromhttp.ClientMetrics &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;-&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// BasicAuth configures basic authentication &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> HTTP clients.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> BasicAuth struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Username string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;username&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Password string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;password&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> PasswordFile string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;password_file&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// TLSConfig configures TLS connections.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> TLSConfig struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // The CA cert to use &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> CAFile string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;ca_file&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // The client cert file &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> CertFile string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;cert_file&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // The client key file &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> the targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> KeyFile string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;key_file&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // Used to verify the hostname &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> the targets. See https://tools.ietf.org/html/rfc4366#section-3.1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ServerName string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;server_name&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // Disable target certificate validation.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> InsecureSkipVerify bool &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;insecure_skip_verify&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// Transport configures client&lt;span style="color:#a40000">&amp;#39;&lt;/span>s transport properties.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> TransportConfig struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> MaxIdleConns int &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;max_idle_conns&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> MaxIdleConnsPerHost int &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;max_idle_conns_per_host&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> IdleConnTimeout int64 &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;idle_conn_timeout&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ResponseHeaderTimeout int64 &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;response_header_timeout&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ExpectContinueTimeout int64 &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;expect_continue_timeout&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> MaxConnsPerHost int &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;max_conns_per_host&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> DisableCompression bool &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;disable_compression&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> TLSHandshakeTimeout int64 &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;tls_handshake_timeout&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>httpconfig.EndpointsConfig&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>// EndpointsConfig configures a cluster of HTTP endpoints from static addresses and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// file service discovery.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> EndpointsConfig struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // List of addresses with DNS prefixes.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> StaticAddresses &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;static_configs&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // List of file configurations &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>our FileSD supports different DNS lookups&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> FileSDConfigs &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>FileSDConfig &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;file_sd_configs&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // The URL scheme to use when talking to targets.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Scheme string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;scheme&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> // Path prefix to add in front of the endpoint path.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> PathPrefix string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;path_prefix&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// FileSDConfig represents a file service discovery configuration.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">type&lt;/span> FileSDConfig struct &lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Files &lt;span style="color:#ce5c00;font-weight:bold">[]&lt;/span>string &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;files&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> RefreshInterval model.Duration &lt;span style="color:#4e9a06">`&lt;/span>yaml:&lt;span style="color:#4e9a06">&amp;#34;refresh_interval&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="objstore">objstore&lt;/h2>
&lt;h3 id="配置示例">配置示例&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>type: S3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>config:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> bucket: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> endpoint: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> region: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> aws_sdk_auth: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> access_key: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> insecure: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> signature_version2: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> secret_key: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> put_user_metadata: &lt;span style="color:#ce5c00;font-weight:bold">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> http_config:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> idle_conn_timeout: 1m30s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> response_header_timeout: 2m
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> insecure_skip_verify: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tls_handshake_timeout: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> expect_continue_timeout: 1s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max_idle_conns: &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max_idle_conns_per_host: &lt;span style="color:#0000cf;font-weight:bold">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> max_conns_per_host: &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tls_config:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ca_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cert_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> key_file: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> server_name: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> insecure_skip_verify: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> disable_compression: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> trace:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> enable: &lt;span style="color:#204a87">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> list_objects_version: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> bucket_lookup_type: auto
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> part_size: &lt;span style="color:#0000cf;font-weight:bold">67108864&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sse_config:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> type: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kms_key_id: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kms_encryption_context: &lt;span style="color:#ce5c00;font-weight:bold">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> encryption_key: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sts_endpoint: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>prefix: &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="数据结构-1">数据结构&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">FILESYSTEM&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;FILESYSTEM&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">GCS&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;GCS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">S3&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;S3&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AZURE&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;AZURE&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SWIFT&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SWIFT&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">COS&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;COS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ALIYUNOSS&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;ALIYUNOSS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">BOS&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;BOS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">BucketConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Type&lt;/span> &lt;span style="color:#000">ObjProvider&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;type&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">interface&lt;/span>&lt;span style="color:#000;font-weight:bold">{}&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Prefix&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;prefix&amp;#34; default:&amp;#34;&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ObjProvider 为 FILESYSTEM 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Config stores the configuration for storing and accessing blobs in filesystem.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Directory&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;directory&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ObjProvider 为 S3 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Config stores the configuration for s3 bucket.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Bucket&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;bucket&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Endpoint&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;endpoint&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Region&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;region&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AWSSDKAuth&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;aws_sdk_auth&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AccessKey&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;access_key&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Insecure&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;insecure&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SignatureV2&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;signature_version2&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SecretKey&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;secret_key&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">PutUserMetadata&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;put_user_metadata&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">HTTPConfig&lt;/span> &lt;span style="color:#000">HTTPConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;http_config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">TraceConfig&lt;/span> &lt;span style="color:#000">TraceConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;trace&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ListObjectsVersion&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;list_objects_version&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">BucketLookupType&lt;/span> &lt;span style="color:#000">BucketLookupType&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;bucket_lookup_type&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// PartSize used for multipart upload. Only used if uploaded object size is known and larger than configured PartSize.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// NOTE we need to make sure this number does not produce more parts than 10 000.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">PartSize&lt;/span> &lt;span style="color:#204a87;font-weight:bold">uint64&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;part_size&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SSEConfig&lt;/span> &lt;span style="color:#000">SSEConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sse_config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">STSEndpoint&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sts_endpoint&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ObjProvider 为 COS 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Config encapsulates the necessary config values to instantiate an cos client.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Bucket&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;bucket&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Region&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;region&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AppId&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;app_id&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Endpoint&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;endpoint&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SecretKey&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;secret_key&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SecretId&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;secret_id&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">HTTPConfig&lt;/span> &lt;span style="color:#000">HTTPConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;http_config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ObjProvider 为 ALIYUNOSS 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Config stores the configuration for oss bucket.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Endpoint&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;endpoint&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Bucket&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;bucket&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AccessKeyID&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;access_key_id&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AccessKeySecret&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;access_key_secret&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="queryconfig">query.config&lt;/h2>
&lt;h3 id="配置示例-1">配置示例&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#204a87;font-weight:bold">http_config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">basic_auth&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">username&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">password&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">password_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">bearer_token&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">bearer_token_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">proxy_url&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tls_config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">ca_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">cert_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">key_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">server_name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">insecure_skip_verify&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">static_configs&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">file_sd_configs&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">files&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">refresh_interval&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">scheme&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">http&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">path_prefix&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="数据结构-2">数据结构&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">var&lt;/span> &lt;span style="color:#000">queryCfg&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#000">httpconfig&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">var&lt;/span> &lt;span style="color:#000">err&lt;/span> &lt;span style="color:#204a87;font-weight:bold">error&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#204a87">len&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">conf&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">queryConfigYAML&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">queryCfg&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">err&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#000">httpconfig&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">LoadConfigs&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">conf&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">queryConfigYAML&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000">err&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#204a87;font-weight:bold">nil&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> &lt;span style="color:#000">err&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>httpconfig.Config&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Config is a structure that allows pointing to various HTTP endpoint, e.g ruler connecting to queriers.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">HTTPClientConfig&lt;/span> &lt;span style="color:#000">ClientConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;http_config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">EndpointsConfig&lt;/span> &lt;span style="color:#000">EndpointsConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;,inline&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>其中 ClientConfig 如上。&lt;/p>
&lt;h2 id="remote-writeconfig">remote-write.config&lt;/h2>
&lt;h3 id="配置示例-2">配置示例&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">remote_write&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>- &lt;span style="color:#204a87;font-weight:bold">url&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">http://10.59.107.169:19291/api/v1/receive&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">thanos-receiver&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="数据结构-3">数据结构&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">var&lt;/span> &lt;span style="color:#000">rwCfg&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">RemoteWriteConfigs&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#000">config&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RemoteWriteConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;remote_write,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>config.RemoteWriteConfig&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// RemoteWriteConfig is the configuration for writing to remote storage.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">RemoteWriteConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">URL&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#000">config&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">URL&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;url&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">RemoteTimeout&lt;/span> &lt;span style="color:#000">model&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;remote_timeout,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Headers&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;headers,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">WriteRelabelConfigs&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#000">relabel&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;write_relabel_configs,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Name&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;name,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SendExemplars&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;send_exemplars,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// We cannot do proper Go type embedding below as the parser will then parse
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// values arbitrarily into the overflow maps of further-down types.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">HTTPClientConfig&lt;/span> &lt;span style="color:#000">config&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">HTTPClientConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;,inline&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">QueueConfig&lt;/span> &lt;span style="color:#000">QueueConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;queue_config,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">MetadataConfig&lt;/span> &lt;span style="color:#000">MetadataConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;metadata_config,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SigV4Config&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#000">sigv4&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">SigV4Config&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sigv4,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="requestlogging-config">request.logging-config&lt;/h2>
&lt;h3 id="配置示例-3">配置示例&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">http&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">path&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">/api/v1/query&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">port&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10904&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">options&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">level&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">DEBUG&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">decision&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">log_start&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">log_end&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">grpc&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">service&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">thanos.Store&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">method&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Info&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">options&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">level&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">ERROR&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">decision&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">log_start&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">log_end&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="数据结构-4">数据结构&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">RequestConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">HTTP&lt;/span> &lt;span style="color:#000">HTTPProtocolConfigs&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;http&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">GRPC&lt;/span> &lt;span style="color:#000">GRPCProtocolConfigs&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;grpc&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Options&lt;/span> &lt;span style="color:#000">OptionsConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;options&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">HTTPProtocolConfigs&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Options&lt;/span> &lt;span style="color:#000">OptionsConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;options&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#000">HTTPProtocolConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">GRPCProtocolConfigs&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Options&lt;/span> &lt;span style="color:#000">OptionsConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;options&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#000">GRPCProtocolConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">OptionsConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Level&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;level&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Decision&lt;/span> &lt;span style="color:#000">DecisionConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;decision&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">DecisionConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">LogStart&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;log_start&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">LogEnd&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;log_end&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">HTTPProtocolConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Path&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;path&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Port&lt;/span> &lt;span style="color:#204a87;font-weight:bold">uint64&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;port&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">GRPCProtocolConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Service&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;service&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Method&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;method&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="tracingconfig">tracing.config&lt;/h2>
&lt;h3 id="配置示例-4">配置示例&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">JAEGER&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">service_name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">disabled&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">rpc_metrics&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tags&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sampler_type&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sampler_param&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sampler_manager_host_port&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sampler_max_operations&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sampler_refresh_interval&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">reporter_max_queue_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">reporter_flush_interval&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">reporter_log_spans&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">endpoint&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">user&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">password&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">agent_host&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">agent_port&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">traceid_128bit&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="数据结构-5">数据结构&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">TracingProvider&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Stackdriver&lt;/span> &lt;span style="color:#000">TracingProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;STACKDRIVER&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">GoogleCloud&lt;/span> &lt;span style="color:#000">TracingProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;GOOGLE_CLOUD&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Jaeger&lt;/span> &lt;span style="color:#000">TracingProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;JAEGER&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ElasticAPM&lt;/span> &lt;span style="color:#000">TracingProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;ELASTIC_APM&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Lightstep&lt;/span> &lt;span style="color:#000">TracingProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;LIGHTSTEP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">TracingConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Type&lt;/span> &lt;span style="color:#000">TracingProvider&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;type&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">interface&lt;/span>&lt;span style="color:#000;font-weight:bold">{}&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>TracingProvider 为 Jaeger 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Config - YAML configuration. For details see to https://github.com/jaegertracing/jaeger-client-go#environment-variables.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ServiceName&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;service_name&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Disabled&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;disabled&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">RPCMetrics&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;rpc_metrics&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Tags&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;tags&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SamplerType&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sampler_type&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SamplerParam&lt;/span> &lt;span style="color:#204a87;font-weight:bold">float64&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sampler_param&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SamplerManagerHostPort&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sampler_manager_host_port&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SamplerMaxOperations&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sampler_max_operations&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SamplerRefreshInterval&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;sampler_refresh_interval&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ReporterMaxQueueSize&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;reporter_max_queue_size&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ReporterFlushInterval&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;reporter_flush_interval&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">ReporterLogSpans&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;reporter_log_spans&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Endpoint&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;endpoint&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">User&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;user&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Password&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;password&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AgentHost&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;agent_host&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AgentPort&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;agent_port&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Gen128Bit&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;traceid_128bit&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="cacheconf">cache.conf&lt;/h2>
&lt;h3 id="配置示例-5">配置示例&lt;/h3>
&lt;ul>
&lt;li>memory&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">IN-MEMORY&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_size_items&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">validity&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>memcached&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">MEMCACHED&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">addresses&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">timeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_idle_connections&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_async_concurrency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_async_buffer_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_get_multi_concurrency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_item_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_get_multi_batch_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">dns_provider_update_interval&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">auto_discovery&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">expiration&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>redis&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">REDIS&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">addr&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">username&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">password&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">db&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">dial_timeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">5s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">read_timeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">3s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">write_timeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">3s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">pool_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">100&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">min_idle_conns&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">idle_timeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">5m0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_conn_age&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_get_multi_concurrency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">100&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">get_multi_batch_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">100&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">max_set_multi_concurrency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">100&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">set_multi_batch_size&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">100&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tls_enabled&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tls_config&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">ca_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">cert_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">key_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">server_name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">insecure_skip_verify&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">expiration&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">24h0m0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="数据结构-6">数据结构&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">ResponseCacheProvider&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">const&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">INMEMORY&lt;/span> &lt;span style="color:#000">ResponseCacheProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;IN-MEMORY&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">MEMCACHED&lt;/span> &lt;span style="color:#000">ResponseCacheProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;MEMCACHED&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">REDIS&lt;/span> &lt;span style="color:#000">ResponseCacheProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;REDIS&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// CacheProviderConfig is the initial CacheProviderConfig struct holder before parsing it into a specific cache provider.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Based on the config type the config is then parsed into a specific cache provider.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">CacheProviderConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Type&lt;/span> &lt;span style="color:#000">ResponseCacheProvider&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;type&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Config&lt;/span> &lt;span style="color:#204a87;font-weight:bold">interface&lt;/span>&lt;span style="color:#000;font-weight:bold">{}&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;config&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ResponseCacheProvider 为 IN-MEMORY 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// InMemoryResponseCacheConfig holds the configs for the in-memory cache provider.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">InMemoryResponseCacheConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// MaxSize represents overall maximum number of bytes cache can contain.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MaxSize&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;max_size&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// MaxSizeItems represents the maximum number of entries in the cache.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MaxSizeItems&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;max_size_items&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Validity represents the expiry duration for the cache.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Validity&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;validity&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ResponseCacheProvider 为 MEMCACHED 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// MemcachedResponseCacheConfig holds the configs for the memcache cache provider.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">MemcachedResponseCacheConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Memcached&lt;/span> &lt;span style="color:#000">cacheutil&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">MemcachedClientConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;,inline&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Expiration sets a global expiration limit for all cached items.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Expiration&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;expiration&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ResponseCacheProvider 为 REDIS 的 Config&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// RedisResponseCacheConfig holds the configs for the redis cache provider.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">RedisResponseCacheConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">Redis&lt;/span> &lt;span style="color:#000">cacheutil&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RedisClientConfig&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;,inline&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Expiration sets a global expiration limit for all cached items.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Expiration&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;expiration&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// RedisClientConfig is the config accepted by RedisClient.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">RedisClientConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Addr specifies the addresses of redis server.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Addr&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;addr&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Use the specified Username to authenticate the current connection
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// with one of the connections defined in the ACL list when connecting
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// to a Redis 6.0 instance, or greater, that is using the Redis ACL system.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Username&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;username&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Optional password. Must match the password specified in the
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// requirepass server configuration option (if connecting to a Redis 5.0 instance, or lower),
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// or the User Password when connecting to a Redis 6.0 instance, or greater,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// that is using the Redis ACL system.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Password&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;password&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// DB Database to be selected after connecting to the server.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">DB&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;db&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// DialTimeout specifies the client dial timeout.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">DialTimeout&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;dial_timeout&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ReadTimeout specifies the client read timeout.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ReadTimeout&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;read_timeout&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// WriteTimeout specifies the client write timeout.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">WriteTimeout&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;write_timeout&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Maximum number of socket connections.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">PoolSize&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;pool_size&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// MinIdleConns specifies the minimum number of idle connections which is useful when establishing
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// new connection is slow.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MinIdleConns&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;min_idle_conns&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Amount of time after which client closes idle connections.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Should be less than server&amp;#39;s timeout.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// -1 disables idle timeout check.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">IdleTimeout&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;idle_timeout&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Connection age at which client retires (closes) the connection.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Default 0 is to not close aged connections.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MaxConnAge&lt;/span> &lt;span style="color:#000">time&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;max_conn_age&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// MaxGetMultiConcurrency specifies the maximum number of concurrent GetMulti() operations.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// If set to 0, concurrency is unlimited.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MaxGetMultiConcurrency&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;max_get_multi_concurrency&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// GetMultiBatchSize specifies the maximum size per batch for mget.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">GetMultiBatchSize&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;get_multi_batch_size&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// MaxSetMultiConcurrency specifies the maximum number of concurrent SetMulti() operations.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// If set to 0, concurrency is unlimited.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MaxSetMultiConcurrency&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;max_set_multi_concurrency&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// SetMultiBatchSize specifies the maximum size per batch for pipeline set.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">SetMultiBatchSize&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int&lt;/span> &lt;span style="color:#4e9a06">`yaml:&amp;#34;set_multi_batch_size&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Rule</title><link>https://opsaid.net/docs/observability/metrics/thanos/rule/</link><pubDate>Tue, 27 Sep 2022 10:14:03 +0800</pubDate><guid>https://opsaid.net/docs/observability/metrics/thanos/rule/</guid><description>
&lt;h2 id="rule-组件">Rule 组件&lt;/h2>
&lt;p>基于版本 thanos-0.27.0 说明&lt;/p>
&lt;h2 id="参数解析">参数解析&lt;/h2>
&lt;h3 id="命令行参数">命令行参数&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>alert.label-drop&lt;/td>
&lt;td>-&lt;/td>
&lt;td>发送至 alertmanager 组件需要丢弃的标签，一般用于丢弃多副本的标签，如：replica&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alert.query-url&lt;/td>
&lt;td>-&lt;/td>
&lt;td>外部可访问的 Thanos Query URL 地址，以便在告警时可以在 &amp;lsquo;Source&amp;rsquo; 字段中展示&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alert.relabel-config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>功能同 &amp;lsquo;alert.relabel-config-file&amp;rsquo;，但这里直接添加YAML内容&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alert.relabel-config-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>同上&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alertmanagers.config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>功能同 &amp;lsquo;alertmanagers.config-file&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alertmanagers.config-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>连接的 alertmanager 组件配置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alertmanagers.sd-dns-interval&lt;/td>
&lt;td>30s&lt;/td>
&lt;td>alertmanager 组件地址通过 dns 协议发现的刷新时间间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alertmanagers.send-timeout&lt;/td>
&lt;td>10s&lt;/td>
&lt;td>发送 alertmanager 组件超时时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alertmanagers.url&lt;/td>
&lt;td>-&lt;/td>
&lt;td>alertmanager 组件地址，可支持协议：http、dns+、dnssrv+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>data-dir&lt;/td>
&lt;td>data/&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>eval-interval&lt;/td>
&lt;td>1m&lt;/td>
&lt;td>默认告警规则评估时间间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-address&lt;/td>
&lt;td>0.0.0.0:10901&lt;/td>
&lt;td>gRPC服务 StoreAPI 监听的地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-grace-period&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>gRPC服务接收到停止需等待时间，通过配置 context.WithTimeout 的实现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-cert&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否开启tls认证，为空表示禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-client-ca&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TLS CA，为空表示不对客户端验证&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>grpc-server-tls-key&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否开启tls认证，为空表示禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>hash-func&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO; 如：&amp;quot;&amp;quot;, &amp;ldquo;SHA256&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-address&lt;/td>
&lt;td>0.0.0.0:10902&lt;/td>
&lt;td>监听 HTTP 服务地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-grace-period&lt;/td>
&lt;td>2m&lt;/td>
&lt;td>HTTP服务接收到停止需等待时间，通过配置 context.WithTimeout 的实现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO; http的配置，用于开启TLS、认证等&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>label&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>格式：&lt;name>=&amp;quot;&lt;value>&amp;quot;，植入标签，用于标识&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.format&lt;/td>
&lt;td>logfmt&lt;/td>
&lt;td>日志格式，可取值：logfmt、json&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.level&lt;/td>
&lt;td>info&lt;/td>
&lt;td>日志级别&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log.request.decision&lt;/td>
&lt;td>-&lt;/td>
&lt;td>已被废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>objstore.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;objstore.config-file&amp;rsquo; 对象存储地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>objstore.config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>对象存储地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>用于查询指标的地址，可支持协议：http、dns+、dnssrv+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;query&amp;rsquo;、&amp;lsquo;query.config-file&amp;rsquo;，优先级最高&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;query&amp;rsquo;、&amp;lsquo;query.config&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.http-method&lt;/td>
&lt;td>POST&lt;/td>
&lt;td>查询请求的HTTP方法，支持：GET、POST&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.sd-dns-interval&lt;/td>
&lt;td>30s&lt;/td>
&lt;td>query 组件地址通过 dns 协议发现的刷新时间间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.sd-files&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>基于文件形式的自动发现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query.sd-interval&lt;/td>
&lt;td>5m&lt;/td>
&lt;td>刷新基于文件形式的自动发现的时间间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>写入数据至远程，rule 组件本地不会存储任何数据&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>remote-write.config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;remote-write.config&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>请求日志配置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request.logging-config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;lsquo;request.logging-config&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>resend-delay&lt;/td>
&lt;td>1m&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>rule-file&lt;/td>
&lt;td>rules/&lt;/td>
&lt;td>告警规则目录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>shipper.upload-compacted&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO; 一般用于迁移目的，首次开启后需关闭&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>opentracing 组件配置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tracing.config-file&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>功能同 &amp;rsquo;tracing.config&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.block-duration&lt;/td>
&lt;td>2h&lt;/td>
&lt;td>TSDB 块时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.no-lockfile&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>不创建tsdb lockfile 文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.retention&lt;/td>
&lt;td>48h&lt;/td>
&lt;td>tsdb 最大持久时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tsdb.wal-compression&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否对 tsdb 的 WAL 文件压缩&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.disable-cors&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>是否禁止 CORS，默认允许&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.external-prefix&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>HTML页面上添加的URL前缀，默认为 &amp;lsquo;/&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.prefix-header&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>web.route-prefix&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>API接口上添加的URL前缀，默认为&amp;rsquo;/&amp;rsquo;，一般同时更改 &amp;lsquo;web.external-prefix&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item></channel></rss>