Insert group name into services of so11y and istio relevant metrics (#5897)
This commit is contained in:
parent
127782f135
commit
53e42bce5d
|
|
@ -54,10 +54,14 @@ Release Notes.
|
|||
* Fix "transaction too large error" when use TiDB as storage.
|
||||
* Add otel rules to ui template to observe Istio control plane.
|
||||
* Remove istio mixer
|
||||
* Insert group name into services of so11y and istio relevant metrics
|
||||
|
||||
#### UI
|
||||
* Fix incorrect label in radial chart in topology.
|
||||
* Replace node-sass with dart-sass.
|
||||
* Replace serviceFilter with serviceGroup
|
||||
* Removed "Les Miserables" from radial chart in topology.
|
||||
* Add the Promise dropdown option
|
||||
|
||||
#### Documentation
|
||||
* Add VNode FAQ doc.
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@ staticConfig:
|
|||
# Labels assigned to all metrics fetched from the targets.
|
||||
labels:
|
||||
[ <labelname>: <labelvalue> ... ]
|
||||
# insert group_name into metric name, for example, meter_<group_name>_<raw_metric_name>
|
||||
group: <group_name>
|
||||
# default metric level function appends to all expression in this file.
|
||||
defaultMetricLevel: <exp>
|
||||
# expSuffix is appended to all expression in this file.
|
||||
expSuffix: <string>
|
||||
# insert metricPrefix into metric name: <metricPrefix>_<raw_metric_name>
|
||||
metricPrefix: <string>
|
||||
# Metrics rule allow you to recompute queries.
|
||||
metricsRules:
|
||||
[ - <metric_rules> ]
|
||||
|
|
|
|||
|
|
@ -48,9 +48,9 @@ public class MetricConvert {
|
|||
private final List<Analyzer> analyzers;
|
||||
|
||||
public MetricConvert(Rule rule, MeterSystem service) {
|
||||
Preconditions.checkState(!Strings.isNullOrEmpty(rule.getGroup()));
|
||||
Preconditions.checkState(!Strings.isNullOrEmpty(rule.getMetricPrefix()));
|
||||
this.analyzers = rule.getMetricsRules().stream().map(r -> Analyzer.build(formatMetricName(rule, r.getName()),
|
||||
Strings.isEmpty(rule.getDefaultMetricLevel()) ? r.getExp() : String.format("(%s).%s", r.getExp(), rule.getDefaultMetricLevel()), service))
|
||||
Strings.isEmpty(rule.getExpSuffix()) ? r.getExp() : String.format("(%s).%s", r.getExp(), rule.getExpSuffix()), service))
|
||||
.collect(toList());
|
||||
}
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ public class MetricConvert {
|
|||
|
||||
private String formatMetricName(Rule rule, String meterRuleName) {
|
||||
StringJoiner metricName = new StringJoiner("_");
|
||||
metricName.add("meter").add(rule.getGroup()).add(meterRuleName);
|
||||
metricName.add(rule.getMetricPrefix()).add(meterRuleName);
|
||||
return metricName.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public class Rule {
|
|||
private String fetcherTimeout;
|
||||
private String metricsPath;
|
||||
private StaticConfig staticConfig;
|
||||
private String group;
|
||||
private String defaultMetricLevel;
|
||||
private String metricPrefix;
|
||||
private String expSuffix;
|
||||
private List<MetricsRule> metricsRules;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,6 +81,13 @@ public class FunctionTest {
|
|||
Result.success(SampleFamily.build(Sample.builder().labels(of("region", "zh")).build())),
|
||||
false,
|
||||
},
|
||||
{
|
||||
"tag-append",
|
||||
of("instance_cpu_percentage", SampleFamily.build(Sample.builder().labels(of("region", "us")).build())),
|
||||
"instance_cpu_percentage.tag({tags -> tags.region = 'prefix::' + tags.region})",
|
||||
Result.success(SampleFamily.build(Sample.builder().labels(of("region", "prefix::us")).build())),
|
||||
false,
|
||||
},
|
||||
{
|
||||
"histogram",
|
||||
of("instance_cpu_percentage", SampleFamily.build(
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@ staticConfig:
|
|||
sslCaFilePath:
|
||||
labels:
|
||||
service: oap-server
|
||||
defaultMetricLevel: instance(['service'], ['instance'])
|
||||
group: oap
|
||||
expSuffix: tag({tags -> tags.service = 'oap::' + tags.service}).instance(['service'], ['instance'])
|
||||
metricPrefix: meter_oap
|
||||
metricsRules:
|
||||
- name: instance_cpu_percentage
|
||||
exp: (process_cpu_seconds_total * 100).sum(['service', 'instance']).rate('PT1M')
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
# </pre>
|
||||
group: istio
|
||||
defaultMetricLevel: service(['cluster', 'app'])
|
||||
expSuffix: tag({tags -> tags.cluster = 'istio-ctrl::' + tags.cluster}).service(['cluster', 'app'])
|
||||
metricPrefix: meter_istio
|
||||
metricsRules:
|
||||
## Resource usage
|
||||
# Pilot Versions
|
||||
|
|
|
|||
|
|
@ -28,9 +28,8 @@
|
|||
# "-P6H3M" -- parses as "-6 hours and -3 minutes"
|
||||
# "-P-6H+3M" -- parses as "+6 hours and -3 minutes"
|
||||
# </pre>
|
||||
group: oap
|
||||
# Self-monitoring defaults to prometheus fetcher.
|
||||
defaultMetricLevel: instance(['service'], ['host_name'])
|
||||
expSuffix: tag({tags -> tags.service = 'oap::' + tags.service}).instance(['service'], ['host_name'])
|
||||
metricPrefix: meter_oap
|
||||
metricsRules:
|
||||
- name: instance_cpu_percentage
|
||||
exp: (process_cpu_seconds_total * 100).sum(['service', 'host_name']).rate('PT1M')
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ templates:
|
|||
{
|
||||
"name": "Istio",
|
||||
"type": "service",
|
||||
"serviceGroup": "istio-ctrl",
|
||||
"children": [
|
||||
{
|
||||
"name": "Control Plane",
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ templates:
|
|||
{
|
||||
"name": "SelfObservability",
|
||||
"type": "service",
|
||||
"serviceGroup": "oap",
|
||||
"children": [
|
||||
{
|
||||
"name": "oap-server",
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 00fedacc5fe842f44952f58719fc6a9659147367
|
||||
Subproject commit eb7717e9daf5dd13eb561c4905301017470ec528
|
||||
|
|
@ -101,7 +101,7 @@ public class PythonE2E extends SkyWalkingTestAdapter {
|
|||
@RetryableTest
|
||||
void services() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
|
||||
load("expected/python/services.yml").as(ServicesMatcher.class).verify(services);
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ public class KafkaE2E extends SkyWalkingTestAdapter {
|
|||
void services() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
|
||||
load("expected/simple/services.yml").as(ServicesMatcher.class).verify(services);
|
||||
|
|
@ -171,7 +171,7 @@ public class KafkaE2E extends SkyWalkingTestAdapter {
|
|||
void so11y() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
|
||||
services = services.stream().filter(s -> s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
load("expected/simple/so11y-services.yml").as(ServicesMatcher.class).verify(services);
|
||||
for (final Service service : services) {
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class MeterE2E extends SkyWalkingTestAdapter {
|
|||
void meters() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
|
||||
load("expected/meter/services.yml").as(ServicesMatcher.class).verify(services);
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ public class SimpleE2E extends SkyWalkingTestAdapter {
|
|||
void services() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
|
||||
load("expected/simple/services.yml").as(ServicesMatcher.class).verify(services);
|
||||
|
|
@ -203,7 +203,7 @@ public class SimpleE2E extends SkyWalkingTestAdapter {
|
|||
void so11y() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
|
||||
services = services.stream().filter(s -> s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
load("expected/simple/so11y-services.yml").as(ServicesMatcher.class).verify(services);
|
||||
for (final Service service : services) {
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ public class StorageE2E extends SkyWalkingTestAdapter {
|
|||
void services() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> !s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
|
||||
load("expected/storage/services.yml").as(ServicesMatcher.class).verify(services);
|
||||
|
|
@ -233,7 +233,7 @@ public class StorageE2E extends SkyWalkingTestAdapter {
|
|||
void so11y() throws Exception {
|
||||
List<Service> services = graphql.services(new ServicesQuery().start(startTime).end(now()));
|
||||
|
||||
services = services.stream().filter(s -> s.getLabel().equals("oap-server")).collect(Collectors.toList());
|
||||
services = services.stream().filter(s -> s.getLabel().equals("oap::oap-server")).collect(Collectors.toList());
|
||||
LOGGER.info("services: {}", services);
|
||||
load("expected/simple/so11y-services.yml").as(ServicesMatcher.class).verify(services);
|
||||
for (final Service service : services) {
|
||||
|
|
|
|||
|
|
@ -15,4 +15,4 @@
|
|||
|
||||
services:
|
||||
- key: not null
|
||||
label: "oap-server"
|
||||
label: "oap::oap-server"
|
||||
|
|
|
|||
Loading…
Reference in New Issue