From 7842f468d4ba89f7a444989e3bbb91bf790f3986 Mon Sep 17 00:00:00 2001 From: Tom Zhang Date: Thu, 14 Jul 2016 11:10:48 +0930 Subject: [PATCH] add acknowledge trigger event function. --- src/datasource-zabbix/zabbixAPI.service.js | 8 +++++ src/panel-triggers/module.html | 17 ++++++++++ src/panel-triggers/module.js | 38 +++++++++++++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/datasource-zabbix/zabbixAPI.service.js b/src/datasource-zabbix/zabbixAPI.service.js index df8bcf4..f8dd3f1 100644 --- a/src/datasource-zabbix/zabbixAPI.service.js +++ b/src/datasource-zabbix/zabbixAPI.service.js @@ -47,6 +47,7 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) { }, // Handle API errors function(error) { + console.log('Zabbix error: '+error.data); if (isNotAuthorized(error.data)) { return self.loginOnce().then( function() { @@ -113,6 +114,13 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) { //////////////////////////////// // Zabbix API method wrappers // //////////////////////////////// + acknowledgeEvent(eventid,message){ + var params = { + eventids:eventid, + message:message + }; + return this.request('event.acknowledge',params); + } getGroups() { var params = { diff --git a/src/panel-triggers/module.html b/src/panel-triggers/module.html index fddc004..e16046e 100644 --- a/src/panel-triggers/module.html +++ b/src/panel-triggers/module.html @@ -94,6 +94,15 @@ {{ack.message}} + + + {{trigger.newAct.time}} + + + {{trigger.newAct.user}} + + + @@ -127,6 +136,14 @@ bs-tooltip="'Acknowledges ({{trigger.acknowledges.length}})'"> + + + + + diff --git a/src/panel-triggers/module.js b/src/panel-triggers/module.js index 7de6390..1d952c9 100644 --- a/src/panel-triggers/module.js +++ b/src/panel-triggers/module.js @@ -59,10 +59,11 @@ var defaultTimeFormat = "DD MMM YYYY HH:mm:ss"; class TriggerPanelCtrl extends MetricsPanelCtrl { /** @ngInject */ - constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv) { + constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv,contextSrv) { super($scope, $injector); this.datasourceSrv = datasourceSrv; this.templateSrv = templateSrv; + this.contextSrv = contextSrv; this.triggerStatusMap = triggerStatusMap; this.defaultTimeFormat = defaultTimeFormat; @@ -227,6 +228,41 @@ class TriggerPanelCtrl extends MetricsPanelCtrl { switchAcknowledges(trigger) { trigger.showAcknowledges = !trigger.showAcknowledges; } + addAcknowledgeMessage(trigger){ + trigger.showAcknowledges = true; + trigger.newAct={ + time:new Date(), + user:this.contextSrv.user.name+'(Grafana)', + eventid:trigger.lastEvent.eventid, + message:'' + }; + } + acknowledgeTrigger($event,trigger,newAct){ + if($event.keyCode!=13) return; + if(newAct.message.trim() === ""){ + delete trigger.newAct; + trigger.showAcknowledges = false; + return; + } + this.datasourceSrv.get(this.panel.datasource).then(datasource => { + var zabbix = datasource.zabbixAPI; + zabbix.acknowledgeEvent(newAct.eventid,newAct.user+': '+newAct.message) + .then(rs=>{ + zabbix.getAcknowledges(rs.eventids).then(events => { + _.each(events, event => { + trigger.acknowledges = _.map(event.acknowledges, ack => { + var time = new Date(+ack.clock * 1000); + ack.time = time.toLocaleString(); + ack.user = ack.alias + ' (' + ack.name + ' ' + ack.surname + ')'; + return ack; + }); + }); + delete trigger.newAct; + console.log('event id '+ rs.eventids.join() + ' new message added: ' + ack.message ); + }); + }); + }); + } } TriggerPanelCtrl.templateUrl = 'panel-triggers/module.html';