Add template of OpenFunction (#8789)
This commit is contained in:
parent
f8feaa97b7
commit
bfdbd55285
|
|
@ -168,6 +168,7 @@ NOTICE, this sharding concept is NOT just for splitting data into different data
|
|||
* Re-implement UI template initialization for Booster UI.
|
||||
* Add environment variable `SW_ENABLE_UPDATE_UI_TEMPLATE` to control user edit UI template.
|
||||
* Add the Self Observability template of the SkyWalking Satellite.
|
||||
* Add the template of OpenFunction observability.
|
||||
|
||||
#### Documentation
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit b7548df896330bd4cd0ae42d95df9b9cc511f139
|
||||
Subproject commit 68825459980d14702de8fb2303c7997624129991
|
||||
|
|
@ -286,20 +286,24 @@ public class RPCAnalysisListener extends CommonAnalysisListener implements Entry
|
|||
callingIn.prepare();
|
||||
sourceReceiver.receive(callingIn.toService());
|
||||
sourceReceiver.receive(callingIn.toServiceInstance());
|
||||
sourceReceiver.receive(callingIn.toEndpoint());
|
||||
sourceReceiver.receive(callingIn.toServiceRelation());
|
||||
sourceReceiver.receive(callingIn.toServiceInstanceRelation());
|
||||
EndpointRelation endpointRelation = callingIn.toEndpointRelation();
|
||||
/*
|
||||
* Parent endpoint could be none, because in SkyWalking Cross Process Propagation Headers Protocol v2,
|
||||
* endpoint in ref could be empty, based on that, endpoint relation maybe can't be established.
|
||||
* So, I am making this source as optional.
|
||||
*
|
||||
* Also, since 6.6.0, source endpoint could be none, if this trace begins by an internal task(local span or exit span), such as Timer,
|
||||
* rather than, normally begin as an entry span, like a RPC server side.
|
||||
*/
|
||||
if (endpointRelation != null) {
|
||||
sourceReceiver.receive(endpointRelation);
|
||||
// Service is equivalent to endpoint in FaaS (function as a service)
|
||||
// Don't generate endpoint and endpoint dependency to avoid unnecessary costs.
|
||||
if (Layer.FAAS != callingIn.getDestLayer()) {
|
||||
sourceReceiver.receive(callingIn.toEndpoint());
|
||||
EndpointRelation endpointRelation = callingIn.toEndpointRelation();
|
||||
/*
|
||||
* Parent endpoint could be none, because in SkyWalking Cross Process Propagation Headers Protocol v2,
|
||||
* endpoint in ref could be empty, based on that, endpoint relation maybe can't be established.
|
||||
* So, I am making this source as optional.
|
||||
*
|
||||
* Also, since 6.6.0, source endpoint could be none, if this trace begins by an internal task(local span or exit span), such as Timer,
|
||||
* rather than, normally begin as an entry span, like a RPC server side.
|
||||
*/
|
||||
if (endpointRelation != null) {
|
||||
sourceReceiver.receive(endpointRelation);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.core.analysis;
|
|||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import org.apache.skywalking.oap.server.core.UnexpectedException;
|
||||
|
||||
/**
|
||||
|
|
@ -126,9 +125,13 @@ public enum Layer {
|
|||
*/
|
||||
private final boolean isNormal;
|
||||
private static final Map<Integer, Layer> DICTIONARY = new HashMap<>();
|
||||
private static final Map<String, Layer> DICTIONARY_NAME = new HashMap<>();
|
||||
|
||||
static {
|
||||
Arrays.stream(Layer.values()).collect(Collectors.toMap(Layer::value, layer -> layer)).forEach(DICTIONARY::put);
|
||||
Arrays.stream(Layer.values()).forEach(l -> {
|
||||
DICTIONARY.put(l.value, l);
|
||||
DICTIONARY_NAME.put(l.name(), l);
|
||||
});
|
||||
}
|
||||
|
||||
Layer(int value, boolean isNormal) {
|
||||
|
|
@ -148,6 +151,14 @@ public enum Layer {
|
|||
return layer;
|
||||
}
|
||||
|
||||
public static Layer nameOf(String name) {
|
||||
Layer layer = DICTIONARY_NAME.get(name);
|
||||
if (layer == null) {
|
||||
throw new UnexpectedException("Unknown Layer name");
|
||||
}
|
||||
return layer;
|
||||
}
|
||||
|
||||
public boolean isNormal() {
|
||||
return isNormal;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public class UITemplateInitializer {
|
|||
Layer.VIRTUAL_DATABASE.name(),
|
||||
Layer.K8S_SERVICE.name(),
|
||||
Layer.SO11Y_SATELLITE.name(),
|
||||
Layer.FAAS.name(),
|
||||
"custom"
|
||||
};
|
||||
private final UITemplateManagementService uiTemplateManagementService;
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import org.apache.skywalking.oap.server.core.source.ServiceInstanceUpdate;
|
|||
import org.apache.skywalking.oap.server.core.source.ServiceMeta;
|
||||
import org.apache.skywalking.oap.server.core.source.SourceReceiver;
|
||||
import org.apache.skywalking.oap.server.library.module.ModuleManager;
|
||||
import org.apache.skywalking.oap.server.library.util.StringUtil;
|
||||
|
||||
public final class ManagementServiceHandler {
|
||||
private final SourceReceiver sourceReceiver;
|
||||
|
|
@ -47,13 +48,24 @@ public final class ManagementServiceHandler {
|
|||
.getService(NamingControl.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Identify the layer of instance. Such as ${@link Layer#FAAS}.
|
||||
*/
|
||||
private Layer identifyInstanceLayer(String layer) {
|
||||
if (StringUtil.isEmpty(layer)) {
|
||||
return Layer.GENERAL;
|
||||
} else {
|
||||
return Layer.nameOf(layer);
|
||||
}
|
||||
}
|
||||
|
||||
public Commands reportInstanceProperties(final InstanceProperties request) {
|
||||
ServiceInstanceUpdate serviceInstanceUpdate = new ServiceInstanceUpdate();
|
||||
final String serviceName = namingControl.formatServiceName(request.getService());
|
||||
final String instanceName = namingControl.formatInstanceName(request.getServiceInstance());
|
||||
serviceInstanceUpdate.setServiceId(IDManager.ServiceID.buildId(serviceName, true));
|
||||
serviceInstanceUpdate.setName(instanceName);
|
||||
serviceInstanceUpdate.setLayer(Layer.GENERAL);
|
||||
serviceInstanceUpdate.setLayer(identifyInstanceLayer(request.getLayer()));
|
||||
|
||||
JsonObject properties = new JsonObject();
|
||||
List<String> ipv4List = new ArrayList<>();
|
||||
|
|
@ -77,18 +89,19 @@ public final class ManagementServiceHandler {
|
|||
final long timeBucket = TimeBucket.getTimeBucket(System.currentTimeMillis(), DownSampling.Minute);
|
||||
final String serviceName = namingControl.formatServiceName(request.getService());
|
||||
final String instanceName = namingControl.formatInstanceName(request.getServiceInstance());
|
||||
final Layer layer = identifyInstanceLayer(request.getLayer());
|
||||
|
||||
ServiceInstanceUpdate serviceInstanceUpdate = new ServiceInstanceUpdate();
|
||||
serviceInstanceUpdate.setServiceId(IDManager.ServiceID.buildId(serviceName, true));
|
||||
serviceInstanceUpdate.setName(instanceName);
|
||||
serviceInstanceUpdate.setTimeBucket(timeBucket);
|
||||
serviceInstanceUpdate.setLayer(Layer.GENERAL);
|
||||
serviceInstanceUpdate.setLayer(layer);
|
||||
sourceReceiver.receive(serviceInstanceUpdate);
|
||||
|
||||
ServiceMeta serviceMeta = new ServiceMeta();
|
||||
serviceMeta.setName(serviceName);
|
||||
serviceMeta.setTimeBucket(timeBucket);
|
||||
serviceMeta.setLayer(Layer.GENERAL);
|
||||
serviceMeta.setLayer(layer);
|
||||
sourceReceiver.receive(serviceMeta);
|
||||
|
||||
return Commands.newBuilder().build();
|
||||
|
|
|
|||
|
|
@ -155,9 +155,9 @@ public class RPCAnalysisListenerTest {
|
|||
Assert.assertEquals(6, receivedSources.size());
|
||||
final Service service = (Service) receivedSources.get(0);
|
||||
final ServiceInstance serviceInstance = (ServiceInstance) receivedSources.get(1);
|
||||
final Endpoint endpoint = (Endpoint) receivedSources.get(2);
|
||||
final ServiceRelation serviceRelation = (ServiceRelation) receivedSources.get(3);
|
||||
final ServiceInstanceRelation serviceInstanceRelation = (ServiceInstanceRelation) receivedSources.get(4);
|
||||
final ServiceRelation serviceRelation = (ServiceRelation) receivedSources.get(2);
|
||||
final ServiceInstanceRelation serviceInstanceRelation = (ServiceInstanceRelation) receivedSources.get(3);
|
||||
final Endpoint endpoint = (Endpoint) receivedSources.get(4);
|
||||
final EndpointRelation endpointRelation = (EndpointRelation) receivedSources.get(5);
|
||||
Assert.assertEquals("mock-service", service.getName());
|
||||
Assert.assertEquals(500, service.getHttpResponseStatusCode());
|
||||
|
|
@ -220,9 +220,9 @@ public class RPCAnalysisListenerTest {
|
|||
Assert.assertEquals(6, receivedSources.size());
|
||||
final Service service = (Service) receivedSources.get(0);
|
||||
final ServiceInstance serviceInstance = (ServiceInstance) receivedSources.get(1);
|
||||
final Endpoint endpoint = (Endpoint) receivedSources.get(2);
|
||||
final ServiceRelation serviceRelation = (ServiceRelation) receivedSources.get(3);
|
||||
final ServiceInstanceRelation serviceInstanceRelation = (ServiceInstanceRelation) receivedSources.get(4);
|
||||
final ServiceRelation serviceRelation = (ServiceRelation) receivedSources.get(2);
|
||||
final ServiceInstanceRelation serviceInstanceRelation = (ServiceInstanceRelation) receivedSources.get(3);
|
||||
final Endpoint endpoint = (Endpoint) receivedSources.get(4);
|
||||
final EndpointRelation endpointRelation = (EndpointRelation) receivedSources.get(5);
|
||||
Assert.assertEquals("mock-service", service.getName());
|
||||
Assert.assertEquals("mock-instance", serviceInstance.getName());
|
||||
|
|
@ -282,9 +282,9 @@ public class RPCAnalysisListenerTest {
|
|||
Assert.assertEquals(6, receivedSources.size());
|
||||
final Service service = (Service) receivedSources.get(0);
|
||||
final ServiceInstance serviceInstance = (ServiceInstance) receivedSources.get(1);
|
||||
final Endpoint endpoint = (Endpoint) receivedSources.get(2);
|
||||
final ServiceRelation serviceRelation = (ServiceRelation) receivedSources.get(3);
|
||||
final ServiceInstanceRelation serviceInstanceRelation = (ServiceInstanceRelation) receivedSources.get(4);
|
||||
final ServiceRelation serviceRelation = (ServiceRelation) receivedSources.get(2);
|
||||
final ServiceInstanceRelation serviceInstanceRelation = (ServiceInstanceRelation) receivedSources.get(3);
|
||||
final Endpoint endpoint = (Endpoint) receivedSources.get(4);
|
||||
final EndpointRelation endpointRelation = (EndpointRelation) receivedSources.get(5);
|
||||
Assert.assertEquals("mock-service", service.getName());
|
||||
Assert.assertEquals("mock-instance", serviceInstance.getName());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,368 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
[
|
||||
{
|
||||
"id": "FaaS-Function-Relation",
|
||||
"configuration": {
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 52,
|
||||
"i": "0",
|
||||
"type": "Tab",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"activedTabIndex": 1,
|
||||
"children": [
|
||||
{
|
||||
"name": "Overview",
|
||||
"children": [
|
||||
{
|
||||
"x": 12,
|
||||
"y": 24,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "0",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Load (Server) (calls / min)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_server_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 24,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "1",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Success Rate (Server) (%)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_server_call_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "percentage"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 0,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "2",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time Percentile (Server) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_server_percentile"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readLabeledMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"key": "P50, P75, P90, P95, P99",
|
||||
"labelsIndex": "0,1,2,3,4",
|
||||
"label": "P50, P75, P90, P95, P99"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "3",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time (Server) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_server_resp_time"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 12,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "4",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time (Client) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_client_resp_time"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 12,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "5",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time Percentile (Client) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_client_percentile"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readLabeledMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"key": "P50, P75, P90, P95, P99",
|
||||
"labelsIndex": "0,1,2,3,4",
|
||||
"label": "P50, P75, P90, P95, P99"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 36,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "6",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Success Rate (Client) (%)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_client_call_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "percentage"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 36,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "7",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Load (Client) (calls / min)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_relation_client_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Topology",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 49,
|
||||
"i": "0",
|
||||
"type": "Topology",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {
|
||||
"showDepth": true
|
||||
},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"moved": false,
|
||||
"linkDashboard": "FaaS-Instance-Relation",
|
||||
"nodeDashboard": "FaaS-Instance",
|
||||
"linkServerMetrics": [
|
||||
"service_instance_relation_server_resp_time",
|
||||
"service_instance_relation_server_cpm"
|
||||
],
|
||||
"linkClientMetrics": [
|
||||
"service_instance_relation_client_resp_time",
|
||||
"service_instance_relation_client_cpm"
|
||||
],
|
||||
"nodeMetrics": [
|
||||
"service_instance_sla",
|
||||
"service_instance_cpm",
|
||||
"service_instance_resp_time"
|
||||
],
|
||||
"legend": [],
|
||||
"description": {},
|
||||
"nodeMetricConfig": [
|
||||
{
|
||||
"unit": "%",
|
||||
"calculation": "percentage",
|
||||
"label": "Success Rate"
|
||||
},
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Load"
|
||||
},
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Latency"
|
||||
}
|
||||
],
|
||||
"linkServerMetricConfig": [
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Server Latency"
|
||||
},
|
||||
{
|
||||
"unit": "calls / min ",
|
||||
"label": "Server Load"
|
||||
}
|
||||
],
|
||||
"linkClientMetricConfig": [
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Client Latency"
|
||||
},
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Client Load"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
],
|
||||
"layer": "FAAS",
|
||||
"entity": "ServiceRelation",
|
||||
"name": "FaaS-Function-Relation",
|
||||
"id": "FaaS-Function-Relation",
|
||||
"isRoot": false
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,508 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
[
|
||||
{
|
||||
"id": "FaaS-Function",
|
||||
"configuration": {
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 52,
|
||||
"i": "4",
|
||||
"type": "Tab",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"activedTabIndex": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Overview",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 8,
|
||||
"h": 5,
|
||||
"i": "0",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Apdex"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Card",
|
||||
"fontSize": 14,
|
||||
"textAlign": "center"
|
||||
},
|
||||
"metrics": [
|
||||
"service_apdex"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValue"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "apdex"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 8,
|
||||
"y": 0,
|
||||
"w": 8,
|
||||
"h": 5,
|
||||
"i": "1",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Success Rate"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Card",
|
||||
"fontSize": 14,
|
||||
"textAlign": "center",
|
||||
"showUnit": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValue"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "percentage",
|
||||
"unit": "%"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 16,
|
||||
"y": 0,
|
||||
"w": 8,
|
||||
"h": 5,
|
||||
"i": "2",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Load (calls / min)",
|
||||
"tips": "For HTTP 1/2, gRPC, RPC functions, this means Calls Per Minute (calls / min)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Card",
|
||||
"fontSize": 14,
|
||||
"textAlign": "center",
|
||||
"showUnit": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValue"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"unit": "calls / min"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 5,
|
||||
"w": 6,
|
||||
"h": 11,
|
||||
"i": "3",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Avg Response Time (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_resp_time"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 6,
|
||||
"y": 5,
|
||||
"w": 6,
|
||||
"h": 11,
|
||||
"i": "5",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Response Time Percentile (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_percentile"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readLabeledMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"label": "P50, P75, P90, P95, P99",
|
||||
"labelsIndex": "0, 1, 2, 3, 4"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 5,
|
||||
"w": 6,
|
||||
"h": 11,
|
||||
"i": "6",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Success Rate (%)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "percentage"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 18,
|
||||
"y": 5,
|
||||
"w": 6,
|
||||
"h": 11,
|
||||
"i": "7",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Load (calls / min)",
|
||||
"tips": "For HTTP 1/2, gRPC, RPC functions, this means Calls Per Minute (calls / min)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 16,
|
||||
"w": 8,
|
||||
"h": 14,
|
||||
"i": "11",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Instances Load (calls / min)",
|
||||
"tips": "For HTTP 1/2, gRPC, RPC functions, this means Calls Per Minute (calls / min),"
|
||||
},
|
||||
"graph": {
|
||||
"type": "TopList"
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"sortMetrics"
|
||||
],
|
||||
"metricConfig": [
|
||||
{
|
||||
"sortOrder": "DES",
|
||||
"calculation": "percentage"
|
||||
}
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 8,
|
||||
"y": 16,
|
||||
"w": 8,
|
||||
"h": 14,
|
||||
"i": "12",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Slow Function Instance (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "TopList",
|
||||
"topN": "10"
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_resp_time"
|
||||
],
|
||||
"metricTypes": [
|
||||
"sortMetrics"
|
||||
],
|
||||
"metricConfig": [
|
||||
{
|
||||
"sortOrder": "DES",
|
||||
"calculation": "percentage"
|
||||
}
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 16,
|
||||
"y": 16,
|
||||
"w": 8,
|
||||
"h": 14,
|
||||
"i": "13",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Instance Success Rate (%)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "TopList",
|
||||
"topN": "10"
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"sortMetrics"
|
||||
],
|
||||
"metricConfig": [
|
||||
{
|
||||
"sortOrder": "ASC",
|
||||
"calculation": "percentage"
|
||||
}
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Instance",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 49,
|
||||
"i": "0",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": ""
|
||||
},
|
||||
"graph": {
|
||||
"type": "InstanceList",
|
||||
"dashboardName": "FaaS-Instance",
|
||||
"fontSize": 12
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"label": "Load",
|
||||
"unit": "calls / min"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Topology",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 48,
|
||||
"i": "0",
|
||||
"type": "Topology",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {
|
||||
"showDepth": true
|
||||
},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"moved": false,
|
||||
"linkDashboard": "FaaS-Function-Relation",
|
||||
"nodeDashboard": [
|
||||
{
|
||||
"scope": "Service",
|
||||
"dashboard": "FaaS-Function"
|
||||
},
|
||||
{
|
||||
"scope": "ServiceInstance",
|
||||
"dashboard": "FaaS-Instance"
|
||||
}
|
||||
],
|
||||
"linkServerMetrics": [
|
||||
"service_relation_server_resp_time",
|
||||
"service_relation_server_cpm"
|
||||
],
|
||||
"linkClientMetrics": [
|
||||
"service_relation_client_cpm",
|
||||
"service_relation_client_resp_time"
|
||||
],
|
||||
"nodeMetrics": [
|
||||
"service_cpm",
|
||||
"service_sla",
|
||||
"service_resp_time"
|
||||
],
|
||||
"legend": [
|
||||
{
|
||||
"name": "service_sla",
|
||||
"condition": "<",
|
||||
"value": "9500"
|
||||
},
|
||||
{
|
||||
"name": "service_cpm",
|
||||
"condition": ">",
|
||||
"value": "1"
|
||||
}
|
||||
],
|
||||
"description": {
|
||||
"healthy": "Healthy",
|
||||
"unhealthy": "Success Rate < 95% and Traffic > 1 call/min"
|
||||
},
|
||||
"nodeMetricConfig": [
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Load"
|
||||
},
|
||||
{
|
||||
"calculation": "percentage",
|
||||
"unit": "%",
|
||||
"label": "Success Rate"
|
||||
},
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Latency"
|
||||
}
|
||||
],
|
||||
"linkServerMetricConfig": [
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Server Latency"
|
||||
},
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Server Load"
|
||||
}
|
||||
],
|
||||
"linkClientMetricConfig": [
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Client Load"
|
||||
},
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Client Latency"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Trace",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 48,
|
||||
"i": "0",
|
||||
"type": "Trace",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
],
|
||||
"layer": "FAAS",
|
||||
"entity": "Service",
|
||||
"name": "FaaS-Function",
|
||||
"id": "FaaS-Function",
|
||||
"isRoot": false
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,263 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
[
|
||||
{
|
||||
"id": "FaaS-Instance-Relation",
|
||||
"configuration": {
|
||||
"children": [
|
||||
{
|
||||
"x": 12,
|
||||
"y": 12,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "1",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time Percentile (Client) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_client_percentile"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readLabeledMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"key": "P50, P75, P90, P95, P99",
|
||||
"labelsIndex": "0,1,2,3,4",
|
||||
"label": "P50, P75, P90, P95, P99"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 24,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "2",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Success Rate (Client) (%)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_client_call_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "percentage"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 36,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "3",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Load (Client) (calls / min)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_client_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 12,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "4",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time (Client) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_client_resp_time"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 0,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "5",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time Percentile (Server) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_server_percentile"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readLabeledMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"key": "P50, P75, P90, P95, P99",
|
||||
"labelsIndex": "0,1,2,3,4",
|
||||
"label": "P50, P75, P90, P95, P99"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 36,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "6",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Success Rate (Server) (%)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_server_call_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "percentage"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 24,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "7",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Load (Server) (calls / min)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_server_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 12,
|
||||
"h": 12,
|
||||
"i": "8",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Response Time (Server) (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_relation_server_resp_time"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
],
|
||||
"layer": "FAAS",
|
||||
"entity": "ServiceInstanceRelation",
|
||||
"name": "FaaS-Instance-Relation",
|
||||
"id": "FaaS-Instance-Relation",
|
||||
"isRoot": false
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
[
|
||||
{
|
||||
"id": "FaaS-Instance",
|
||||
"configuration": {
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 52,
|
||||
"i": "0",
|
||||
"type": "Tab",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"activedTabIndex": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Overview",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 29,
|
||||
"w": 24,
|
||||
"h": 14,
|
||||
"i": "0",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Instance Latency (ms)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_resp_time"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 14,
|
||||
"w": 24,
|
||||
"h": 15,
|
||||
"i": "1",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Instance Success Rate (%)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_sla"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"calculation": "percentage"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 14,
|
||||
"i": "3",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": "Function Instance Load (calls / min)",
|
||||
"tips": "For HTTP 1/2, gRPC, RPC functions, this means Calls Per Minute (calls / min)"
|
||||
},
|
||||
"graph": {
|
||||
"type": "Line",
|
||||
"step": false,
|
||||
"smooth": false,
|
||||
"showSymbol": false,
|
||||
"showXAxis": true,
|
||||
"showYAxis": true
|
||||
},
|
||||
"metrics": [
|
||||
"service_instance_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Trace",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 49,
|
||||
"i": "0",
|
||||
"type": "Trace",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
],
|
||||
"layer": "FAAS",
|
||||
"entity": "ServiceInstance",
|
||||
"name": "FaaS-Instance",
|
||||
"id": "FaaS-Instance",
|
||||
"isRoot": false
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,239 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
[
|
||||
{
|
||||
"id": "FaaS-Root",
|
||||
"configuration": {
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 2,
|
||||
"w": 24,
|
||||
"h": 52,
|
||||
"i": "1",
|
||||
"type": "Tab",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"activedTabIndex": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Function",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 48,
|
||||
"i": "0",
|
||||
"type": "Widget",
|
||||
"widget": {
|
||||
"title": ""
|
||||
},
|
||||
"graph": {
|
||||
"type": "ServiceList",
|
||||
"dashboardName": "FaaS-Function",
|
||||
"fontSize": 12,
|
||||
"showXAxis": false,
|
||||
"showYAxis": false,
|
||||
"showGroup": false
|
||||
},
|
||||
"metrics": [
|
||||
"service_cpm"
|
||||
],
|
||||
"metricTypes": [
|
||||
"readMetricsValues"
|
||||
],
|
||||
"moved": false,
|
||||
"metricConfig": [
|
||||
{
|
||||
"label": "Load",
|
||||
"unit": "calls / min"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Topology",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 48,
|
||||
"i": "0",
|
||||
"type": "Topology",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {
|
||||
"showDepth": true
|
||||
},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"moved": false,
|
||||
"linkDashboard": "Function-Function-Relation",
|
||||
"nodeDashboard": [
|
||||
{
|
||||
"scope": "Service",
|
||||
"dashboard": "FaaS-Function"
|
||||
},
|
||||
{
|
||||
"scope": "ServiceInstance",
|
||||
"dashboard": "FaaS-Instance"
|
||||
}
|
||||
],
|
||||
"linkServerMetrics": [
|
||||
"service_relation_server_resp_time",
|
||||
"service_relation_server_cpm"
|
||||
],
|
||||
"linkClientMetrics": [
|
||||
"service_relation_client_cpm",
|
||||
"service_relation_client_resp_time"
|
||||
],
|
||||
"nodeMetrics": [
|
||||
"service_cpm",
|
||||
"service_sla",
|
||||
"service_resp_time"
|
||||
],
|
||||
"legend": [
|
||||
{
|
||||
"name": "service_sla",
|
||||
"condition": "<",
|
||||
"value": "9500"
|
||||
},
|
||||
{
|
||||
"name": "service_cpm",
|
||||
"condition": ">",
|
||||
"value": "1"
|
||||
}
|
||||
],
|
||||
"description": {
|
||||
"healthy": "Healthy",
|
||||
"unhealthy": "Success Rate < 95% and Traffic > 1 calls / min"
|
||||
},
|
||||
"nodeMetricConfig": [
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Load"
|
||||
},
|
||||
{
|
||||
"calculation": "percentage",
|
||||
"unit": "%",
|
||||
"label": "Success Rate"
|
||||
},
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Latency"
|
||||
}
|
||||
],
|
||||
"linkServerMetricConfig": [
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Server Latency"
|
||||
},
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Server Load"
|
||||
}
|
||||
],
|
||||
"linkClientMetricConfig": [
|
||||
{
|
||||
"unit": "calls / min",
|
||||
"label": "Client Load"
|
||||
},
|
||||
{
|
||||
"unit": "ms",
|
||||
"label": "Client Latency"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Trace",
|
||||
"children": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 49,
|
||||
"i": "0",
|
||||
"type": "Trace",
|
||||
"widget": {
|
||||
"title": "Title"
|
||||
},
|
||||
"graph": {},
|
||||
"standard": {},
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"moved": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"moved": false
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 24,
|
||||
"h": 2,
|
||||
"i": "2",
|
||||
"type": "Text",
|
||||
"metricTypes": [
|
||||
""
|
||||
],
|
||||
"metrics": [
|
||||
""
|
||||
],
|
||||
"graph": {
|
||||
"fontColor": "black",
|
||||
"backgroundColor": "white",
|
||||
"content": "FaaS (Function-as-a-Service) is a type of cloud-computing service that allows you to execute code in response to events without the complex infrastructure typically associated with building and launching microservices applications. OpenFunction as a FaaS platform, provides out-of-box observability with SkyWalking integration.",
|
||||
"fontSize": 14,
|
||||
"textAlign": "left",
|
||||
"url": "https://github.com/OpenFunction/samples/blob/main/functions/tracing/README.md"
|
||||
},
|
||||
"moved": false
|
||||
}
|
||||
],
|
||||
"id": "FaaS-Root",
|
||||
"layer": "FAAS",
|
||||
"entity": "All",
|
||||
"name": "FaaS-Root",
|
||||
"isRoot": true
|
||||
}
|
||||
}
|
||||
]
|
||||
Loading…
Reference in New Issue