diff --git a/src/datasource/datasource.ts b/src/datasource/datasource.ts index 84dba1e..ac36fc1 100644 --- a/src/datasource/datasource.ts +++ b/src/datasource/datasource.ts @@ -542,6 +542,19 @@ export class ZabbixDatasource extends DataSourceApi h.hostid); const appids = apps?.map((a) => a.applicationid); const options = getTriggersOptions(target, timeRange); + + const tagsFilter = this.replaceTemplateVars(target.tags?.filter, request.scopedVars); + // replaceTemplateVars() builds regex-like string, so we should trim it. + const tagsFilterStr = tagsFilter.replace('/^', '').replace('$/', ''); + const tags = utils.parseTags(tagsFilterStr); + tags.forEach((tag) => { + // Zabbix uses {"tag": "", "value": "", "operator": ""} format, where 1 means Equal + tag.operator = 1; + }); + if (tags && tags.length) { + options.tags = tags; + } + const alerts = await this.zabbix.getHostAlerts(hostids, appids, options); return responseHandler.handleTriggersResponse(alerts, groups, timeRange, target); } diff --git a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts index 38c7c79..6eb22c4 100644 --- a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts +++ b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts @@ -715,7 +715,7 @@ export class ZabbixAPIConnector { } async getHostAlerts(hostids, applicationids, options): Promise { - const { minSeverity, acknowledged, count, timeFrom, timeTo } = options; + const { minSeverity, acknowledged, tags, count, timeFrom, timeTo } = options; const params: any = { output: 'extend', hostids: hostids, @@ -747,6 +747,11 @@ export class ZabbixAPIConnector { params.lastChangeTill = timeTo; } + if (tags) { + params.tags = tags; + params.evaltype = 0; + } + let triggers = await this.request('trigger.get', params); if (!count || acknowledged === 1) { triggers = filterTriggersByAcknowledge(triggers, acknowledged);