跳转到主要内容

测试警报查询

介绍

已启用警报功能的数据源后端插件可以根据数据源查询定义警报。在您保存警报之前,警报定义的条件将由警报引擎评估,以确保数据源响应正确。如果形状正确,则可以使用 alertRulePage 固定装置验证是否可以从数据源查询返回的输出中创建警报规则。

信息

端到端测试警报规则的 API 仅与 Grafana >=9.4.0 兼容。

评估新的警报规则

以下示例使用 alertRulePage 固定装置。使用此装置,测试从添加新警报规则页面开始。然后填写警报规则查询并调用 evaluate 函数。评估点击 预览 按钮,这将触发对 eval 端点的调用以评估数据源查询的响应是否可用于创建警报。使用 toBeOK 匹配器来验证评估是否成功。

test('should evaluate to true if query is valid', async ({ page, alertRuleEditPage, selectors }) => {
const queryA = alertRuleEditPage.getAlertRuleQueryRow('A');
await queryA.datasource.set('gdev-prometheus');
await queryA.locator.getByLabel('Code').click();
await page.waitForFunction(() => window.monaco);
await queryA.getByGrafanaSelector(selectors.components.CodeEditor.container).click();
await page.keyboard.insertText('topk(5, max(scrape_duration_seconds) by (job))');
await expect(alertRuleEditPage.evaluate()).toBeOK();
});

评估已配置的警报规则

您还可以使用预配警报规则来测试您的数据源是否与警报兼容。例如

test('should evaluate to true when loading a provisioned query that is valid', async ({
gotoAlertRuleEditPage,
readProvisionedAlertRule,
}) => {
const alertRule = await readProvisionedAlertRule({ fileName: 'alerts.yml' });
const alertRuleEditPage = await gotoAlertRuleEditPage(alertRule);
await expect(alertRuleEditPage.evaluate()).toBeOK();
});