From 341bdcf1dd08a3c829f8d2d78d6bf09a1467ff22 Mon Sep 17 00:00:00 2001 From: mrproliu <741550557@qq.com> Date: Wed, 5 Jun 2024 07:52:45 +0000 Subject: [PATCH] Fix wrong indices in the eBPF Profiling related models (#12297) --- docs/en/changes/changes.md | 3 ++- docs/en/setup/backend/backend-zabbix.md | 2 +- .../core/profiling/ebpf/EBPFProfilingQueryService.java | 2 +- .../profiling/ebpf/storage/EBPFProfilingDataRecord.java | 2 +- .../profiling/ebpf/storage/EBPFProfilingScheduleRecord.java | 5 +++-- .../oap/server/core/query/ProcessTopologyBuilder.java | 6 ++++++ test/e2e-v2/cases/vm/zabbix/docker-compose.yml | 2 +- 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index eaf520c883..38a98abd42 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -4,13 +4,14 @@ #### OAP Server +* Fix wrong indices in the eBPF Profiling related models. #### UI #### Documentation - +* Update the version description supported by zabbix receiver. All issues and pull requests are [here](https://github.com/apache/skywalking/milestone/205?closed=1) diff --git a/docs/en/setup/backend/backend-zabbix.md b/docs/en/setup/backend/backend-zabbix.md index 5a14f96ce8..a5abfeba7e 100644 --- a/docs/en/setup/backend/backend-zabbix.md +++ b/docs/en/setup/backend/backend-zabbix.md @@ -1,6 +1,6 @@ # Zabbix Receiver The Zabbix receiver accepts metrics of [Zabbix Agent Active Checks protocol](https://www.zabbix.com/documentation/current/manual/appendix/items/activepassive#active_checks) format into the [Meter System](./../../concepts-and-designs/meter.md). -Zabbix Agent is based on GPL-2.0 License. +Zabbix Agent is based on GPL-2.0 License, only version `6.x` and below are supported. ## Module definition ```yaml diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java index 336b317483..45d01f280d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java @@ -190,7 +190,7 @@ public class EBPFProfilingQueryService implements Service { final List tasks = getTaskDAO().queryTasksByTargets(serviceId, serviceInstanceId, targets, triggerType, startTime, endTime); // combine same id tasks final Map records = tasks.stream().collect(Collectors.toMap(EBPFProfilingTaskRecord::getLogicalId, Function.identity(), EBPFProfilingTaskRecord::combine)); - return records.values().stream().map(this::parseTask).collect(Collectors.toList()); + return records.values().stream().map(this::parseTask).sorted((o1, o2) -> -Long.compare(o1.getCreateTime(), o2.getCreateTime())).collect(Collectors.toList()); } private EBPFProfilingTask parseTask(EBPFProfilingTaskRecord record) { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java index 41885e3a7c..fe0f123c36 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java @@ -51,8 +51,8 @@ public class EBPFProfilingDataRecord extends Record { public static final String UPLOAD_TIME = "upload_time"; @Column(name = TASK_ID) - @BanyanDB.SeriesID(index = 0) private String taskId; + @BanyanDB.SeriesID(index = 0) @Column(name = SCHEDULE_ID) private String scheduleId; @Column(name = STACK_ID_LIST) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java index 9e9f78b5e6..d6349e928e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java @@ -60,6 +60,7 @@ public class EBPFProfilingScheduleRecord extends Metrics { public static final String EBPF_PROFILING_SCHEDULE_ID = "ebpf_profiling_schedule_id"; @Column(name = TASK_ID) + @BanyanDB.SeriesID(index = 0) private String taskId; @Column(name = PROCESS_ID, length = 600) private String processId; @@ -68,7 +69,7 @@ public class EBPFProfilingScheduleRecord extends Metrics { @Column(name = END_TIME) private long endTime; @Column(name = EBPF_PROFILING_SCHEDULE_ID) - @BanyanDB.SeriesID(index = 0) + @BanyanDB.SeriesID(index = 1) private String scheduleId; @Override @@ -96,7 +97,7 @@ public class EBPFProfilingScheduleRecord extends Metrics { @Override protected StorageID id0() { - return new StorageID().append(EBPF_PROFILING_SCHEDULE_ID, scheduleId); + return new StorageID().append(TASK_ID, taskId).append(EBPF_PROFILING_SCHEDULE_ID, scheduleId); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java index 498868109e..42e7af7d24 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java @@ -69,6 +69,8 @@ public class ProcessTopologyBuilder { ProcessTopology build(List clientCalls, List serverCalls) throws Exception { + log.debug("building process topology, total found client calls: {}, total found server calls: {}", + clientCalls.size(), serverCalls.size()); List calls = new LinkedList<>(); HashMap callMap = new HashMap<>(); @@ -88,6 +90,7 @@ public class ProcessTopologyBuilder { .map(t -> (ProcessTraffic) t) .collect(Collectors.toMap(m -> m.id().build(), this::buildNode)); + int appendCallCount = 0; for (Call.CallDetail clientCall : clientCalls) { if (!callMap.containsKey(clientCall.getId())) { Call call = new Call(); @@ -99,6 +102,7 @@ public class ProcessTopologyBuilder { call.addDetectPoint(DetectPoint.CLIENT); call.addSourceComponent(componentLibraryCatalogService.getComponentName(clientCall.getComponentId())); calls.add(call); + appendCallCount++; } } @@ -113,6 +117,7 @@ public class ProcessTopologyBuilder { call.setTarget(serverCall.getTarget()); call.setId(serverCall.getId()); calls.add(call); + appendCallCount++; } call.addDetectPoint(DetectPoint.SERVER); call.addTargetComponent(componentLibraryCatalogService.getComponentName(serverCall.getComponentId())); @@ -121,6 +126,7 @@ public class ProcessTopologyBuilder { ProcessTopology topology = new ProcessTopology(); topology.getCalls().addAll(calls); topology.getNodes().addAll(nodes.values()); + log.debug("process topology built, total calls: {}, total nodes: {}", appendCallCount, nodes.size()); return topology; } diff --git a/test/e2e-v2/cases/vm/zabbix/docker-compose.yml b/test/e2e-v2/cases/vm/zabbix/docker-compose.yml index b67b9349a4..4c5e1f8b27 100644 --- a/test/e2e-v2/cases/vm/zabbix/docker-compose.yml +++ b/test/e2e-v2/cases/vm/zabbix/docker-compose.yml @@ -26,7 +26,7 @@ services: - 12800 zabbix-client: - image: zabbix/zabbix-agent:alpine-latest + image: zabbix/zabbix-agent:alpine-6.4.15 networks: - e2e volumes: