Including the original OAP config into profile exporter tool (#13101)
This commit is contained in:
parent
344f131916
commit
5038595bbb
|
|
@ -329,7 +329,7 @@ jobs:
|
||||||
( always() && ! cancelled() ) &&
|
( always() && ! cancelled() ) &&
|
||||||
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
((github.event_name == 'schedule' && github.repository == 'apache/skywalking') || needs.changes.outputs.oap == 'true')
|
||||||
name: E2E test
|
name: E2E test
|
||||||
needs: [docker]
|
needs: [docker, dist-tar]
|
||||||
runs-on: ${{ matrix.test.runs-on || 'ubuntu-latest' }}
|
runs-on: ${{ matrix.test.runs-on || 'ubuntu-latest' }}
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
env:
|
env:
|
||||||
|
|
@ -715,6 +715,11 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
find docker-images -name "*.tar" -exec docker load -i {} \;
|
find docker-images -name "*.tar" -exec docker load -i {} \;
|
||||||
find docker-images -name "*.tar" -exec rm {} \;
|
find docker-images -name "*.tar" -exec rm {} \;
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
name: Download distribution tar
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
path: dist
|
||||||
- name: Login to ghcr
|
- name: Login to ghcr
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,14 @@
|
||||||
</fileSet>
|
</fileSet>
|
||||||
|
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>${project.basedir}/../oap-server/server-tools/profile-exporter/tool-profile-snapshot-exporter/target/oap-libs</directory>
|
<directory>${project.basedir}/../oap-server/server-tools/profile-exporter/tool-profile-snapshot-exporter/target/</directory>
|
||||||
|
<includes>
|
||||||
|
<include>tool-profile-snapshot-exporter-${project.version}.jar</include>
|
||||||
|
</includes>
|
||||||
|
<outputDirectory>oap-libs</outputDirectory>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.basedir}/../oap-server/server-tools/profile-exporter/tool-profile-snapshot-exporter/target/oap-libs/</directory>
|
||||||
<outputDirectory>oap-libs</outputDirectory>
|
<outputDirectory>oap-libs</outputDirectory>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,26 +23,41 @@ import org.apache.skywalking.oap.server.core.CoreModuleConfig;
|
||||||
import org.apache.skywalking.oap.server.core.CoreModuleProvider;
|
import org.apache.skywalking.oap.server.core.CoreModuleProvider;
|
||||||
import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
|
import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
|
||||||
import org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
|
import org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
|
||||||
|
import org.apache.skywalking.oap.server.core.cache.AsyncProfilerTaskCache;
|
||||||
import org.apache.skywalking.oap.server.core.cache.NetworkAddressAliasCache;
|
import org.apache.skywalking.oap.server.core.cache.NetworkAddressAliasCache;
|
||||||
import org.apache.skywalking.oap.server.core.cache.ProfileTaskCache;
|
import org.apache.skywalking.oap.server.core.cache.ProfileTaskCache;
|
||||||
import org.apache.skywalking.oap.server.core.command.CommandService;
|
import org.apache.skywalking.oap.server.core.command.CommandService;
|
||||||
import org.apache.skywalking.oap.server.core.config.ConfigService;
|
import org.apache.skywalking.oap.server.core.config.ConfigService;
|
||||||
import org.apache.skywalking.oap.server.core.config.DownSamplingConfigService;
|
import org.apache.skywalking.oap.server.core.config.DownSamplingConfigService;
|
||||||
|
import org.apache.skywalking.oap.server.core.config.HierarchyDefinitionService;
|
||||||
import org.apache.skywalking.oap.server.core.config.IComponentLibraryCatalogService;
|
import org.apache.skywalking.oap.server.core.config.IComponentLibraryCatalogService;
|
||||||
import org.apache.skywalking.oap.server.core.config.NamingControl;
|
import org.apache.skywalking.oap.server.core.config.NamingControl;
|
||||||
|
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGroupService;
|
||||||
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
|
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
|
||||||
|
import org.apache.skywalking.oap.server.core.hierarchy.HierarchyService;
|
||||||
|
import org.apache.skywalking.oap.server.core.management.ui.menu.UIMenuManagementService;
|
||||||
import org.apache.skywalking.oap.server.core.management.ui.template.UITemplateManagementService;
|
import org.apache.skywalking.oap.server.core.management.ui.template.UITemplateManagementService;
|
||||||
import org.apache.skywalking.oap.server.core.oal.rt.OALEngineLoaderService;
|
import org.apache.skywalking.oap.server.core.oal.rt.OALEngineLoaderService;
|
||||||
|
import org.apache.skywalking.oap.server.core.profiling.asyncprofiler.AsyncProfilerMutationService;
|
||||||
|
import org.apache.skywalking.oap.server.core.profiling.asyncprofiler.AsyncProfilerQueryService;
|
||||||
|
import org.apache.skywalking.oap.server.core.profiling.continuous.ContinuousProfilingMutationService;
|
||||||
|
import org.apache.skywalking.oap.server.core.profiling.continuous.ContinuousProfilingQueryService;
|
||||||
|
import org.apache.skywalking.oap.server.core.profiling.ebpf.EBPFProfilingMutationService;
|
||||||
|
import org.apache.skywalking.oap.server.core.profiling.ebpf.EBPFProfilingQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.profiling.trace.ProfileTaskMutationService;
|
import org.apache.skywalking.oap.server.core.profiling.trace.ProfileTaskMutationService;
|
||||||
import org.apache.skywalking.oap.server.core.profiling.trace.ProfileTaskQueryService;
|
import org.apache.skywalking.oap.server.core.profiling.trace.ProfileTaskQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.AggregationQueryService;
|
import org.apache.skywalking.oap.server.core.query.AggregationQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.AlarmQueryService;
|
import org.apache.skywalking.oap.server.core.query.AlarmQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.BrowserLogQueryService;
|
import org.apache.skywalking.oap.server.core.query.BrowserLogQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.EventQueryService;
|
import org.apache.skywalking.oap.server.core.query.EventQueryService;
|
||||||
|
import org.apache.skywalking.oap.server.core.query.HierarchyQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.LogQueryService;
|
import org.apache.skywalking.oap.server.core.query.LogQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.MetadataQueryService;
|
import org.apache.skywalking.oap.server.core.query.MetadataQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.MetricsMetadataQueryService;
|
import org.apache.skywalking.oap.server.core.query.MetricsMetadataQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.MetricsQueryService;
|
import org.apache.skywalking.oap.server.core.query.MetricsQueryService;
|
||||||
|
import org.apache.skywalking.oap.server.core.query.RecordQueryService;
|
||||||
|
import org.apache.skywalking.oap.server.core.query.TTLStatusQuery;
|
||||||
|
import org.apache.skywalking.oap.server.core.query.TagAutoCompleteQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.TopNRecordsQueryService;
|
import org.apache.skywalking.oap.server.core.query.TopNRecordsQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.TopologyQueryService;
|
import org.apache.skywalking.oap.server.core.query.TopologyQueryService;
|
||||||
import org.apache.skywalking.oap.server.core.query.TraceQueryService;
|
import org.apache.skywalking.oap.server.core.query.TraceQueryService;
|
||||||
|
|
@ -52,6 +67,7 @@ import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister;
|
||||||
import org.apache.skywalking.oap.server.core.server.HTTPHandlerRegister;
|
import org.apache.skywalking.oap.server.core.server.HTTPHandlerRegister;
|
||||||
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
|
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
|
||||||
import org.apache.skywalking.oap.server.core.source.SourceReceiver;
|
import org.apache.skywalking.oap.server.core.source.SourceReceiver;
|
||||||
|
import org.apache.skywalking.oap.server.core.status.ServerStatusService;
|
||||||
import org.apache.skywalking.oap.server.core.storage.StorageException;
|
import org.apache.skywalking.oap.server.core.storage.StorageException;
|
||||||
import org.apache.skywalking.oap.server.core.storage.model.IModelManager;
|
import org.apache.skywalking.oap.server.core.storage.model.IModelManager;
|
||||||
import org.apache.skywalking.oap.server.core.storage.model.ModelCreator;
|
import org.apache.skywalking.oap.server.core.storage.model.ModelCreator;
|
||||||
|
|
@ -121,6 +137,10 @@ public class MockCoreModuleProvider extends CoreModuleProvider {
|
||||||
|
|
||||||
CoreModuleConfig moduleConfig = new CoreModuleConfig();
|
CoreModuleConfig moduleConfig = new CoreModuleConfig();
|
||||||
this.registerServiceImplementation(ConfigService.class, new ConfigService(moduleConfig, this));
|
this.registerServiceImplementation(ConfigService.class, new ConfigService(moduleConfig, this));
|
||||||
|
this.registerServiceImplementation(ServerStatusService.class, new ServerStatusService(getManager(), moduleConfig));
|
||||||
|
moduleConfig.setEnableHierarchy(false);
|
||||||
|
this.registerServiceImplementation(HierarchyDefinitionService.class, new HierarchyDefinitionService(moduleConfig));
|
||||||
|
this.registerServiceImplementation(HierarchyService.class, new HierarchyService(getManager(), moduleConfig));
|
||||||
this.registerServiceImplementation(
|
this.registerServiceImplementation(
|
||||||
DownSamplingConfigService.class, new DownSamplingConfigService(Collections.emptyList()));
|
DownSamplingConfigService.class, new DownSamplingConfigService(Collections.emptyList()));
|
||||||
|
|
||||||
|
|
@ -171,8 +191,39 @@ public class MockCoreModuleProvider extends CoreModuleProvider {
|
||||||
|
|
||||||
// Management
|
// Management
|
||||||
this.registerServiceImplementation(UITemplateManagementService.class, new UITemplateManagementService(getManager()));
|
this.registerServiceImplementation(UITemplateManagementService.class, new UITemplateManagementService(getManager()));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
UIMenuManagementService.class, new UIMenuManagementService(getManager(), moduleConfig));
|
||||||
|
|
||||||
this.registerServiceImplementation(EventQueryService.class, new EventQueryService(getManager()));
|
this.registerServiceImplementation(EventQueryService.class, new EventQueryService(getManager()));
|
||||||
|
this.registerServiceImplementation(RecordQueryService.class, new RecordQueryService(getManager()));
|
||||||
|
this.registerServiceImplementation(HierarchyQueryService.class, new HierarchyQueryService(getManager(), moduleConfig));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
TTLStatusQuery.class, new TTLStatusQuery(
|
||||||
|
getManager(),
|
||||||
|
moduleConfig.getMetricsDataTTL(),
|
||||||
|
moduleConfig.getRecordDataTTL()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
TagAutoCompleteQueryService.class, new TagAutoCompleteQueryService(getManager(), moduleConfig));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
AsyncProfilerMutationService.class, new AsyncProfilerMutationService(getManager()));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
AsyncProfilerQueryService.class, new AsyncProfilerQueryService(getManager()));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
AsyncProfilerTaskCache.class, new AsyncProfilerTaskCache(getManager(), moduleConfig));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
EBPFProfilingMutationService.class, new EBPFProfilingMutationService(getManager()));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
EBPFProfilingQueryService.class,
|
||||||
|
new EBPFProfilingQueryService(getManager(), moduleConfig, this.storageModels)
|
||||||
|
);
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
ContinuousProfilingMutationService.class, new ContinuousProfilingMutationService(getManager()));
|
||||||
|
this.registerServiceImplementation(
|
||||||
|
ContinuousProfilingQueryService.class, new ContinuousProfilingQueryService(getManager()));
|
||||||
|
this.registerServiceImplementation(EndpointNameGroupService.class, new EndpointNameGrouping());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ services:
|
||||||
image: elastic/elasticsearch:7.15.0
|
image: elastic/elasticsearch:7.15.0
|
||||||
expose:
|
expose:
|
||||||
- 9200
|
- 9200
|
||||||
|
ports:
|
||||||
|
- 9200:9200
|
||||||
networks:
|
networks:
|
||||||
- e2e
|
- e2e
|
||||||
environment:
|
environment:
|
||||||
|
|
|
||||||
|
|
@ -35,3 +35,4 @@ verify:
|
||||||
cases:
|
cases:
|
||||||
- includes:
|
- includes:
|
||||||
- ../profiling-cases.yaml
|
- ../profiling-cases.yaml
|
||||||
|
- ../profiling-cases-es.yaml
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
log_output:
|
||||||
|
{{- range .log_output }}
|
||||||
|
- "{{ notEmpty . }}"
|
||||||
|
{{- end }}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
success
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# This file is used to show how to write configuration files and can be used to test.
|
||||||
|
|
||||||
|
cases:
|
||||||
|
# dump the profiling data
|
||||||
|
- query: |
|
||||||
|
cd dist && tar -zxf *.tar.gz && cd apache-skywalking-apm-bin && \
|
||||||
|
mkdir -p export && \
|
||||||
|
SW_STORAGE=elasticsearch bash tools/profile-exporter/profile_exporter.sh \
|
||||||
|
--taskid=$(swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profiling trace list --service-name=e2e-service-provider --endpoint-name=POST:/profile/{name} | yq e '.[0].id' -) \
|
||||||
|
--traceid=$( \
|
||||||
|
swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profiling trace segment-list --task-id=$( \
|
||||||
|
swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profiling trace list --service-name=e2e-service-provider --endpoint-name=POST:/profile/{name} | yq e '.[0].id' - \
|
||||||
|
) | yq e '.[0] | .traceid' - \
|
||||||
|
) \
|
||||||
|
./export > log.txt && \
|
||||||
|
yq -n '{"log_output": load_str("log.txt") | split("\n") | .[:-1]}'
|
||||||
|
expected: expected/profile-dump-process.yml
|
||||||
|
- query: |
|
||||||
|
cd dist/apache-skywalking-apm-bin && \
|
||||||
|
taskid=$(swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profiling trace list --service-name=e2e-service-provider --endpoint-name=POST:/profile/{name} | yq e '.[0].id' -) \
|
||||||
|
traceid=$(swctl --display yaml --base-url="http://${oap_host}:${oap_12800}/graphql" profiling trace segment-list --task-id="$taskid" | yq e '.[0] | .traceid' -); \
|
||||||
|
[ -d "./export/$traceid/work" ] && [ "$(ls -A "./export/$traceid/work" 2>/dev/null)" ] && echo "success" || echo "failure"
|
||||||
|
expected: expected/profile-dump-result.yml
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,6 +44,7 @@ done
|
||||||
|
|
||||||
# prepare paths
|
# prepare paths
|
||||||
oap_libs_dir="${exporter_dir}/../../oap-libs"
|
oap_libs_dir="${exporter_dir}/../../oap-libs"
|
||||||
|
oap_config="${exporter_dir}/../../config"
|
||||||
exporter_log_file="${exporter_dir}/profile_exporter_log4j2.xml"
|
exporter_log_file="${exporter_dir}/profile_exporter_log4j2.xml"
|
||||||
tool_application_config="${exporter_dir}/application.yml"
|
tool_application_config="${exporter_dir}/application.yml"
|
||||||
[[ ! -f ${tool_application_config} ]] \
|
[[ ! -f ${tool_application_config} ]] \
|
||||||
|
|
@ -70,7 +71,7 @@ JAVA_OPTS=" -Xms256M -Xmx512M"
|
||||||
_RUNJAVA=${JAVA_HOME}/bin/java
|
_RUNJAVA=${JAVA_HOME}/bin/java
|
||||||
[ -z "$JAVA_HOME" ] && _RUNJAVA=java
|
[ -z "$JAVA_HOME" ] && _RUNJAVA=java
|
||||||
|
|
||||||
CLASSPATH="${work_dir}/config:$CLASSPATH"
|
CLASSPATH="${work_dir}/config:${oap_config}:$CLASSPATH"
|
||||||
for i in "${oap_libs_dir}"/*.jar
|
for i in "${oap_libs_dir}"/*.jar
|
||||||
do
|
do
|
||||||
CLASSPATH="$i:$CLASSPATH"
|
CLASSPATH="$i:$CLASSPATH"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue