Skip to content
This repository was archived by the owner on Mar 18, 2025. It is now read-only.

Commit d4fecbf

Browse files
committed
Rename from prometheus-remote to prometheus-rw
1 parent c39b472 commit d4fecbf

File tree

5 files changed

+37
-37
lines changed

5 files changed

+37
-37
lines changed

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ xk6 build --with github.com/grafana/xk6-output-prometheus-remote@latest
2020

2121
Then run new k6 binary with:
2222
```
23-
K6_PROMETHEUS_REMOTE_URL=http://localhost:9090/api/v1/write ./k6 run script.js -o output-prometheus-remote
23+
K6_PROMETHEUS_RW_REMOTE_URL=http://localhost:9090/api/v1/write ./k6 run script.js -o output-prometheus-remote
2424
```
2525

2626
Add TLS and HTTP basic authentication:
2727
```
28-
K6_PROMETHEUS_REMOTE_URL=https://localhost:9090/api/v1/write \
29-
K6_PROMETHEUS_INSECURE_SKIP_TLS_VERIFY=false \
30-
K6_PROMETHEUS_USERNAME=foo \
31-
K6_PROMETHEUS_PASSWORD=bar \
28+
K6_PROMETHEUS_RW_REMOTE_URL=https://localhost:9090/api/v1/write \
29+
K6_PROMETHEUS_RW_INSECURE_SKIP_TLS_VERIFY=false \
30+
K6_PROMETHEUS_RW_USERNAME=foo \
31+
K6_PROMETHEUS_RW_PASSWORD=bar \
3232
./k6 run script.js -o output-prometheus-remote
3333
```
3434

@@ -48,7 +48,7 @@ Mapping Trend by Gauges has the following cons:
4848
* It is impossible to aggregate some Gauge's value (especially the percentiles).
4949
* It uses a memory-expensive k6's data structure.
5050

