This is an automated email from the ASF dual-hosted git repository.
wu-sheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new f409ed7be7 Remove the always-on alarm-to-event conversion
(EventHookCallback) (#13925)
f409ed7be7 is described below
commit f409ed7be71f4c3477ce07681373029facbf3036
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Tue Jun 23 09:37:46 2026 +0800
Remove the always-on alarm-to-event conversion (EventHookCallback) (#13925)
A triggered alarm is no longer synthesized into the events pipeline as an
Alarm/AlarmRecovery event; events now originate only from real event sources
(agents, SkyWalking CLI, Kubernetes Event Exporter). Alarms remain available
through the alarm store (getAlarm/queryAlarms) and the configured alarm
hooks.
- Delete EventHookCallback and its unconditional registration in
NotifyHandler.
- Delete EventHookCallbackTest.
- Drop the now-dead event-analyzer dependency from server-alarm-plugin.
- Remove the 'Alarm' Known-Event row from event.md; update the e2e guide
recipe.
- Update the alarm/baseline e2e expected files to assert 'events: []' — the
alarm now correlates no synthetic event (swctl 'alarm ls' still projects
the
events field, so the expectation must assert the empty list).
- Add a CHANGES entry.
---
docs/en/changes/changes.md | 1 +
docs/en/concepts-and-designs/event.md | 1 -
oap-server/server-alarm-plugin/pom.xml | 5 -
.../core/alarm/provider/EventHookCallback.java | 194 ---------------------
.../server/core/alarm/provider/NotifyHandler.java | 1 -
.../core/alarm/provider/EventHookCallbackTest.java | 157 -----------------
test/e2e-v2/CLAUDE.md | 13 --
.../expected/silence-after-graphql-critical.yml | 16 +-
.../alarm/expected/silence-after-graphql-warn.yml | 32 +---
.../expected/silence-before-graphql-critical.yml | 16 +-
.../alarm/expected/silence-before-graphql-warn.yml | 32 +---
test/e2e-v2/cases/baseline/expected/critical.yml | 16 +-
12 files changed, 8 insertions(+), 476 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index a91eefb067..b046523837 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -2,6 +2,7 @@
#### Project
+* Remove the always-on alarm-to-event conversion (`EventHookCallback`). A
triggered alarm is no longer synthesized into the events pipeline as an
`Alarm`/`AlarmRecovery` event; events now originate only from real event
sources (agents, SkyWalking CLI, Kubernetes Event Exporter). Alarms remain
available through the alarm store (`getAlarm`/`queryAlarms`) and the configured
alarm hooks. This drops a documented "Known Event" and removes 1-2 synthetic
event records per alarm fire.
* **New `queryAlarms` GraphQL query — entity / layer / rule filters for
alarms.** Adds
a comprehensive alarm query API alongside the legacy `getAlarm`. The new
`queryAlarms(condition: AlarmQueryCondition!): Alarms` accepts a single
input type
diff --git a/docs/en/concepts-and-designs/event.md
b/docs/en/concepts-and-designs/event.md
index 26b2c20586..837c44f395 100644
--- a/docs/en/concepts-and-designs/event.md
+++ b/docs/en/concepts-and-designs/event.md
@@ -66,7 +66,6 @@ service / instance / endpoint.
| :----: | :----: | :-----| :---- |
| Start | Normal | When your Java Application starts with SkyWalking Agent
installed, the `Start` Event will be created. | Reported from SkyWalking agent.
|
| Shutdown | Normal | When your Java Application stops with SkyWalking Agent
installed, the `Shutdown` Event will be created. | Reported from SkyWalking
agent. |
-| Alarm | Error | When the Alarm is triggered, the corresponding `Alarm` Event
will is created. | Reported from internal SkyWalking OAP. |
The following events are all reported
by [Kubernetes Event
Exporter](http://github.com/apache/skywalking-kubernetes-event-exporter), in
order to see these
diff --git a/oap-server/server-alarm-plugin/pom.xml
b/oap-server/server-alarm-plugin/pom.xml
index 9f4494dd6d..a13181fca3 100644
--- a/oap-server/server-alarm-plugin/pom.xml
+++ b/oap-server/server-alarm-plugin/pom.xml
@@ -38,11 +38,6 @@
<artifactId>library-util</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.skywalking</groupId>
- <artifactId>event-analyzer</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>mqe-rt</artifactId>
diff --git
a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/EventHookCallback.java
b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/EventHookCallback.java
deleted file mode 100644
index 5018a3fb23..0000000000
---
a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/EventHookCallback.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * 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.alarm.provider;
-
-import java.io.IOException;
-
-import org.apache.skywalking.apm.network.event.v3.Event;
-import org.apache.skywalking.apm.network.event.v3.Source;
-import org.apache.skywalking.apm.network.event.v3.Type;
-import org.apache.skywalking.oap.server.analyzer.event.EventAnalyzerModule;
-import org.apache.skywalking.oap.server.analyzer.event.EventAnalyzerService;
-import org.apache.skywalking.oap.server.core.CoreModule;
-import org.apache.skywalking.oap.server.core.alarm.AlarmCallback;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMessage;
-import org.apache.skywalking.oap.server.core.alarm.AlarmRecoveryMessage;
-import org.apache.skywalking.oap.server.core.analysis.IDManager;
-import org.apache.skywalking.oap.server.core.analysis.Layer;
-import org.apache.skywalking.oap.server.core.query.MetadataQueryService;
-import org.apache.skywalking.oap.server.core.query.type.Service;
-import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-import org.apache.skywalking.oap.server.library.module.ModuleManager;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * EventCallBack: When an alert is present, an event is generated for each
alert message. These events are then sent to the internal event analyzer.
- */
-public class EventHookCallback implements AlarmCallback {
-
- private final ModuleManager manager;
- private MetadataQueryService metadataQueryService;
-
- private MetadataQueryService getMetadataQueryService() {
- if (metadataQueryService == null) {
- this.metadataQueryService = manager.find(CoreModule.NAME)
- .provider()
- .getService(MetadataQueryService.class);
- }
- return metadataQueryService;
- }
-
- public EventHookCallback(ModuleManager manager) {
- this.manager = manager;
- }
-
- public void doAlarm(List<AlarmMessage> alarmMessage) throws Exception {
- doAlarmCallback(alarmMessage, false);
- }
-
- public void doAlarmRecovery(List<AlarmMessage> alarmRecoveryMessages)
throws Exception {
- doAlarmCallback(alarmRecoveryMessages, true);
- }
-
- private void doAlarmCallback(List<AlarmMessage> alarmMessage, boolean
isRecovery) throws Exception {
- EventAnalyzerService analyzerService =
manager.find(EventAnalyzerModule.NAME).provider().getService(EventAnalyzerService.class);
- for (AlarmMessage a : alarmMessage) {
- for (Event event : constructCurrentEvent(a, isRecovery)) {
- analyzerService.analyze(event);
- }
- }
- }
-
- private String getLayer(String serviceId) throws IOException {
- Service service = getMetadataQueryService().getService(serviceId);
- if (service != null) {
- return service.getLayers().iterator().next();
- } else {
- return Layer.UNDEFINED.name();
- }
- }
-
- private List<Event> constructCurrentEvent(AlarmMessage msg, boolean
isRecovery) throws IOException {
- List<Event> events = new ArrayList<>(2);
- long now = System.currentTimeMillis();
- Event.Builder builder = Event.newBuilder()
- .setUuid(UUID.randomUUID().toString())
- .setName(isRecovery ? "AlarmRecovery" : "Alarm")
- .setStartTime(isRecovery ? ((AlarmRecoveryMessage)
msg).getRecoveryTime() : now - (msg.getPeriod() * 60 * 1000))
- .setMessage(msg.getAlarmMessage())
- .setType(isRecovery ? Type.Normal : Type.Error)
- .setEndTime(isRecovery ? ((AlarmRecoveryMessage)
msg).getRecoveryTime() : now);
- switch (msg.getScopeId()) {
- case DefaultScopeDefine.SERVICE:
- IDManager.ServiceID.ServiceIDDefinition serviceIdDef =
IDManager.ServiceID.analysisId(msg.getId0());
- builder.setSource(
- Source.newBuilder()
- .setService(serviceIdDef.getName())
- .build()
- );
- builder.setLayer(getLayer(msg.getId0()));
- events.add(builder.build());
- break;
- case DefaultScopeDefine.SERVICE_RELATION:
- IDManager.ServiceID.ServiceIDDefinition sourceServiceIdDef =
IDManager.ServiceID.analysisId(msg.getId0());
- builder.setSource(
- Source.newBuilder()
- .setService(sourceServiceIdDef.getName())
- .build()
- );
- builder.setLayer(getLayer(msg.getId0()));
- events.add(builder.build());
- IDManager.ServiceID.ServiceIDDefinition destServiceIdDef =
IDManager.ServiceID.analysisId(msg.getId1());
- builder.setSource(
- Source.newBuilder()
- .setService(destServiceIdDef.getName())
- .build()
- ).setUuid(UUID.randomUUID().toString());
- builder.setLayer(getLayer(msg.getId1()));
- events.add(builder.build());
- break;
- case DefaultScopeDefine.SERVICE_INSTANCE:
- IDManager.ServiceInstanceID.InstanceIDDefinition instanceIdDef
= IDManager.ServiceInstanceID.analysisId(msg.getId0());
- builder.setSource(
- Source.newBuilder()
- .setServiceInstance(instanceIdDef.getName())
-
.setService(IDManager.ServiceID.analysisId(instanceIdDef.getServiceId()).getName())
- .build()
- );
- builder.setLayer(getLayer(instanceIdDef.getServiceId()));
- events.add(builder.build());
- break;
- case DefaultScopeDefine.SERVICE_INSTANCE_RELATION:
- IDManager.ServiceInstanceID.InstanceIDDefinition
sourceInstanceIdDef = IDManager.ServiceInstanceID.analysisId(msg.getId0());
- builder.setSource(
- Source.newBuilder()
-
.setServiceInstance(sourceInstanceIdDef.getName())
-
.setService(IDManager.ServiceID.analysisId(sourceInstanceIdDef.getServiceId()).getName())
- .build()
- );
- builder.setLayer(getLayer(sourceInstanceIdDef.getServiceId()));
- events.add(builder.build());
- IDManager.ServiceInstanceID.InstanceIDDefinition
destInstanceIdDef = IDManager.ServiceInstanceID.analysisId(msg.getId1());
- builder.setSource(
- Source.newBuilder()
-
.setServiceInstance(destInstanceIdDef.getName())
-
.setService(IDManager.ServiceID.analysisId(destInstanceIdDef.getServiceId()).getName())
- .build()
- ).setUuid(UUID.randomUUID().toString());
- builder.setLayer(getLayer(destInstanceIdDef.getServiceId()));
- events.add(builder.build());
- break;
- case DefaultScopeDefine.ENDPOINT:
- IDManager.EndpointID.EndpointIDDefinition endpointIDDef =
IDManager.EndpointID.analysisId(msg.getId0());
- builder.setSource(
- Source.newBuilder()
- .setEndpoint(endpointIDDef.getEndpointName())
-
.setService(IDManager.ServiceID.analysisId(endpointIDDef.getServiceId()).getName())
- .build()
- );
- builder.setLayer(getLayer(endpointIDDef.getServiceId()));
- events.add(builder.build());
- break;
- case DefaultScopeDefine.ENDPOINT_RELATION:
- IDManager.EndpointID.EndpointIDDefinition sourceEndpointIDDef
= IDManager.EndpointID.analysisId(msg.getId0());
- builder.setSource(
- Source.newBuilder()
-
.setEndpoint(sourceEndpointIDDef.getEndpointName())
-
.setService(IDManager.ServiceID.analysisId(sourceEndpointIDDef.getServiceId()).getName())
- .build()
- );
- builder.setLayer(getLayer(sourceEndpointIDDef.getServiceId()));
- events.add(builder.build());
- IDManager.EndpointID.EndpointIDDefinition destEndpointIDDef =
IDManager.EndpointID.analysisId(msg.getId1());
- builder.setSource(
- Source.newBuilder()
-
.setEndpoint(destEndpointIDDef.getEndpointName())
-
.setService(IDManager.ServiceID.analysisId(destEndpointIDDef.getServiceId()).getName())
- .build()
- ).setUuid(UUID.randomUUID().toString());
- builder.setLayer(getLayer(destEndpointIDDef.getServiceId()));
- events.add(builder.build());
- break;
- }
- return events;
- }
-}
diff --git
a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
index 8e55f7ffb2..0d3473734a 100644
---
a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
+++
b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
@@ -241,7 +241,6 @@ public class NotifyHandler implements MetricsNotify {
allCallbacks.add(new WechatHookCallback(alarmRulesWatcher));
allCallbacks.add(new DingtalkHookCallback(alarmRulesWatcher));
allCallbacks.add(new FeishuHookCallback(alarmRulesWatcher));
- allCallbacks.add(new EventHookCallback(this.manager));
allCallbacks.add(new WeLinkHookCallback(alarmRulesWatcher));
allCallbacks.add(new PagerDutyHookCallback(alarmRulesWatcher));
allCallbacks.add(new DiscordHookCallback(alarmRulesWatcher));
diff --git
a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/EventHookCallbackTest.java
b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/EventHookCallbackTest.java
deleted file mode 100644
index de333eccb7..0000000000
---
a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/EventHookCallbackTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * 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.alarm.provider;
-
-import org.apache.skywalking.apm.network.event.v3.Event;
-import org.apache.skywalking.oap.server.analyzer.event.EventAnalyzerService;
-import
org.apache.skywalking.oap.server.analyzer.event.EventAnalyzerServiceImpl;
-import org.apache.skywalking.oap.server.core.CoreModule;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMessage;
-import org.apache.skywalking.oap.server.core.analysis.IDManager;
-import org.apache.skywalking.oap.server.core.analysis.Layer;
-import org.apache.skywalking.oap.server.core.query.MetadataQueryService;
-import org.apache.skywalking.oap.server.core.query.type.Service;
-import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-import org.apache.skywalking.oap.server.library.module.ModuleManager;
-import org.apache.skywalking.oap.server.library.module.ModuleProviderHolder;
-import org.apache.skywalking.oap.server.library.module.ModuleServiceHolder;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-
-import java.util.Arrays;
-import java.util.List;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-public class EventHookCallbackTest {
-
- private ModuleManager moduleManager = mock(ModuleManager.class);
-
- private ModuleProviderHolder moduleProviderHolder =
mock(ModuleProviderHolder.class);
-
- private ModuleServiceHolder moduleServiceHolder =
mock(ModuleServiceHolder.class);
-
- private MockEventAnalyzerService mockEventAnalyzerService =
mock(MockEventAnalyzerService.class);
-
- private EventAnalyzerService eventAnalyzerService =
mock(EventAnalyzerServiceImpl.class);
-
- private MetadataQueryService metadataQueryService =
mock(MetadataQueryService.class);
-
- @Test
- public void testEventCallbackHasRightFlow() throws Exception {
- List<AlarmMessage> msgs = mockAlarmMessagesHasSingleElement();
- EventHookCallback callback = new EventHookCallback(this.moduleManager);
-
when(moduleManager.find("event-analyzer")).thenReturn(moduleProviderHolder);
- when(moduleProviderHolder.provider()).thenReturn(moduleServiceHolder);
-
when(moduleServiceHolder.getService(EventAnalyzerService.class)).thenReturn(mockEventAnalyzerService);
-
when(moduleManager.find(CoreModule.NAME)).thenReturn(moduleProviderHolder);
-
when(moduleServiceHolder.getService(MetadataQueryService.class)).thenReturn(metadataQueryService);
- Service service = mockService();
-
when(metadataQueryService.getService(service.getId())).thenReturn(service);
- //make sure current service be called.
- callback.doAlarm(msgs);
- verify(mockEventAnalyzerService).analyze(any(Event.class));
-
-
when(moduleServiceHolder.getService(EventAnalyzerService.class)).thenReturn(eventAnalyzerService);
- callback.doAlarm(msgs);
- //Ensure that the current Event is properly constructed
- ArgumentCaptor<Event> argument = ArgumentCaptor.forClass(Event.class);
- verify(eventAnalyzerService).analyze(argument.capture());
- Event value = argument.getValue();
- AlarmMessage msg = msgs.get(0);
- assertEquals(msg.getName(), value.getSource().getService());
- assertEquals("Alarm", value.getName());
- assertEquals(msg.getAlarmMessage(), value.getMessage());
- assertEquals(msg.getPeriod(), (value.getEndTime() -
value.getStartTime()) / 1000 / 60);
- assertEquals(service.getLayers().iterator().next(), value.getLayer());
-
- }
-
- @Test
- public void testRelationEventBeProperlyConstructed() throws Exception {
- List<AlarmMessage> msgs = mockAlarmMessagesHasSourceAndDest();
- EventHookCallback callback = new EventHookCallback(this.moduleManager);
-
when(moduleManager.find("event-analyzer")).thenReturn(moduleProviderHolder);
- when(moduleProviderHolder.provider()).thenReturn(moduleServiceHolder);
-
when(moduleServiceHolder.getService(EventAnalyzerService.class)).thenReturn(eventAnalyzerService);
-
when(moduleManager.find(CoreModule.NAME)).thenReturn(moduleProviderHolder);
-
when(moduleServiceHolder.getService(MetadataQueryService.class)).thenReturn(metadataQueryService);
- Service service = mockService();
-
when(metadataQueryService.getService(service.getId())).thenReturn(service);
- callback.doAlarm(msgs);
-
- ArgumentCaptor<Event> argument = ArgumentCaptor.forClass(Event.class);
- verify(eventAnalyzerService, times(2)).analyze(argument.capture());
- List<Event> events = argument.getAllValues();
- assertEquals(events.size(), 2);
- Event sourceEvent = events.get(0);
- Event destEvent = events.get(1);
- AlarmMessage msg = msgs.get(0);
- assertEquals(sourceEvent.getSource().getService(),
IDManager.ServiceID.analysisId(msg.getId0()).getName());
- assertEquals((sourceEvent.getEndTime() - sourceEvent.getStartTime()) /
1000 / 60, msg.getPeriod());
- assertEquals(destEvent.getSource().getService(),
IDManager.ServiceID.analysisId(msg.getId1()).getName());
- assertEquals((destEvent.getEndTime() - destEvent.getStartTime()) /
1000 / 60, msg.getPeriod());
- assertEquals(service.getLayers().iterator().next(),
sourceEvent.getLayer());
- assertEquals(Layer.UNDEFINED.name(), destEvent.getLayer());
- }
-
- private List<AlarmMessage> mockAlarmMessagesHasSingleElement() {
- AlarmMessage msg = new AlarmMessage();
- msg.setScopeId(DefaultScopeDefine.SERVICE);
- msg.setScope("SERVICE");
- msg.setName("test-skywalking");
- msg.setId0("dGVzdC1za3l3YWxraW5n.1");
- msg.setAlarmMessage("Alarm caused by Rule service_resp_time_rule");
- msg.setPeriod(3);
- return Arrays.asList(msg);
- }
-
- private List<AlarmMessage> mockAlarmMessagesHasSourceAndDest() {
- AlarmMessage msg = new AlarmMessage();
- msg.setScopeId(DefaultScopeDefine.SERVICE_RELATION);
- msg.setScope("");
- msg.setName("test-skywalking");
- msg.setId0(IDManager.ServiceID.buildId("test-skywalking", true));
- msg.setId1(IDManager.ServiceID.buildId("destIdStr", true));
- msg.setAlarmMessage("Alarm caused by Rule service_resp_time_rule");
- msg.setPeriod(5);
- return Arrays.asList(msg);
- }
-
- private Service mockService() {
- Service service = new Service();
- service.setName("test-skywalking");
- service.setId(IDManager.ServiceID.buildId(service.getName(), true));
- service.getLayers().add(Layer.GENERAL.name());
- return service;
- }
-
- class MockEventAnalyzerService implements EventAnalyzerService {
-
- @Override
- public void analyze(Event event) {
- //ignore current mock process.
- }
- }
-}
diff --git a/test/e2e-v2/CLAUDE.md b/test/e2e-v2/CLAUDE.md
index 894e527832..37e43194a2 100644
--- a/test/e2e-v2/CLAUDE.md
+++ b/test/e2e-v2/CLAUDE.md
@@ -354,19 +354,6 @@ msgs:
tags:
- key: level
value: WARNING
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid }}
- source:
- service: e2e-service-provider
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- message: {{ notEmpty .message }}
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: GENERAL
- {{- end }}
{{- end }}
```
diff --git
a/test/e2e-v2/cases/alarm/expected/silence-after-graphql-critical.yml
b/test/e2e-v2/cases/alarm/expected/silence-after-graphql-critical.yml
index a4b608c285..f4f4015387 100644
--- a/test/e2e-v2/cases/alarm/expected/silence-after-graphql-critical.yml
+++ b/test/e2e-v2/cases/alarm/expected/silence-after-graphql-critical.yml
@@ -25,21 +25,7 @@ msgs:
value: CRITICAL
- key: receivers
value: zhangsan
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid}}
- source:
- service: e2e-service-provider
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- type: ""
- message: {{ notEmpty .message}}
- parameters: []
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: GENERAL
- {{- end }}
+ events: []
snapshot:
expression: sum((service_resp_time > 100) && (service_sla > 1)) >= 1
metrics:
diff --git a/test/e2e-v2/cases/alarm/expected/silence-after-graphql-warn.yml
b/test/e2e-v2/cases/alarm/expected/silence-after-graphql-warn.yml
index 50b81cb282..d4f79281af 100644
--- a/test/e2e-v2/cases/alarm/expected/silence-after-graphql-warn.yml
+++ b/test/e2e-v2/cases/alarm/expected/silence-after-graphql-warn.yml
@@ -25,21 +25,7 @@ msgs:
value: WARNING
- key: receivers
value: lisi
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid }}
- source:
- service: e2e-service-provider
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- type: ""
- message: {{ notEmpty .message }}
- parameters: []
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: GENERAL
- {{- end }}
+ events: []
snapshot:
expression: sum(service_percentile{p='50,75,90,95,99'} > 100) >= 3
metrics:
@@ -70,21 +56,7 @@ msgs:
value: WARNING
- key: receivers
value: lisi
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid}}
- source:
- service: e2e-service-provider
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- type: ""
- message: {{ notEmpty .message}}
- parameters: []
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: GENERAL
- {{- end }}
+ events: []
snapshot:
expression: sum(abs(increase(service_resp_time,1)) > 0) >= 1
metrics:
diff --git
a/test/e2e-v2/cases/alarm/expected/silence-before-graphql-critical.yml
b/test/e2e-v2/cases/alarm/expected/silence-before-graphql-critical.yml
index a4b608c285..f4f4015387 100644
--- a/test/e2e-v2/cases/alarm/expected/silence-before-graphql-critical.yml
+++ b/test/e2e-v2/cases/alarm/expected/silence-before-graphql-critical.yml
@@ -25,21 +25,7 @@ msgs:
value: CRITICAL
- key: receivers
value: zhangsan
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid}}
- source:
- service: e2e-service-provider
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- type: ""
- message: {{ notEmpty .message}}
- parameters: []
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: GENERAL
- {{- end }}
+ events: []
snapshot:
expression: sum((service_resp_time > 100) && (service_sla > 1)) >= 1
metrics:
diff --git a/test/e2e-v2/cases/alarm/expected/silence-before-graphql-warn.yml
b/test/e2e-v2/cases/alarm/expected/silence-before-graphql-warn.yml
index 6d19c8185d..dd6e258b85 100644
--- a/test/e2e-v2/cases/alarm/expected/silence-before-graphql-warn.yml
+++ b/test/e2e-v2/cases/alarm/expected/silence-before-graphql-warn.yml
@@ -25,21 +25,7 @@ msgs:
value: WARNING
- key: receivers
value: lisi
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid }}
- source:
- service: e2e-service-provider
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- type: ""
- message: {{ notEmpty .message }}
- parameters: []
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: GENERAL
- {{- end }}
+ events: []
snapshot:
expression: sum(service_percentile{p='50,75,90,95,99'} > 100) >= 3
metrics:
@@ -70,21 +56,7 @@ msgs:
value: WARNING
- key: receivers
value: lisi
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid}}
- source:
- service: e2e-service-provider
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- type: ""
- message: {{ notEmpty .message}}
- parameters: []
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: GENERAL
- {{- end }}
+ events: []
snapshot:
expression: sum(abs(increase(service_resp_time,1)) > 0) >= 1
metrics:
diff --git a/test/e2e-v2/cases/baseline/expected/critical.yml
b/test/e2e-v2/cases/baseline/expected/critical.yml
index 6d3431adc4..8a0ccd4d2e 100644
--- a/test/e2e-v2/cases/baseline/expected/critical.yml
+++ b/test/e2e-v2/cases/baseline/expected/critical.yml
@@ -25,21 +25,7 @@ msgs:
value: CRITICAL
- key: receivers
value: zhangsan
- events:
- {{- contains .events }}
- - uuid: {{ notEmpty .uuid }}
- source:
- service: e2e-test-dest-service
- serviceinstance: ""
- endpoint: ""
- name: Alarm
- type: ""
- message: {{ notEmpty .message }}
- parameters: []
- starttime: {{ gt .starttime 0 }}
- endtime: {{ gt .endtime 0 }}
- layer: {{ notEmpty .layer }}
- {{- end }}
+ events: []
snapshot:
expression: sum(service_resp_time > baseline(service_resp_time,lower))
>= 1
metrics: