测试告警查询
简介
启用了告警功能的后端数据源插件可以基于数据源查询定义告警。在您可以保存告警之前,告警引擎会评估告警定义的条件,以确保来自数据源的响应格式正确。如果格式正确,那么您可以使用 alertRulePage
fixture 来验证是否可以从数据源返回的查询输出创建告警规则。
信息
用于端到端测试告警规则的 API 仅与 Grafana >=9.4.0 兼容。
评估新的告警规则
以下示例使用 alertRulePage
fixture。使用此 fixture,测试在添加新告警规则的页面中开始。然后,您填写告警规则查询并调用 evaluate
函数。Evaluate 点击 Preview
按钮,这将触发对 eval
端点的调用,以评估数据源查询的响应是否可用于创建告警。toBeOK
matcher 用于验证评估是否成功。
test('should evaluate to true if query is valid', async ({ page, alertRuleEditPage, selectors }) => {
const queryA = alertRuleEditPage.getQueryRow();
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();
});