@intentius/chant-lexicon-otel 0.98.0 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/common.d.ts +7 -2
- package/dist/components/common.d.ts.map +1 -1
- package/dist/components/filtering.d.ts +58 -1
- package/dist/components/filtering.d.ts.map +1 -1
- package/dist/components/processors.d.ts +10 -0
- package/dist/components/processors.d.ts.map +1 -1
- package/dist/components/receivers.d.ts +87 -7
- package/dist/components/receivers.d.ts.map +1 -1
- package/dist/import/embedded.d.ts +12 -0
- package/dist/import/embedded.d.ts.map +1 -0
- package/dist/integrity.json +2 -2
- package/dist/manifest.json +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/common.ts +7 -2
- package/src/components/filtering.test.ts +27 -0
- package/src/components/filtering.ts +65 -2
- package/src/components/processors.ts +4 -0
- package/src/components/receivers.ts +88 -4
- package/src/import/embedded.test.ts +56 -0
- package/src/import/embedded.ts +41 -0
- package/src/import/generated-types.e2e.test.ts +53 -18
- package/src/plugin.ts +5 -0
|
@@ -4,8 +4,13 @@
|
|
|
4
4
|
* Keys use the collector's own snake_case spelling, since they are emitted
|
|
5
5
|
* unchanged.
|
|
6
6
|
*/
|
|
7
|
-
/**
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* A duration the collector parses: a string such as `5s`, `250ms` or
|
|
9
|
+
* `1m30s`, or a bare integer, which the collector reads as nanoseconds
|
|
10
|
+
* (collector-contrib's own servicegraph test config writes
|
|
11
|
+
* `latency_histogram_buckets: [1,2,3,4,5]`). Prefer the string form.
|
|
12
|
+
*/
|
|
13
|
+
export type Duration = string | number;
|
|
9
14
|
export interface TLSClientSettings {
|
|
10
15
|
insecure?: boolean;
|
|
11
16
|
insecure_skip_verify?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/components/common.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/components/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,51 @@
|
|
|
6
6
|
* (which signal, which context, which list) and keeps each OTTL condition or
|
|
7
7
|
* statement as a string; the collector parses them when it loads the config.
|
|
8
8
|
*/
|
|
9
|
+
import type { AttributesMatch } from "./processors.js";
|
|
9
10
|
/** What an OTTL processor does when a condition or statement errors at run time. */
|
|
10
11
|
export type OttlErrorMode = "ignore" | "silent" | "propagate";
|
|
11
|
-
/**
|
|
12
|
+
/** An attribute a legacy include/exclude block matches on (`filterconfig.Attribute`). */
|
|
13
|
+
export interface FilterAttributeMatch {
|
|
14
|
+
key: string;
|
|
15
|
+
value?: unknown;
|
|
16
|
+
}
|
|
17
|
+
/** Options for the `regexp` match type (`filterset/regexp.Config`). */
|
|
18
|
+
export interface FilterRegexpSettings {
|
|
19
|
+
cacheenabled?: boolean;
|
|
20
|
+
cachemaxnumentries?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The filter processor's legacy `metrics.include` / `metrics.exclude` block
|
|
24
|
+
* (`filterconfig.MetricMatchProperties`). `expr` takes `expressions` instead
|
|
25
|
+
* of `metric_names`.
|
|
26
|
+
*/
|
|
27
|
+
export interface FilterMetricMatch {
|
|
28
|
+
match_type: "strict" | "regexp" | "expr";
|
|
29
|
+
regexp?: FilterRegexpSettings;
|
|
30
|
+
metric_names?: string[];
|
|
31
|
+
expressions?: string[];
|
|
32
|
+
resource_attributes?: FilterAttributeMatch[];
|
|
33
|
+
}
|
|
34
|
+
/** The filter processor's legacy `logs.include` / `logs.exclude` block (`LogMatchProperties`). */
|
|
35
|
+
export interface FilterLogMatch {
|
|
36
|
+
match_type: "strict" | "regexp";
|
|
37
|
+
resource_attributes?: FilterAttributeMatch[];
|
|
38
|
+
record_attributes?: FilterAttributeMatch[];
|
|
39
|
+
severity_texts?: string[];
|
|
40
|
+
/** Matches records at or above `min`, a severity number or name such as `INFO`. */
|
|
41
|
+
severity_number?: {
|
|
42
|
+
min: number | string;
|
|
43
|
+
match_undefined?: boolean;
|
|
44
|
+
};
|
|
45
|
+
bodies?: string[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Conditions per signal. Telemetry matching any condition is dropped.
|
|
49
|
+
*
|
|
50
|
+
* Each signal takes OTTL conditions or the legacy `include` / `exclude`
|
|
51
|
+
* match blocks (for traces, the legacy blocks sit under `spans`), not both:
|
|
52
|
+
* the collector rejects a signal that mixes them.
|
|
53
|
+
*/
|
|
12
54
|
export interface FilterProcessorConfig {
|
|
13
55
|
/** Default `propagate`: an erroring condition fails the batch. `ignore` logs and moves on. */
|
|
14
56
|
error_mode?: OttlErrorMode;
|
|
@@ -18,15 +60,30 @@ export interface FilterProcessorConfig {
|
|
|
18
60
|
/** Drops the span event. */
|
|
19
61
|
spanevent?: string[];
|
|
20
62
|
};
|
|
63
|
+
/** Legacy span matching. With `include`, spans that do not match are dropped; with `exclude`, spans that match. */
|
|
64
|
+
spans?: {
|
|
65
|
+
include?: AttributesMatch;
|
|
66
|
+
exclude?: AttributesMatch;
|
|
67
|
+
};
|
|
21
68
|
metrics?: {
|
|
22
69
|
/** Drops the whole metric, e.g. `name == "http.server.duration" and type == METRIC_DATA_TYPE_HISTOGRAM`. */
|
|
23
70
|
metric?: string[];
|
|
24
71
|
/** Drops the data point. */
|
|
25
72
|
datapoint?: string[];
|
|
73
|
+
/** Legacy: keeps only the metrics that match. */
|
|
74
|
+
include?: FilterMetricMatch;
|
|
75
|
+
/** Legacy: drops the metrics that match. */
|
|
76
|
+
exclude?: FilterMetricMatch;
|
|
77
|
+
/** Legacy: options for the `regexp` match type. */
|
|
78
|
+
regexp?: FilterRegexpSettings;
|
|
26
79
|
};
|
|
27
80
|
logs?: {
|
|
28
81
|
/** Drops the log record, e.g. `severity_number < SEVERITY_NUMBER_WARN`. */
|
|
29
82
|
log_record?: string[];
|
|
83
|
+
/** Legacy: keeps only the log records that match. */
|
|
84
|
+
include?: FilterLogMatch;
|
|
85
|
+
/** Legacy: drops the log records that match. */
|
|
86
|
+
exclude?: FilterLogMatch;
|
|
30
87
|
};
|
|
31
88
|
}
|
|
32
89
|
/** Drops spans, span events, metrics, data points and log records that match OTTL conditions. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../src/components/filtering.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../src/components/filtering.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,12 +26,22 @@ export interface ResourceProcessorConfig {
|
|
|
26
26
|
}
|
|
27
27
|
/** Inserts, updates or deletes resource attributes. */
|
|
28
28
|
export declare const ResourceProcessor: import("../index.js").ComponentClass<"processor", "resource", ResourceProcessorConfig>;
|
|
29
|
+
/** An include/exclude block of the attributes processor and the filter processor's legacy `spans` (`filterconfig.MatchProperties`). */
|
|
29
30
|
export interface AttributesMatch {
|
|
30
31
|
match_type: "strict" | "regexp";
|
|
32
|
+
regexp?: {
|
|
33
|
+
cacheenabled?: boolean;
|
|
34
|
+
cachemaxnumentries?: number;
|
|
35
|
+
};
|
|
31
36
|
services?: string[];
|
|
32
37
|
span_names?: string[];
|
|
38
|
+
span_kinds?: string[];
|
|
33
39
|
log_bodies?: string[];
|
|
34
40
|
log_severity_texts?: string[];
|
|
41
|
+
log_severity_number?: {
|
|
42
|
+
min: number | string;
|
|
43
|
+
match_undefined?: boolean;
|
|
44
|
+
};
|
|
35
45
|
metric_names?: string[];
|
|
36
46
|
attributes?: Array<{
|
|
37
47
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processors.d.ts","sourceRoot":"","sources":["../../src/components/processors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processors.d.ts","sourceRoot":"","sources":["../../src/components/processors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAI1D,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,iFAAiF;AACjF,eAAO,MAAM,cAAc,yEAQzB,CAAC;AAIH,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,QAAQ,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,0FAiBjC,CAAC;AAIH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,uDAAuD;AACvD,eAAO,MAAM,iBAAiB,+EAK5B,CAAC;AAIH,uIAAuI;AACvI,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAChC,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpD,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,mFAK9B,CAAC;AAuBH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,GAAG,YAAY,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,YAAY,GAAG,KAAK,CAAC;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAA;SAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB,CAAA;SAAE,CAAC,CAAC;KAC5G,CAAC;IACF,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;QAC3B,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;QAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,uBAAuB,EAAE,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yBAAyB,CAAC,EAAE,QAAQ,CAAC;CACtC;AAED,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,yFAIjC,CAAC;AAIH,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,kBAAkB,GAClB,QAAQ,GACR,OAAO,GACP,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,SAAS,GACT,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,qFAAqF;AACrF,eAAO,MAAM,0BAA0B,iGASrC,CAAC"}
|
|
@@ -18,28 +18,108 @@ export interface PrometheusStaticConfig {
|
|
|
18
18
|
targets: string[];
|
|
19
19
|
labels?: Record<string, string>;
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
export interface
|
|
21
|
+
/** Prometheus's `tls_config` (prometheus/common `TLSConfig`). Versions are spelled `TLS12`, `TLS13`. */
|
|
22
|
+
export interface PrometheusTLSConfig {
|
|
23
|
+
ca?: string;
|
|
24
|
+
cert?: string;
|
|
25
|
+
key?: string;
|
|
26
|
+
ca_file?: string;
|
|
27
|
+
cert_file?: string;
|
|
28
|
+
key_file?: string;
|
|
29
|
+
ca_ref?: string;
|
|
30
|
+
cert_ref?: string;
|
|
31
|
+
key_ref?: string;
|
|
32
|
+
server_name?: string;
|
|
33
|
+
insecure_skip_verify?: boolean;
|
|
34
|
+
min_version?: string;
|
|
35
|
+
max_version?: string;
|
|
36
|
+
}
|
|
37
|
+
/** Prometheus's proxy settings, inlined into the HTTP client and OAuth2 blocks. */
|
|
38
|
+
export interface PrometheusProxySettings {
|
|
39
|
+
proxy_url?: string;
|
|
40
|
+
no_proxy?: string;
|
|
41
|
+
proxy_from_environment?: boolean;
|
|
42
|
+
proxy_connect_header?: Record<string, string[]>;
|
|
43
|
+
}
|
|
44
|
+
/** Scrape authentication with a user name and password. Prefer `password_file` or `${env:...}` to a literal password. */
|
|
45
|
+
export interface PrometheusBasicAuth {
|
|
46
|
+
username?: string;
|
|
47
|
+
username_file?: string;
|
|
48
|
+
username_ref?: string;
|
|
49
|
+
password?: string;
|
|
50
|
+
password_file?: string;
|
|
51
|
+
password_ref?: string;
|
|
52
|
+
}
|
|
53
|
+
/** An `Authorization` header: `type` defaults to `Bearer`. */
|
|
54
|
+
export interface PrometheusAuthorization {
|
|
55
|
+
type?: string;
|
|
56
|
+
credentials?: string;
|
|
57
|
+
credentials_file?: string;
|
|
58
|
+
credentials_ref?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface PrometheusOAuth2 extends PrometheusProxySettings {
|
|
61
|
+
client_id: string;
|
|
62
|
+
client_secret?: string;
|
|
63
|
+
client_secret_file?: string;
|
|
64
|
+
client_secret_ref?: string;
|
|
65
|
+
scopes?: string[];
|
|
66
|
+
token_url: string;
|
|
67
|
+
endpoint_params?: Record<string, string>;
|
|
68
|
+
tls_config?: PrometheusTLSConfig;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* One Prometheus scrape job, as the Prometheus release collector-contrib
|
|
72
|
+
* v0.130.0 embeds reads it (scrape settings plus prometheus/common's HTTP
|
|
73
|
+
* client settings). Service-discovery (`*_sd_configs`) and relabel blocks
|
|
74
|
+
* pass through as written.
|
|
75
|
+
*/
|
|
76
|
+
export interface PrometheusScrapeConfig extends PrometheusProxySettings {
|
|
23
77
|
job_name: string;
|
|
24
78
|
scrape_interval?: Duration;
|
|
25
79
|
scrape_timeout?: Duration;
|
|
80
|
+
scrape_protocols?: string[];
|
|
81
|
+
fallback_scrape_protocol?: string;
|
|
82
|
+
always_scrape_classic_histograms?: boolean;
|
|
83
|
+
convert_classic_histograms_to_nhcb?: boolean;
|
|
84
|
+
scrape_failure_log_file?: string;
|
|
26
85
|
metrics_path?: string;
|
|
27
86
|
scheme?: "http" | "https";
|
|
28
87
|
honor_labels?: boolean;
|
|
29
88
|
honor_timestamps?: boolean;
|
|
89
|
+
track_timestamps_staleness?: boolean;
|
|
90
|
+
enable_compression?: boolean;
|
|
30
91
|
params?: Record<string, string[]>;
|
|
31
92
|
static_configs?: PrometheusStaticConfig[];
|
|
32
93
|
kubernetes_sd_configs?: Array<Record<string, unknown>>;
|
|
33
94
|
file_sd_configs?: Array<Record<string, unknown>>;
|
|
95
|
+
/** Any other service-discovery block (`dns_sd_configs`, `ec2_sd_configs`, `consul_sd_configs`, ...). */
|
|
96
|
+
[sd: `${string}_sd_configs`]: Array<Record<string, unknown>> | undefined;
|
|
34
97
|
relabel_configs?: Array<Record<string, unknown>>;
|
|
35
98
|
metric_relabel_configs?: Array<Record<string, unknown>>;
|
|
36
|
-
|
|
37
|
-
authorization?:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
99
|
+
basic_auth?: PrometheusBasicAuth;
|
|
100
|
+
authorization?: PrometheusAuthorization;
|
|
101
|
+
oauth2?: PrometheusOAuth2;
|
|
102
|
+
bearer_token?: string;
|
|
41
103
|
bearer_token_file?: string;
|
|
104
|
+
tls_config?: PrometheusTLSConfig;
|
|
105
|
+
follow_redirects?: boolean;
|
|
106
|
+
enable_http2?: boolean;
|
|
107
|
+
http_headers?: Record<string, {
|
|
108
|
+
values?: string[];
|
|
109
|
+
secrets?: string[];
|
|
110
|
+
files?: string[];
|
|
111
|
+
}>;
|
|
112
|
+
body_size_limit?: string;
|
|
42
113
|
sample_limit?: number;
|
|
114
|
+
target_limit?: number;
|
|
115
|
+
label_limit?: number;
|
|
116
|
+
label_name_length_limit?: number;
|
|
117
|
+
label_value_length_limit?: number;
|
|
118
|
+
native_histogram_bucket_limit?: number;
|
|
119
|
+
native_histogram_min_bucket_factor?: number;
|
|
120
|
+
keep_dropped_targets?: number;
|
|
121
|
+
metric_name_validation_scheme?: "utf8" | "legacy";
|
|
122
|
+
metric_name_escaping_scheme?: "allow-utf-8" | "underscores" | "dots" | "values";
|
|
43
123
|
}
|
|
44
124
|
export interface PrometheusReceiverConfig {
|
|
45
125
|
config: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receivers.d.ts","sourceRoot":"","sources":["../../src/components/receivers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIpG,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,EACD,CAAC,kBAAkB,GAAG;YACpB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC,GACF,IAAI,CAAC;KACV,CAAC;CACH;AAED,gFAAgF;AAChF,eAAO,MAAM,YAAY,qEAcvB,CAAC;AAIH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED
|
|
1
|
+
{"version":3,"file":"receivers.d.ts","sourceRoot":"","sources":["../../src/components/receivers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIpG,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,EACD,CAAC,kBAAkB,GAAG;YACpB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC,GACF,IAAI,CAAC;KACV,CAAC;CACH;AAED,gFAAgF;AAChF,eAAO,MAAM,YAAY,qEAcvB,CAAC;AAIH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,wGAAwG;AACxG,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mFAAmF;AACnF,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACjD;AAED,yHAAyH;AACzH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC1C,qBAAqB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,wGAAwG;IACxG,CAAC,EAAE,EAAE,GAAG,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACzE,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,sBAAsB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAClD,2BAA2B,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;CACjF;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE;QACN,MAAM,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,QAAQ,CAAC;YAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;YAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;QAC7I,cAAc,EAAE,sBAAsB,EAAE,CAAC;KAC1C,CAAC;IACF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,GAAG,CAAC,EAAE,iBAAiB,CAAC;KACzB,CAAC;CACH;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,iFAkB7B,CAAC;AAIH,MAAM,MAAM,kBAAkB,GAC1B,KAAK,GACL,MAAM,GACN,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,CAAC,EAAE,QAAQ,CAAC;IAC/B,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACxE;AAED,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,mFAK9B,CAAC;AAIH,qGAAqG;AACrG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,QAAQ,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/F,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,QAAQ,CAAC;QAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;CAC7H;AAED,6DAA6D;AAC7D,eAAO,MAAM,eAAe,2EAM1B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A collector config embedded in another lexicon's resource, e.g. the
|
|
3
|
+
* `config.yaml` of a k8s ConfigMap, for `chant import` (#2962).
|
|
4
|
+
*
|
|
5
|
+
* The config is imported exactly as `chant import config.yaml` would import
|
|
6
|
+
* it, into a directory of its own, and the host's value becomes
|
|
7
|
+
* `collectorYaml([...])` over every component, pipeline and service the
|
|
8
|
+
* import declares, which renders the same config text at build time.
|
|
9
|
+
*/
|
|
10
|
+
import type { EmbeddedContentImporter } from "@intentius/chant/import/embedded";
|
|
11
|
+
export declare const collectorConfigImporter: EmbeddedContentImporter;
|
|
12
|
+
//# sourceMappingURL=embedded.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../../src/import/embedded.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAkB,MAAM,kCAAkC,CAAC;AAWhG,eAAO,MAAM,uBAAuB,EAAE,uBAmBrC,CAAC"}
|
package/dist/integrity.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "sha256",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"manifest.json": "
|
|
4
|
+
"manifest.json": "13f551fb075d89a09dc639e1a38685b93d008b16843161c171abad21403b31ee",
|
|
5
5
|
"meta.json": "664490c2bee6c839f22994b789adc4708b01a37195f9c193dfb3c974959c5d74",
|
|
6
6
|
"types/index.d.ts": "a1070fd1cb3e8d8a9002fc5a75a80b3bdda02965be351e8aed2dbc2f63d36e3c",
|
|
7
7
|
"rules/component-id-syntax.ts": "95f507614d2626159140d906bce9d086e8ecba18ede22f5ddfbda13ac1c08169",
|
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
"skills/chant-otel-custom-components.md": "82e53bb482281f79b428e66fb80a1c194ead74a1a34a88bbebb11c6ad5493258",
|
|
23
23
|
"skills/chant-otel-platforms.md": "c90836952dc5c88d668b890152a5063bdb656bce73fc7fa3233a3ea58ad85686"
|
|
24
24
|
},
|
|
25
|
-
"composite": "
|
|
25
|
+
"composite": "07ef419a3277d5576c0a8577dd09d7950af1d36a554e8df2cf26290dee9ba135"
|
|
26
26
|
}
|
package/dist/manifest.json
CHANGED
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AA4B9D;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,aAyFxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentius/chant-lexicon-otel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.99.0",
|
|
4
4
|
"description": "OpenTelemetry Collector lexicon for chant — typed receivers, processors, exporters, connectors, extensions and pipelines, serialized to collector YAML",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://intentius.io/chant",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"typescript": "^5.9.3"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
|
-
"@intentius/chant": "^0.
|
|
71
|
+
"@intentius/chant": "^0.99.0",
|
|
72
72
|
"typescript": "^5.9.3"
|
|
73
73
|
}
|
|
74
74
|
}
|
package/src/components/common.ts
CHANGED
|
@@ -5,8 +5,13 @@
|
|
|
5
5
|
* unchanged.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* A duration the collector parses: a string such as `5s`, `250ms` or
|
|
10
|
+
* `1m30s`, or a bare integer, which the collector reads as nanoseconds
|
|
11
|
+
* (collector-contrib's own servicegraph test config writes
|
|
12
|
+
* `latency_histogram_buckets: [1,2,3,4,5]`). Prefer the string form.
|
|
13
|
+
*/
|
|
14
|
+
export type Duration = string | number;
|
|
10
15
|
|
|
11
16
|
export interface TLSClientSettings {
|
|
12
17
|
insecure?: boolean;
|
|
@@ -81,6 +81,33 @@ describe("filter processor", () => {
|
|
|
81
81
|
);
|
|
82
82
|
expect(problems(new FilterProcessor({ logs: { log_record: ["true"] } }))).toEqual([]);
|
|
83
83
|
});
|
|
84
|
+
|
|
85
|
+
test("the legacy include/exclude match blocks serialize as written and count as conditions", () => {
|
|
86
|
+
const filter = new FilterProcessor({
|
|
87
|
+
metrics: { exclude: { match_type: "strict", metric_names: ["up", "scrape_duration_seconds"] } },
|
|
88
|
+
logs: { include: { match_type: "regexp", severity_number: { min: "WARN", match_undefined: true }, bodies: ["^panic"] } },
|
|
89
|
+
spans: { exclude: { match_type: "strict", services: ["healthcheck"], span_kinds: ["SPAN_KIND_INTERNAL"] } },
|
|
90
|
+
});
|
|
91
|
+
expect(problems(filter)).toEqual([]);
|
|
92
|
+
const parsed = load(primary(otelSerializer.serialize(entities({ filter })))) as any;
|
|
93
|
+
expect(parsed.processors.filter.metrics.exclude.metric_names).toEqual(["up", "scrape_duration_seconds"]);
|
|
94
|
+
expect(parsed.processors.filter.logs.include.severity_number).toEqual({ min: "WARN", match_undefined: true });
|
|
95
|
+
expect(parsed.processors.filter.spans.exclude.span_kinds).toEqual(["SPAN_KIND_INTERNAL"]);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
test("a signal that mixes OTTL conditions with include/exclude is reported, as the collector rejects it", () => {
|
|
99
|
+
const mixed = new FilterProcessor({
|
|
100
|
+
traces: { span: ["true"] },
|
|
101
|
+
spans: { include: { match_type: "strict", services: ["a"] } },
|
|
102
|
+
metrics: { metric: ["true"], exclude: { match_type: "expr", expressions: ["MetricName == 'up'"] } },
|
|
103
|
+
logs: { log_record: ["true"], exclude: { match_type: "strict", bodies: ["x"] } },
|
|
104
|
+
});
|
|
105
|
+
expect(problems(mixed)).toEqual([
|
|
106
|
+
"traces mixes OTTL conditions with include/exclude, which the collector rejects",
|
|
107
|
+
"metrics mixes OTTL conditions with include/exclude, which the collector rejects",
|
|
108
|
+
"logs mixes OTTL conditions with include/exclude, which the collector rejects",
|
|
109
|
+
]);
|
|
110
|
+
});
|
|
84
111
|
});
|
|
85
112
|
|
|
86
113
|
describe("transform processor", () => {
|
|
@@ -8,13 +8,56 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { defineBuiltin } from "../define";
|
|
11
|
+
import type { AttributesMatch } from "./processors";
|
|
11
12
|
|
|
12
13
|
/** What an OTTL processor does when a condition or statement errors at run time. */
|
|
13
14
|
export type OttlErrorMode = "ignore" | "silent" | "propagate";
|
|
14
15
|
|
|
15
16
|
// ── filter ───────────────────────────────────────────────────────────
|
|
16
17
|
|
|
17
|
-
/**
|
|
18
|
+
/** An attribute a legacy include/exclude block matches on (`filterconfig.Attribute`). */
|
|
19
|
+
export interface FilterAttributeMatch {
|
|
20
|
+
key: string;
|
|
21
|
+
value?: unknown;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Options for the `regexp` match type (`filterset/regexp.Config`). */
|
|
25
|
+
export interface FilterRegexpSettings {
|
|
26
|
+
cacheenabled?: boolean;
|
|
27
|
+
cachemaxnumentries?: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The filter processor's legacy `metrics.include` / `metrics.exclude` block
|
|
32
|
+
* (`filterconfig.MetricMatchProperties`). `expr` takes `expressions` instead
|
|
33
|
+
* of `metric_names`.
|
|
34
|
+
*/
|
|
35
|
+
export interface FilterMetricMatch {
|
|
36
|
+
match_type: "strict" | "regexp" | "expr";
|
|
37
|
+
regexp?: FilterRegexpSettings;
|
|
38
|
+
metric_names?: string[];
|
|
39
|
+
expressions?: string[];
|
|
40
|
+
resource_attributes?: FilterAttributeMatch[];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** The filter processor's legacy `logs.include` / `logs.exclude` block (`LogMatchProperties`). */
|
|
44
|
+
export interface FilterLogMatch {
|
|
45
|
+
match_type: "strict" | "regexp";
|
|
46
|
+
resource_attributes?: FilterAttributeMatch[];
|
|
47
|
+
record_attributes?: FilterAttributeMatch[];
|
|
48
|
+
severity_texts?: string[];
|
|
49
|
+
/** Matches records at or above `min`, a severity number or name such as `INFO`. */
|
|
50
|
+
severity_number?: { min: number | string; match_undefined?: boolean };
|
|
51
|
+
bodies?: string[];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Conditions per signal. Telemetry matching any condition is dropped.
|
|
56
|
+
*
|
|
57
|
+
* Each signal takes OTTL conditions or the legacy `include` / `exclude`
|
|
58
|
+
* match blocks (for traces, the legacy blocks sit under `spans`), not both:
|
|
59
|
+
* the collector rejects a signal that mixes them.
|
|
60
|
+
*/
|
|
18
61
|
export interface FilterProcessorConfig {
|
|
19
62
|
/** Default `propagate`: an erroring condition fails the batch. `ignore` logs and moves on. */
|
|
20
63
|
error_mode?: OttlErrorMode;
|
|
@@ -24,15 +67,27 @@ export interface FilterProcessorConfig {
|
|
|
24
67
|
/** Drops the span event. */
|
|
25
68
|
spanevent?: string[];
|
|
26
69
|
};
|
|
70
|
+
/** Legacy span matching. With `include`, spans that do not match are dropped; with `exclude`, spans that match. */
|
|
71
|
+
spans?: { include?: AttributesMatch; exclude?: AttributesMatch };
|
|
27
72
|
metrics?: {
|
|
28
73
|
/** Drops the whole metric, e.g. `name == "http.server.duration" and type == METRIC_DATA_TYPE_HISTOGRAM`. */
|
|
29
74
|
metric?: string[];
|
|
30
75
|
/** Drops the data point. */
|
|
31
76
|
datapoint?: string[];
|
|
77
|
+
/** Legacy: keeps only the metrics that match. */
|
|
78
|
+
include?: FilterMetricMatch;
|
|
79
|
+
/** Legacy: drops the metrics that match. */
|
|
80
|
+
exclude?: FilterMetricMatch;
|
|
81
|
+
/** Legacy: options for the `regexp` match type. */
|
|
82
|
+
regexp?: FilterRegexpSettings;
|
|
32
83
|
};
|
|
33
84
|
logs?: {
|
|
34
85
|
/** Drops the log record, e.g. `severity_number < SEVERITY_NUMBER_WARN`. */
|
|
35
86
|
log_record?: string[];
|
|
87
|
+
/** Legacy: keeps only the log records that match. */
|
|
88
|
+
include?: FilterLogMatch;
|
|
89
|
+
/** Legacy: drops the log records that match. */
|
|
90
|
+
exclude?: FilterLogMatch;
|
|
36
91
|
};
|
|
37
92
|
}
|
|
38
93
|
|
|
@@ -55,7 +110,15 @@ export const FilterProcessor = defineBuiltin<FilterProcessorConfig, "processor",
|
|
|
55
110
|
if (typeof cond !== "string" || cond.trim() === "") problems.push(`${path}[${i}] is an empty condition`);
|
|
56
111
|
});
|
|
57
112
|
}
|
|
58
|
-
|
|
113
|
+
const legacy: Array<[string, boolean, boolean]> = [
|
|
114
|
+
["traces", !!(c.traces?.span || c.traces?.spanevent), !!(c.spans?.include || c.spans?.exclude)],
|
|
115
|
+
["metrics", !!(c.metrics?.metric || c.metrics?.datapoint), !!(c.metrics?.include || c.metrics?.exclude)],
|
|
116
|
+
["logs", !!c.logs?.log_record, !!(c.logs?.include || c.logs?.exclude)],
|
|
117
|
+
];
|
|
118
|
+
for (const [signal, ottl, matchBlocks] of legacy) {
|
|
119
|
+
if (ottl && matchBlocks) problems.push(`${signal} mixes OTTL conditions with include/exclude, which the collector rejects`);
|
|
120
|
+
}
|
|
121
|
+
if (lists.every(([, list]) => !list || list.length === 0) && legacy.every(([, , matchBlocks]) => !matchBlocks)) {
|
|
59
122
|
problems.push("no condition is set for any signal, so the processor drops nothing");
|
|
60
123
|
}
|
|
61
124
|
return problems;
|
|
@@ -73,12 +73,16 @@ export const ResourceProcessor = defineBuiltin<ResourceProcessorConfig, "process
|
|
|
73
73
|
|
|
74
74
|
// ── attributes ───────────────────────────────────────────────────────
|
|
75
75
|
|
|
76
|
+
/** An include/exclude block of the attributes processor and the filter processor's legacy `spans` (`filterconfig.MatchProperties`). */
|
|
76
77
|
export interface AttributesMatch {
|
|
77
78
|
match_type: "strict" | "regexp";
|
|
79
|
+
regexp?: { cacheenabled?: boolean; cachemaxnumentries?: number };
|
|
78
80
|
services?: string[];
|
|
79
81
|
span_names?: string[];
|
|
82
|
+
span_kinds?: string[];
|
|
80
83
|
log_bodies?: string[];
|
|
81
84
|
log_severity_texts?: string[];
|
|
85
|
+
log_severity_number?: { min: number | string; match_undefined?: boolean };
|
|
82
86
|
metric_names?: string[];
|
|
83
87
|
attributes?: Array<{ key: string; value?: unknown }>;
|
|
84
88
|
resources?: Array<{ key: string; value?: unknown }>;
|
|
@@ -44,25 +44,109 @@ export interface PrometheusStaticConfig {
|
|
|
44
44
|
labels?: Record<string, string>;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
/**
|
|
48
|
-
export interface
|
|
47
|
+
/** Prometheus's `tls_config` (prometheus/common `TLSConfig`). Versions are spelled `TLS12`, `TLS13`. */
|
|
48
|
+
export interface PrometheusTLSConfig {
|
|
49
|
+
ca?: string;
|
|
50
|
+
cert?: string;
|
|
51
|
+
key?: string;
|
|
52
|
+
ca_file?: string;
|
|
53
|
+
cert_file?: string;
|
|
54
|
+
key_file?: string;
|
|
55
|
+
ca_ref?: string;
|
|
56
|
+
cert_ref?: string;
|
|
57
|
+
key_ref?: string;
|
|
58
|
+
server_name?: string;
|
|
59
|
+
insecure_skip_verify?: boolean;
|
|
60
|
+
min_version?: string;
|
|
61
|
+
max_version?: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** Prometheus's proxy settings, inlined into the HTTP client and OAuth2 blocks. */
|
|
65
|
+
export interface PrometheusProxySettings {
|
|
66
|
+
proxy_url?: string;
|
|
67
|
+
no_proxy?: string;
|
|
68
|
+
proxy_from_environment?: boolean;
|
|
69
|
+
proxy_connect_header?: Record<string, string[]>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Scrape authentication with a user name and password. Prefer `password_file` or `${env:...}` to a literal password. */
|
|
73
|
+
export interface PrometheusBasicAuth {
|
|
74
|
+
username?: string;
|
|
75
|
+
username_file?: string;
|
|
76
|
+
username_ref?: string;
|
|
77
|
+
password?: string;
|
|
78
|
+
password_file?: string;
|
|
79
|
+
password_ref?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** An `Authorization` header: `type` defaults to `Bearer`. */
|
|
83
|
+
export interface PrometheusAuthorization {
|
|
84
|
+
type?: string;
|
|
85
|
+
credentials?: string;
|
|
86
|
+
credentials_file?: string;
|
|
87
|
+
credentials_ref?: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface PrometheusOAuth2 extends PrometheusProxySettings {
|
|
91
|
+
client_id: string;
|
|
92
|
+
client_secret?: string;
|
|
93
|
+
client_secret_file?: string;
|
|
94
|
+
client_secret_ref?: string;
|
|
95
|
+
scopes?: string[];
|
|
96
|
+
token_url: string;
|
|
97
|
+
endpoint_params?: Record<string, string>;
|
|
98
|
+
tls_config?: PrometheusTLSConfig;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* One Prometheus scrape job, as the Prometheus release collector-contrib
|
|
103
|
+
* v0.130.0 embeds reads it (scrape settings plus prometheus/common's HTTP
|
|
104
|
+
* client settings). Service-discovery (`*_sd_configs`) and relabel blocks
|
|
105
|
+
* pass through as written.
|
|
106
|
+
*/
|
|
107
|
+
export interface PrometheusScrapeConfig extends PrometheusProxySettings {
|
|
49
108
|
job_name: string;
|
|
50
109
|
scrape_interval?: Duration;
|
|
51
110
|
scrape_timeout?: Duration;
|
|
111
|
+
scrape_protocols?: string[];
|
|
112
|
+
fallback_scrape_protocol?: string;
|
|
113
|
+
always_scrape_classic_histograms?: boolean;
|
|
114
|
+
convert_classic_histograms_to_nhcb?: boolean;
|
|
115
|
+
scrape_failure_log_file?: string;
|
|
52
116
|
metrics_path?: string;
|
|
53
117
|
scheme?: "http" | "https";
|
|
54
118
|
honor_labels?: boolean;
|
|
55
119
|
honor_timestamps?: boolean;
|
|
120
|
+
track_timestamps_staleness?: boolean;
|
|
121
|
+
enable_compression?: boolean;
|
|
56
122
|
params?: Record<string, string[]>;
|
|
57
123
|
static_configs?: PrometheusStaticConfig[];
|
|
58
124
|
kubernetes_sd_configs?: Array<Record<string, unknown>>;
|
|
59
125
|
file_sd_configs?: Array<Record<string, unknown>>;
|
|
126
|
+
/** Any other service-discovery block (`dns_sd_configs`, `ec2_sd_configs`, `consul_sd_configs`, ...). */
|
|
127
|
+
[sd: `${string}_sd_configs`]: Array<Record<string, unknown>> | undefined;
|
|
60
128
|
relabel_configs?: Array<Record<string, unknown>>;
|
|
61
129
|
metric_relabel_configs?: Array<Record<string, unknown>>;
|
|
62
|
-
|
|
63
|
-
authorization?:
|
|
130
|
+
basic_auth?: PrometheusBasicAuth;
|
|
131
|
+
authorization?: PrometheusAuthorization;
|
|
132
|
+
oauth2?: PrometheusOAuth2;
|
|
133
|
+
bearer_token?: string;
|
|
64
134
|
bearer_token_file?: string;
|
|
135
|
+
tls_config?: PrometheusTLSConfig;
|
|
136
|
+
follow_redirects?: boolean;
|
|
137
|
+
enable_http2?: boolean;
|
|
138
|
+
http_headers?: Record<string, { values?: string[]; secrets?: string[]; files?: string[] }>;
|
|
139
|
+
body_size_limit?: string;
|
|
65
140
|
sample_limit?: number;
|
|
141
|
+
target_limit?: number;
|
|
142
|
+
label_limit?: number;
|
|
143
|
+
label_name_length_limit?: number;
|
|
144
|
+
label_value_length_limit?: number;
|
|
145
|
+
native_histogram_bucket_limit?: number;
|
|
146
|
+
native_histogram_min_bucket_factor?: number;
|
|
147
|
+
keep_dropped_targets?: number;
|
|
148
|
+
metric_name_validation_scheme?: "utf8" | "legacy";
|
|
149
|
+
metric_name_escaping_scheme?: "allow-utf-8" | "underscores" | "dots" | "values";
|
|
66
150
|
}
|
|
67
151
|
|
|
68
152
|
export interface PrometheusReceiverConfig {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { embeddedDocument, type EmbeddedContent } from "@intentius/chant/import/embedded";
|
|
3
|
+
import { otelPlugin } from "../plugin";
|
|
4
|
+
import { collectorConfigImporter } from "./embedded";
|
|
5
|
+
|
|
6
|
+
const CONFIG = `receivers:
|
|
7
|
+
otlp:
|
|
8
|
+
protocols:
|
|
9
|
+
grpc: {}
|
|
10
|
+
mycorp: {}
|
|
11
|
+
exporters:
|
|
12
|
+
debug: {}
|
|
13
|
+
service:
|
|
14
|
+
pipelines:
|
|
15
|
+
traces:
|
|
16
|
+
receivers: [otlp, mycorp]
|
|
17
|
+
exporters: [debug]
|
|
18
|
+
`;
|
|
19
|
+
|
|
20
|
+
const site = (text: string, over: Partial<EmbeddedContent> = {}): EmbeddedContent => ({
|
|
21
|
+
host: "k8s",
|
|
22
|
+
hostType: "K8s::Core::ConfigMap",
|
|
23
|
+
location: 'ConfigMap agent data["config.yaml"]',
|
|
24
|
+
directory: "agent",
|
|
25
|
+
text,
|
|
26
|
+
document: embeddedDocument(text),
|
|
27
|
+
...over,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
describe("a collector config embedded in another lexicon's resource (#2962)", () => {
|
|
31
|
+
test("the plugin registers the importer", () => {
|
|
32
|
+
expect(otelPlugin.embeddedImporters?.()).toEqual([collectorConfigImporter]);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test("matches collector configs held as text, nothing else", () => {
|
|
36
|
+
expect(collectorConfigImporter.matches(site(CONFIG))).toBe(true);
|
|
37
|
+
expect(collectorConfigImporter.matches(site("groups: []\n"))).toBe(false);
|
|
38
|
+
expect(collectorConfigImporter.matches(site(CONFIG, { select: "config" }))).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("imports the config as `chant import` does, referenced through collectorYaml", () => {
|
|
42
|
+
const out = collectorConfigImporter.import(site(CONFIG));
|
|
43
|
+
expect(out.files.map((f) => f.path)).toEqual(["custom-components.ts", "receivers.ts", "exporters.ts", "pipelines.ts"]);
|
|
44
|
+
// Every declared component and pipeline, not the custom component's class.
|
|
45
|
+
expect(out.value).toEqual({
|
|
46
|
+
bindings: [
|
|
47
|
+
{ from: "receivers.ts", name: "otlp" },
|
|
48
|
+
{ from: "receivers.ts", name: "mycorp" },
|
|
49
|
+
{ from: "exporters.ts", name: "debug" },
|
|
50
|
+
{ from: "pipelines.ts", name: "traces" },
|
|
51
|
+
],
|
|
52
|
+
shape: "list",
|
|
53
|
+
through: { from: "@intentius/chant-lexicon-otel", name: "collectorYaml" },
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A collector config embedded in another lexicon's resource, e.g. the
|
|
3
|
+
* `config.yaml` of a k8s ConfigMap, for `chant import` (#2962).
|
|
4
|
+
*
|
|
5
|
+
* The config is imported exactly as `chant import config.yaml` would import
|
|
6
|
+
* it, into a directory of its own, and the host's value becomes
|
|
7
|
+
* `collectorYaml([...])` over every component, pipeline and service the
|
|
8
|
+
* import declares, which renders the same config text at build time.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { EmbeddedContentImporter, EmbeddedImport } from "@intentius/chant/import/embedded";
|
|
12
|
+
import { exportedNames } from "@intentius/chant/import/embedded";
|
|
13
|
+
import { looksLikeCollectorConfig } from "../model";
|
|
14
|
+
import { OtelCollectorParser } from "./parser";
|
|
15
|
+
import { OtelCollectorGenerator } from "./generator";
|
|
16
|
+
|
|
17
|
+
const PACKAGE = "@intentius/chant-lexicon-otel";
|
|
18
|
+
|
|
19
|
+
/** The module holding `defineComponent` classes: types, not config entities. */
|
|
20
|
+
const CUSTOM_COMPONENTS = "custom-components.ts";
|
|
21
|
+
|
|
22
|
+
export const collectorConfigImporter: EmbeddedContentImporter = {
|
|
23
|
+
what: "an OpenTelemetry Collector config",
|
|
24
|
+
|
|
25
|
+
matches(content) {
|
|
26
|
+
return typeof content.text === "string" && content.select === undefined && looksLikeCollectorConfig(content.document);
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
import(content): EmbeddedImport {
|
|
30
|
+
const ir = new OtelCollectorParser().parse(content.text!);
|
|
31
|
+
const files = new OtelCollectorGenerator().generate(ir);
|
|
32
|
+
const bindings = files
|
|
33
|
+
.filter((f) => f.path !== CUSTOM_COMPONENTS)
|
|
34
|
+
.flatMap((f) => exportedNames(f.content).map((name) => ({ from: f.path, name })));
|
|
35
|
+
return {
|
|
36
|
+
files,
|
|
37
|
+
value: { bindings, shape: "list", through: { from: PACKAGE, name: "collectorYaml" } },
|
|
38
|
+
warnings: ir.warnings ?? [],
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
};
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
* budget allows, so this runs with the e2e tests.
|
|
5
5
|
*/
|
|
6
6
|
import { describe, expect, test } from "vitest";
|
|
7
|
-
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "fs";
|
|
7
|
+
import { mkdirSync, mkdtempSync, readdirSync, rmSync, writeFileSync } from "fs";
|
|
8
8
|
import { join } from "path";
|
|
9
9
|
import * as ts from "typescript";
|
|
10
10
|
import { collectorYaml } from "../collector";
|
|
11
11
|
import { genAiPipeline } from "../genai";
|
|
12
12
|
import { OtelCollectorParser } from "./parser";
|
|
13
13
|
import { OtelCollectorGenerator } from "./generator";
|
|
14
|
-
import { everyBuiltin, exampleOutputs, pkgDir, read, repoRoot
|
|
14
|
+
import { everyBuiltin, exampleOutputs, pkgDir, read, repoRoot } from "./testdata/fixtures";
|
|
15
15
|
|
|
16
16
|
/** Type errors in generated projects, compiled together against the lexicon's source with the repo's compiler options. */
|
|
17
17
|
function typeErrors(projects: Record<string, Array<{ path: string; content: string }>>): string[] {
|
|
@@ -45,31 +45,66 @@ function typeErrors(projects: Record<string, Array<{ path: string; content: stri
|
|
|
45
45
|
|
|
46
46
|
const generate = (yaml: string) => new OtelCollectorGenerator().generate(new OtelCollectorParser().parse(yaml));
|
|
47
47
|
|
|
48
|
+
/** Every vendored import fixture, by path under testdata/: the chant-built configs and the collector-contrib ones. */
|
|
49
|
+
function vendoredFixtures(): string[] {
|
|
50
|
+
const dir = join(import.meta.dirname, "testdata");
|
|
51
|
+
const yamlIn = (sub: string) =>
|
|
52
|
+
readdirSync(join(dir, sub))
|
|
53
|
+
.filter((f) => f.endsWith(".yaml"))
|
|
54
|
+
.sort()
|
|
55
|
+
.map((f) => (sub ? `${sub}/${f}` : f));
|
|
56
|
+
return [...yamlIn(""), ...yamlIn("upstream")];
|
|
57
|
+
}
|
|
58
|
+
|
|
48
59
|
describe("the generated source type-checks against the lexicon's config types", () => {
|
|
49
|
-
test("for every fixture
|
|
60
|
+
test("for every vendored fixture, every example's output, genAiPipeline() and every built-in's typed fields", async () => {
|
|
61
|
+
const fixtures = vendoredFixtures();
|
|
62
|
+
// The corpus the round-trip tests read; a missing directory would pass vacuously.
|
|
63
|
+
expect(fixtures).toEqual(expect.arrayContaining(["gateway.yaml", "upstream/couchbase.yaml", "upstream/servicegraph-nop.yaml"]));
|
|
64
|
+
expect(fixtures.length).toBeGreaterThanOrEqual(12);
|
|
50
65
|
const projects: Record<string, Array<{ path: string; content: string }>> = {
|
|
51
|
-
|
|
52
|
-
agent: generate(read("agent-observability-agent.yaml")),
|
|
53
|
-
agentGateway: generate(read("agent-observability-gateway.yaml")),
|
|
66
|
+
...Object.fromEntries(fixtures.map((f) => [f, generate(read(...f.split("/")))])),
|
|
54
67
|
genai: generate(collectorYaml(genAiPipeline())),
|
|
55
68
|
everyBuiltin: generate(collectorYaml(everyBuiltin())),
|
|
56
|
-
|
|
57
|
-
...Object.fromEntries(UPSTREAM_BUILTIN_ONLY.map((f) => [f, generate(read("upstream", f))])),
|
|
58
|
-
...Object.fromEntries((await exampleOutputs()).map(([n, y]) => [n, generate(y)])),
|
|
69
|
+
...Object.fromEntries((await exampleOutputs()).map(([n, y]) => [`example-${n}`, generate(y)])),
|
|
59
70
|
};
|
|
60
71
|
expect(typeErrors(projects)).toEqual([]);
|
|
61
72
|
}, 120_000);
|
|
62
73
|
|
|
63
74
|
test("a value outside a built-in's typed config is carried as found, and tsc points at it", () => {
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
// The type check is not vacuous: a batch timeout of `true` is neither a duration string nor
|
|
76
|
+
// nanoseconds, and a scrape job stays closed to keys Prometheus does not read.
|
|
77
|
+
const yaml = [
|
|
78
|
+
"receivers:",
|
|
79
|
+
" otlp:",
|
|
80
|
+
" protocols:",
|
|
81
|
+
" grpc: {}",
|
|
82
|
+
" prometheus:",
|
|
83
|
+
" config:",
|
|
84
|
+
" scrape_configs:",
|
|
85
|
+
" - job_name: self",
|
|
86
|
+
" static_configs: [{ targets: [\"localhost:8888\"] }]",
|
|
87
|
+
" basic_auth: { username: u, password_file: /etc/p }",
|
|
88
|
+
" scrape_everything: true",
|
|
89
|
+
"processors:",
|
|
90
|
+
" batch:",
|
|
91
|
+
" timeout: true",
|
|
92
|
+
"exporters:",
|
|
93
|
+
" debug: {}",
|
|
94
|
+
"service:",
|
|
95
|
+
" pipelines:",
|
|
96
|
+
" traces:",
|
|
97
|
+
" receivers: [otlp]",
|
|
98
|
+
" processors: [batch]",
|
|
99
|
+
" exporters: [debug]",
|
|
100
|
+
" metrics:",
|
|
101
|
+
" receivers: [prometheus]",
|
|
102
|
+
" exporters: [debug]",
|
|
103
|
+
"",
|
|
104
|
+
].join("\n");
|
|
105
|
+
expect(typeErrors({ bad: generate(yaml) })).toEqual([
|
|
106
|
+
expect.stringMatching(/^bad\/processors\.ts: Type 'true' is not assignable to type 'Duration/),
|
|
107
|
+
expect.stringMatching(/^bad\/receivers\.ts: .*'scrape_everything' does not exist in type 'PrometheusScrapeConfig'/),
|
|
70
108
|
]);
|
|
71
|
-
// The servicegraph test config writes bucket durations as bare integers (nanoseconds); Duration is a string.
|
|
72
|
-
const servicegraph = typeErrors({ servicegraph: generate(read("upstream", "servicegraph-nop.yaml")) });
|
|
73
|
-
expect(servicegraph).toEqual(Array(5).fill("servicegraph/connectors.ts: Type 'number' is not assignable to type 'string'."));
|
|
74
109
|
}, 120_000);
|
|
75
110
|
});
|
package/src/plugin.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { hover } from "./lsp/hover";
|
|
|
11
11
|
import { detectTemplate } from "./detect";
|
|
12
12
|
import { OtelCollectorParser } from "./import/parser";
|
|
13
13
|
import { OtelCollectorGenerator } from "./import/generator";
|
|
14
|
+
import { collectorConfigImporter } from "./import/embedded";
|
|
14
15
|
import { otelSkills } from "./skill-defs";
|
|
15
16
|
import { BUILTIN_CATALOG } from "./catalog";
|
|
16
17
|
import { COLLECTOR_PIN } from "./define";
|
|
@@ -106,6 +107,10 @@ export const otelPlugin: LexiconPlugin = {
|
|
|
106
107
|
return new OtelCollectorGenerator();
|
|
107
108
|
},
|
|
108
109
|
|
|
110
|
+
embeddedImporters() {
|
|
111
|
+
return [collectorConfigImporter];
|
|
112
|
+
},
|
|
113
|
+
|
|
109
114
|
completionProvider(ctx: CompletionContext) {
|
|
110
115
|
return completions(ctx);
|
|
111
116
|
},
|