Skip to content

Commit a878b46

Browse files
authored
Merge pull request #166 from yeya24/qf-new-flags
Add new flags and memcached support to query frontend
2 parents 4aa6ed6 + 2216a61 commit a878b46

File tree

3 files changed

+92
-15
lines changed

3 files changed

+92
-15
lines changed

all.jsonnet

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,24 @@ local qf = t.queryFrontend(commonConfig {
114114
maxRetries: 10,
115115
logQueriesLongerThan: '10s',
116116
serviceMonitor: true,
117+
queryRangeCache: {
118+
type: 'memcached',
119+
config+: {
120+
// NOTICE: <MEMCACHED_SERCIVE> is a placeholder to generate examples.
121+
// List of memcached addresses, that will get resolved with the DNS service discovery provider.
122+
// For DNS service discovery reference https://thanos.io/service-discovery.md/#dns-service-discovery
123+
addresses: ['dnssrv+_client._tcp.<MEMCACHED_SERCIVE>.%s.svc.cluster.local' % commonConfig.namespace],
124+
},
125+
},
126+
labelsCache: {
127+
type: 'memcached',
128+
config+: {
129+
// NOTICE: <MEMCACHED_SERCIVE> is a placeholder to generate examples.
130+
// List of memcached addresses, that will get resolved with the DNS service discovery provider.
131+
// For DNS service discovery reference https://thanos.io/service-discovery.md/#dns-service-discovery
132+
addresses: ['dnssrv+_client._tcp.<MEMCACHED_SERCIVE>.%s.svc.cluster.local' % commonConfig.namespace],
133+
},
134+
},
117135
});
118136

119137
{ ['thanos-bucket-' + name]: b[name] for name in std.objectFields(b) } +

examples/all/manifests/thanos-query-frontend-deployment.yaml

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,34 @@ spec:
4444
- --http-address=0.0.0.0:9090
4545
- --query-frontend.downstream-url=http://thanos-query.thanos.svc.cluster.local.:9090
4646
- --query-range.split-interval=12h
47+
- --labels.split-interval=12h
4748
- --query-range.max-retries-per-request=10
49+
- --labels.max-retries-per-request=10
4850
- --query-frontend.log-queries-longer-than=10s
4951
- |-
5052
--query-range.response-cache-config="config":
51-
"max_size": "0"
52-
"max_size_items": 2048
53-
"validity": "6h"
54-
"type": "in-memory"
53+
"addresses":
54+
- "dnssrv+_client._tcp.<MEMCACHED_SERCIVE>.thanos.svc.cluster.local"
55+
"dns_provider_update_interval": "10s"
56+
"max_async_buffer_size": 10000
57+
"max_async_concurrency": 20
58+
"max_get_multi_batch_size": 0
59+
"max_get_multi_concurrency": 100
60+
"max_idle_connections": 100
61+
"timeout": "500ms"
62+
"type": "memcached"
63+
- |-
64+
--labels.response-cache-config="config":
65+
"addresses":
66+
- "dnssrv+_client._tcp.<MEMCACHED_SERCIVE>.thanos.svc.cluster.local"
67+
"dns_provider_update_interval": "10s"
68+
"max_async_buffer_size": 10000
69+
"max_async_concurrency": 20
70+
"max_get_multi_batch_size": 0
71+
"max_get_multi_concurrency": 100
72+
"max_idle_connections": 100
73+
"timeout": "500ms"
74+
"type": "memcached"
5575
image: quay.io/thanos/thanos:v0.16.0
5676
livenessProbe:
5777
failureThreshold: 4

