diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointCpmIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointCpmIndicator.java new file mode 100644 index 0000000000000000000000000000000000000000..fe4b3a94fcc10b47ee7d73579f2ea102f410263f --- /dev/null +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointCpmIndicator.java @@ -0,0 +1,182 @@ +/* + * 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. + * + */ + +package org.apache.skywalking.oap.server.core.analysis.generated.endpoint; + +import java.util.*; +import lombok.*; +import org.apache.skywalking.oap.server.core.Const; +import org.apache.skywalking.oap.server.core.alarm.AlarmMeta; +import org.apache.skywalking.oap.server.core.alarm.AlarmSupported; +import org.apache.skywalking.oap.server.core.analysis.indicator.*; +import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType; +import org.apache.skywalking.oap.server.core.remote.annotation.StreamData; +import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.annotation.*; +import org.apache.skywalking.oap.server.core.storage.StorageBuilder; +import org.apache.skywalking.oap.server.core.source.Scope; + +/** + * This class is auto generated. Please don't change this class manually. + * + * @author Observability Analysis Language code generator + */ +@IndicatorType +@StreamData +@StorageEntity(name = "endpoint_cpm", builder = EndpointCpmIndicator.Builder.class) +public class EndpointCpmIndicator extends CPMIndicator implements AlarmSupported { + + @Setter @Getter @Column(columnName = "entity_id") @IDColumn private java.lang.String entityId; + @Setter @Getter @Column(columnName = "service_id") private int serviceId; + @Setter @Getter @Column(columnName = "service_instance_id") private int serviceInstanceId; + + @Override public String id() { + String splitJointId = String.valueOf(getTimeBucket()); + splitJointId += Const.ID_SPLIT + entityId; + return splitJointId; + } + + @Override public int hashCode() { + int result = 17; + result = 31 * result + entityId.hashCode(); + result = 31 * result + (int)getTimeBucket(); + return result; + } + + + @Override public int remoteHashCode() { + int result = 17; + result = 31 * result + entityId.hashCode(); + return result; + } + + @Override public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + + EndpointCpmIndicator indicator = (EndpointCpmIndicator)obj; + if (entityId != indicator.entityId) + return false; + + if (getTimeBucket() != indicator.getTimeBucket()) + return false; + + return true; + } + + @Override public RemoteData.Builder serialize() { + RemoteData.Builder remoteBuilder = RemoteData.newBuilder(); + remoteBuilder.setDataStrings(0, getEntityId()); + + remoteBuilder.setDataLongs(0, getValue()); + remoteBuilder.setDataLongs(1, getTotal()); + remoteBuilder.setDataLongs(2, getTimeBucket()); + + + remoteBuilder.setDataIntegers(0, getServiceId()); + remoteBuilder.setDataIntegers(1, getServiceInstanceId()); + + return remoteBuilder; + } + + @Override public void deserialize(RemoteData remoteData) { + setEntityId(remoteData.getDataStrings(0)); + + setValue(remoteData.getDataLongs(0)); + setTotal(remoteData.getDataLongs(1)); + setTimeBucket(remoteData.getDataLongs(2)); + + + setServiceId(remoteData.getDataIntegers(0)); + setServiceInstanceId(remoteData.getDataIntegers(1)); + + + } + + @Override public AlarmMeta getAlarmMeta() { + return new AlarmMeta("endpoint_cpm", Scope.Endpoint, entityId); + } + + @Override + public Indicator toHour() { + EndpointCpmIndicator indicator = new EndpointCpmIndicator(); + indicator.setTimeBucket(toTimeBucketInHour()); + indicator.setEntityId(this.getEntityId()); + indicator.setServiceId(this.getServiceId()); + indicator.setServiceInstanceId(this.getServiceInstanceId()); + indicator.setValue(this.getValue()); + indicator.setTotal(this.getTotal()); + indicator.setTimeBucket(this.getTimeBucket()); + return indicator; + } + + @Override + public Indicator toDay() { + EndpointCpmIndicator indicator = new EndpointCpmIndicator(); + indicator.setTimeBucket(toTimeBucketInDay()); + indicator.setEntityId(this.getEntityId()); + indicator.setServiceId(this.getServiceId()); + indicator.setServiceInstanceId(this.getServiceInstanceId()); + indicator.setValue(this.getValue()); + indicator.setTotal(this.getTotal()); + indicator.setTimeBucket(this.getTimeBucket()); + return indicator; + } + + @Override + public Indicator toMonth() { + EndpointCpmIndicator indicator = new EndpointCpmIndicator(); + indicator.setTimeBucket(toTimeBucketInMonth()); + indicator.setEntityId(this.getEntityId()); + indicator.setServiceId(this.getServiceId()); + indicator.setServiceInstanceId(this.getServiceInstanceId()); + indicator.setValue(this.getValue()); + indicator.setTotal(this.getTotal()); + indicator.setTimeBucket(this.getTimeBucket()); + return indicator; + } + + public static class Builder implements StorageBuilder { + + @Override public Map data2Map(EndpointCpmIndicator storageData) { + Map map = new HashMap<>(); + map.put("entity_id", storageData.getEntityId()); + map.put("service_id", storageData.getServiceId()); + map.put("service_instance_id", storageData.getServiceInstanceId()); + map.put("value", storageData.getValue()); + map.put("total", storageData.getTotal()); + map.put("time_bucket", storageData.getTimeBucket()); + return map; + } + + @Override public EndpointCpmIndicator map2Data(Map dbMap) { + EndpointCpmIndicator indicator = new EndpointCpmIndicator(); + indicator.setEntityId((String)dbMap.get("entity_id")); + indicator.setServiceId(((Number)dbMap.get("service_id")).intValue()); + indicator.setServiceInstanceId(((Number)dbMap.get("service_instance_id")).intValue()); + indicator.setValue(((Number)dbMap.get("value")).longValue()); + indicator.setTotal(((Number)dbMap.get("total")).longValue()); + indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue()); + return indicator; + } + } +} diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java index f50b21afd4c6ce54ac93762e1db5207085b70c42..1b4f621853e25d1d249e338543f7e11d553ffc42 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java @@ -30,6 +30,7 @@ import org.apache.skywalking.oap.server.core.source.*; public class EndpointDispatcher implements SourceDispatcher { @Override public void dispatch(Endpoint source) { + doEndpointCpm(source); doEndpointAvg(source); doEndpointSla(source); doEndpointP99(source); @@ -39,6 +40,18 @@ public class EndpointDispatcher implements SourceDispatcher { doEndpointP50(source); } + private void doEndpointCpm(Endpoint source) { + EndpointCpmIndicator indicator = new EndpointCpmIndicator(); + + + indicator.setTimeBucket(source.getTimeBucket()); + indicator.setEntityId(source.getEntityId()); + indicator.setServiceId(source.getServiceId()); + indicator.setServiceInstanceId(source.getServiceInstanceId()); + indicator.combine(1); + IndicatorProcess.INSTANCE.in(indicator); + } + private void doEndpointAvg(Endpoint source) { EndpointAvgIndicator indicator = new EndpointAvgIndicator(); diff --git a/oap-server/server-core/src/main/resources/official_analysis.oal b/oap-server/server-core/src/main/resources/official_analysis.oal index f233e49331e3f36498985ecc8d4a29aea059de94..be86d50fce2214bf0c446c62d32e9f516638963b 100644 --- a/oap-server/server-core/src/main/resources/official_analysis.oal +++ b/oap-server/server-core/src/main/resources/official_analysis.oal @@ -47,6 +47,7 @@ service_instance_resp_time= from(ServiceInstance.latency).longAvg(); service_instance_cpm = from(ServiceInstance.*).cpm(); // Endpoint scope metric +endpoint_cpm = from(Endpoint.*).cpm(); endpoint_avg = from(Endpoint.latency).longAvg(); endpoint_sla = from(Endpoint.*).percent(status == true); endpoint_p99 = from(Endpoint.latency).p99(10);