51-
The previous points can be resolved by mapping Trend as [Prometheus Native Histogram](https://prometheus.io/docs/concepts/metric_types/#histogram). Enabling the conversion by the `K6_PROMETHEUS_TREND_AS_NATIVE_HISTOGRAM=true` environment variable (or one of the other ways), then the Output converts all the Trend types into a dedicated Native Histogram.
51+
The previous points can be resolved by mapping Trend as [Prometheus Native Histogram](https://prometheus.io/docs/concepts/metric_types/#histogram). Enabling the conversion by the `K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true` environment variable (or one of the other ways), then the Output converts all the Trend types into a dedicated Native Histogram.
5252

5353
Native Histogram is a Prometheus' experimental feature, so it has to be enabled (`--enable-feature=native-histograms`). Note that other Remote-write implementations don't support it yet.
5454

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ services:
4040
ports:
4141
- "6565:6565"
4242
environment:
43-
- K6_PROMETHEUS_REMOTE_URL=http://prometheus:9090/api/v1/write
44-
- K6_PROMETHEUS_TREND_AS_NATIVE_HISTOGRAM=true
43+
- K6_PROMETHEUS_RW_REMOTE_URL=http://prometheus:9090/api/v1/write
44+
- K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true
4545
- K6_OUT=output-prometheus-remote
4646
depends_on:
4747
- prometheus

pkg/remotewrite/config.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,32 @@ var defaultTrendStats = []string{"p(99)"}
2525

2626
type Config struct {
2727
// URL contains the absolute URL for the Write endpoint where to flush the time series.
28-
URL null.String `json:"url" envconfig:"K6_PROMETHEUS_REMOTE_URL"`
28+
URL null.String `json:"url" envconfig:"K6_PROMETHEUS_RW_REMOTE_URL"`
2929

3030
// Headers contains additional headers that should be included in the HTTP requests.
31-
Headers map[string]string `json:"headers" envconfig:"K6_PROMETHEUS_HEADERS"`
31+
Headers map[string]string `json:"headers" envconfig:"K6_PROMETHEUS_RW_HEADERS"`
3232

3333
// InsecureSkipTLSVerify skips TLS client side checks.
34-
InsecureSkipTLSVerify null.Bool `json:"insecureSkipTLSVerify" envconfig:"K6_PROMETHEUS_INSECURE_SKIP_TLS_VERIFY"`
34+
InsecureSkipTLSVerify null.Bool `json:"insecureSkipTLSVerify" envconfig:"K6_PROMETHEUS_RW_INSECURE_SKIP_TLS_VERIFY"`
3535

3636
// Username is the User for Basic Auth.
37-
Username null.String `json:"username" envconfig:"K6_PROMETHEUS_USERNAME"`
37+
Username null.String `json:"username" envconfig:"K6_PROMETHEUS_RW_USERNAME"`
3838

3939
// Password is the Password for the Basic Auth.
40-
Password null.String `json:"password" envconfig:"K6_PROMETHEUS_PASSWORD"`
40+
Password null.String `json:"password" envconfig:"K6_PROMETHEUS_RW_PASSWORD"`
4141

4242
// PushInterval defines the time between flushes. The Output will wait the set time
4343
// before push a new set of time series to the endpoint.
44-
PushInterval types.NullDuration `json:"pushInterval" envconfig:"K6_PROMETHEUS_PUSH_INTERVAL"`
44+
PushInterval types.NullDuration `json:"pushInterval" envconfig:"K6_PROMETHEUS_RW_PUSH_INTERVAL"`
4545

4646
// TrendAsNativeHistogram defines if the mapping for metrics defined as Trend type
4747
// should map to a Prometheus' Native Histogram.
48-
TrendAsNativeHistogram null.Bool `json:"trendAsNativeHistogram" envconfig:"K6_PROMETHEUS_TREND_AS_NATIVE_HISTOGRAM"`
48+
TrendAsNativeHistogram null.Bool `json:"trendAsNativeHistogram" envconfig:"K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM"`
4949

5050
// TrendStats defines the stats to flush for Trend metrics.
5151
//
5252
// TODO: should we support K6_SUMMARY_TREND_STATS?
53-
TrendStats []string `json:"trendStats" envconfig:"K6_PROMETHEUS_TREND_STATS"`
53+
TrendStats []string `json:"trendStats" envconfig:"K6_PROMETHEUS_RW_TREND_STATS"`
5454
}
5555

5656
// NewConfig creates an Output's configuration.
@@ -194,49 +194,49 @@ func parseEnvs(env map[string]string) (Config, error) {
194194
}
195195

196196
// envconfig is not processing some undefined vars (at least duration) so apply them manually
197-
if pushInterval, pushIntervalDefined := env["K6_PROMETHEUS_PUSH_INTERVAL"]; pushIntervalDefined {
197+
if pushInterval, pushIntervalDefined := env["K6_PROMETHEUS_RW_PUSH_INTERVAL"]; pushIntervalDefined {
198198
if err := c.PushInterval.UnmarshalText([]byte(pushInterval)); err != nil {
199199
return c, err
200200
}
201201
}
202202

203-
if url, urlDefined := env["K6_PROMETHEUS_REMOTE_URL"]; urlDefined {
203+
if url, urlDefined := env["K6_PROMETHEUS_RW_REMOTE_URL"]; urlDefined {
204204
c.URL = null.StringFrom(url)
205205
}
206206

207-
if b, err := getEnvBool(env, "K6_PROMETHEUS_INSECURE_SKIP_TLS_VERIFY"); err != nil {
207+
if b, err := getEnvBool(env, "K6_PROMETHEUS_RW_INSECURE_SKIP_TLS_VERIFY"); err != nil {
208208
return c, err
209209
} else {
210210
if b.Valid {
211211
c.InsecureSkipTLSVerify = b
212212
}
213213
}
214214

215-
if user, userDefined := env["K6_PROMETHEUS_USERNAME"]; userDefined {
215+
if user, userDefined := env["K6_PROMETHEUS_RW_USERNAME"]; userDefined {
216216
c.Username = null.StringFrom(user)
217217
}
218218

219-
if password, passwordDefined := env["K6_PROMETHEUS_PASSWORD"]; passwordDefined {
219+
if password, passwordDefined := env["K6_PROMETHEUS_RW_PASSWORD"]; passwordDefined {
220220
c.Password = null.StringFrom(password)
221221
}
222222

223-
envHeaders := getEnvMap(env, "K6_PROMETHEUS_HEADERS_")
223+
envHeaders := getEnvMap(env, "K6_PROMETHEUS_RW_HEADERS_")
224224
for k, v := range envHeaders {
225225
if c.Headers == nil {
226226
c.Headers = make(map[string]string)
227227
}
228228
c.Headers[k] = v
229229
}
230230

231-
if b, err := getEnvBool(env, "K6_PROMETHEUS_TREND_AS_NATIVE_HISTOGRAM"); err != nil {
231+
if b, err := getEnvBool(env, "K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM"); err != nil {
232232
return c, err
233233
} else {
234234
if b.Valid {
235235
c.TrendAsNativeHistogram = b
236236
}
237237
}
238238

239-
if trendStats, trendStatsDefined := env["K6_PROMETHEUS_TREND_STATS"]; trendStatsDefined {
239+
if trendStats, trendStatsDefined := env["K6_PROMETHEUS_RW_TREND_STATS"]; trendStatsDefined {
240240
c.TrendStats = strings.Split(trendStats, ",")
241241
}
242242

pkg/remotewrite/config_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ func TestGetConsolidatedConfig(t *testing.T) {
122122
"MixedSuccess": {
123123
jsonRaw: json.RawMessage(fmt.Sprintf(`{"url":"%s"}`, u.String())),
124124
env: map[string]string{
125-
"K6_PROMETHEUS_INSECURE_SKIP_TLS_VERIFY": "false",
126-
"K6_PROMETHEUS_USERNAME": "u",
125+
"K6_PROMETHEUS_RW_INSECURE_SKIP_TLS_VERIFY": "false",
126+
"K6_PROMETHEUS_RW_USERNAME": "u",
127127
},
128128
// arg: "username=user",
129129
config: Config{
@@ -139,8 +139,8 @@ func TestGetConsolidatedConfig(t *testing.T) {
139139
"OrderOfPrecedence": {
140140
jsonRaw: json.RawMessage(`{"url":"http://json:9090","username":"json","password":"json"}`),
141141
env: map[string]string{
142-
"K6_PROMETHEUS_USERNAME": "env",
143-
"K6_PROMETHEUS_PASSWORD": "env",
142+
"K6_PROMETHEUS_RW_USERNAME": "env",
143+
"K6_PROMETHEUS_RW_PASSWORD": "env",
144144
},
145145
// arg: "password=arg",
146146
config: Config{
@@ -158,7 +158,7 @@ func TestGetConsolidatedConfig(t *testing.T) {
158158
errString: "parse JSON options failed",
159159
},
160160
"InvalidEnv": {
161-
env: map[string]string{"K6_PROMETHEUS_INSECURE_SKIP_TLS_VERIFY": "d"},
161+
env: map[string]string{"K6_PROMETHEUS_RW_INSECURE_SKIP_TLS_VERIFY": "d"},
162162
errString: "parse environment variables options failed",
163163
},
164164
//"InvalidArg": {
@@ -208,7 +208,7 @@ func TestOptionURL(t *testing.T) {
208208
jsonRaw json.RawMessage
209209
}{
210210
"JSON": {jsonRaw: json.RawMessage(`{"url":"http://prometheus:9090/api/v1/write"}`)},
211-
"Env": {env: map[string]string{"K6_PROMETHEUS_REMOTE_URL": "http://prometheus:9090/api/v1/write"}},
211+
"Env": {env: map[string]string{"K6_PROMETHEUS_RW_REMOTE_URL": "http://prometheus:9090/api/v1/write"}},
212212
//"Arg": {arg: "url=http://prometheus:9090/api/v1/write"},
213213
}
214214

@@ -241,7 +241,7 @@ func TestOptionHeaders(t *testing.T) {
241241
jsonRaw json.RawMessage
242242
}{
243243
"JSON": {jsonRaw: json.RawMessage(`{"headers":{"X-MY-HEADER1":"hval1","X-MY-HEADER2":"hval2"}}`)},
244-
"Env": {env: map[string]string{"K6_PROMETHEUS_HEADERS_X-MY-HEADER1": "hval1", "K6_PROMETHEUS_HEADERS_X-MY-HEADER2": "hval2"}},
244+
"Env": {env: map[string]string{"K6_PROMETHEUS_RW_HEADERS_X-MY-HEADER1": "hval1", "K6_PROMETHEUS_RW_HEADERS_X-MY-HEADER2": "hval2"}},
245245
//"Arg": {arg: "headers.X-MY-HEADER1=hval1,headers.X-MY-HEADER2=hval2"},
246246
}
247247

@@ -275,7 +275,7 @@ func TestOptionInsecureSkipTLSVerify(t *testing.T) {
275275
jsonRaw json.RawMessage
276276
}{
277277
"JSON": {jsonRaw: json.RawMessage(`{"insecureSkipTLSVerify":false}`)},
278-
"Env": {env: map[string]string{"K6_PROMETHEUS_INSECURE_SKIP_TLS_VERIFY": "false"}},
278+
"Env": {env: map[string]string{"K6_PROMETHEUS_RW_INSECURE_SKIP_TLS_VERIFY": "false"}},
279279
//"Arg": {arg: "insecureSkipTLSVerify=false"},
280280
}
281281

@@ -306,7 +306,7 @@ func TestOptionBasicAuth(t *testing.T) {
306306
jsonRaw json.RawMessage
307307
}{
308308
"JSON": {jsonRaw: json.RawMessage(`{"username":"user1","password":"pass1"}`)},
309-
"Env": {env: map[string]string{"K6_PROMETHEUS_USERNAME": "user1", "K6_PROMETHEUS_PASSWORD": "pass1"}},
309+
"Env": {env: map[string]string{"K6_PROMETHEUS_RW_USERNAME": "user1", "K6_PROMETHEUS_RW_PASSWORD": "pass1"}},
310310
//"Arg": {arg: "username=user1,password=pass1"},
311311
}
312312

@@ -340,7 +340,7 @@ func TestOptionTrendAsNativeHistogram(t *testing.T) {
340340
jsonRaw json.RawMessage
341341
}{
342342
"JSON": {jsonRaw: json.RawMessage(`{"trendAsNativeHistogram":true}`)},
343-
"Env": {env: map[string]string{"K6_PROMETHEUS_TREND_AS_NATIVE_HISTOGRAM": "true"}},
343+
"Env": {env: map[string]string{"K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM": "true"}},
344344
//"Arg": {arg: "trendAsNativeHistogram=true"},
345345
}
346346

@@ -375,7 +375,7 @@ func TestOptionPushInterval(t *testing.T) {
375375
jsonRaw json.RawMessage
376376
}{
377377
"JSON": {jsonRaw: json.RawMessage(`{"pushInterval":"1m2s"}`)},
378-
"Env": {env: map[string]string{"K6_PROMETHEUS_PUSH_INTERVAL": "1m2s"}},
378+
"Env": {env: map[string]string{"K6_PROMETHEUS_RW_PUSH_INTERVAL": "1m2s"}},
379379
//"Arg": {arg: "pushInterval=1m2s"},
380380
}
381381

@@ -409,7 +409,7 @@ func TestConfigTrendStats(t *testing.T) {
409409
jsonRaw json.RawMessage
410410
}{
411411
"JSON": {jsonRaw: json.RawMessage(`{"trendStats":["max","p(95)"]}`)},
412-
"Env": {env: map[string]string{"K6_PROMETHEUS_TREND_STATS": "max,p(95)"}},
412+
"Env": {env: map[string]string{"K6_PROMETHEUS_RW_TREND_STATS": "max,p(95)"}},
413413
// TODO: support arg, check the comment in the code
414414
//"Arg": {arg: "trendStats=max,p(95)"},
415415
}

register.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
)
77

88
func init() {
9-
output.RegisterExtension("output-prometheus-remote", func(p output.Params) (output.Output, error) {
9+
output.RegisterExtension("xk6-prometheus-rw", func(p output.Params) (output.Output, error) {
1010
return remotewrite.New(p)
1111
})
1212
}

0 commit comments

Comments
 (0)