jsonnet/kube-thanos/kube-thanos-query-frontend.libsonnet

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,37 @@ local defaults = {
1212
splitInterval: '24h',
1313
maxRetries: 5,
1414
logQueriesLongerThan: '0',
15-
fifoCache: {
16-
max_size: '0', // Don't limit maximum item size.
17-
max_size_items: 2048,
18-
validity: '6h',
15+
fifoCache+:: {
16+
config+: {
17+
max_size: '0', // Don't limit maximum item size.
18+
max_size_items: 2048,
19+
validity: '6h',
20+
}
1921
},
22+
queryRangeCache: {},
23+
labelsCache: {},
2024
logLevel: 'info',
2125
resources: {},
2226
serviceMonitor: false,
2327
ports: {
2428
http: 9090,
2529
},
2630

31+
memcachedDefaults+:: {
32+
config+: {
33+
// List of memcached addresses, that will get resolved with the DNS service discovery provider.
34+
// For DNS service discovery reference https://thanos.io/service-discovery.md/#dns-service-discovery
35+
addresses+: error 'must provide memcached addresses',
36+
timeout: '500ms',
37+
max_idle_connections: 100,
38+
max_async_concurrency: 20,
39+
max_async_buffer_size: 10000,
40+
max_get_multi_concurrency: 100,
41+
max_get_multi_batch_size: 0,
42+
dns_provider_update_interval: '10s',
43+
},
44+
},
45+
2746
commonLabels:: {
2847
'app.kubernetes.io/name': 'thanos-query-frontend',
2948
'app.kubernetes.io/instance': defaults.name,
@@ -42,12 +61,25 @@ function(params) {
4261
local tqf = self,
4362

4463
// Combine the defaults and the passed params to make the component's config.
45-
config:: defaults + params,
64+
config:: defaults + params + {
65+
queryRangeCache+:
66+
if std.objectHas(params, 'queryRangeCache') && params.queryRangeCache.type == 'memcached' then
67+
defaults.memcachedDefaults + params.queryRangeCache
68+
else if std.objectHas(params, 'queryRangeCache') && params.queryRangeCache.type == 'in-memory' then
69+
defaults.fifoCache + params.queryRangeCache
70+
else {},
71+
labelsCache+:
72+
if std.objectHas(params, 'labelsCache') && params.labelsCache.type == 'memcached' then
73+
defaults.memcachedDefaults + params.labelsCache
74+
else if std.objectHas(params, 'labelsCache') && params.labelsCache.type == 'in-memory' then
75+
defaults.fifoCache + params.labelsCache
76+
else {},
77+
},
4678
// Safety checks for combined config of defaults and params
4779
assert std.isNumber(tqf.config.replicas) && tqf.config.replicas >= 0 : 'thanos query frontend replicas has to be number >= 0',
4880
assert std.isObject(tqf.config.resources),
4981
assert std.isBoolean(tqf.config.serviceMonitor),
50-
assert std.isNumber(tqf.config.maxRetries),
82+
assert std.isNumber(tqf.config.maxRetries) && tqf.config.maxRetries >= 0 : 'thanos query frontend maxRetries has to be number >= 0',
5183

5284
service:
5385
{
@@ -84,14 +116,21 @@ function(params) {
84116
'--http-address=0.0.0.0:%d' % tqf.config.ports.http,
85117
'--query-frontend.downstream-url=%s' % tqf.config.downstreamURL,
86118
'--query-range.split-interval=%s' % tqf.config.splitInterval,
119+
'--labels.split-interval=%s' % tqf.config.splitInterval,
87120
'--query-range.max-retries-per-request=%d' % tqf.config.maxRetries,
121+
'--labels.max-retries-per-request=%d' % tqf.config.maxRetries,
88122
'--query-frontend.log-queries-longer-than=%s' % tqf.config.logQueriesLongerThan,
89123
] + (
90-
if std.length(tqf.config.fifoCache) > 0 then [
91-
'--query-range.response-cache-config=' + std.manifestYamlDoc({
92-
type: 'in-memory',
93-
config: tqf.config.fifoCache,
94-
}),
124+
if std.length(tqf.config.queryRangeCache) > 0 then [
125+
'--query-range.response-cache-config=' + std.manifestYamlDoc(
126+
tqf.config.queryRangeCache
127+
),
128+
] else []
129+
) + (
130+
if std.length(tqf.config.labelsCache) > 0 then [
131+
'--labels.response-cache-config=' + std.manifestYamlDoc(
132+
tqf.config.labelsCache
133+
),
95134
] else []
96135
),
97136
ports: [

0 commit comments

Comments
 (0)