add acknowledge trigger event function.
This commit is contained in:
@@ -47,6 +47,7 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) {
|
|||||||
},
|
},
|
||||||
// Handle API errors
|
// Handle API errors
|
||||||
function(error) {
|
function(error) {
|
||||||
|
console.log('Zabbix error: '+error.data);
|
||||||
if (isNotAuthorized(error.data)) {
|
if (isNotAuthorized(error.data)) {
|
||||||
return self.loginOnce().then(
|
return self.loginOnce().then(
|
||||||
function() {
|
function() {
|
||||||
@@ -113,6 +114,13 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) {
|
|||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
// Zabbix API method wrappers //
|
// Zabbix API method wrappers //
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
acknowledgeEvent(eventid,message){
|
||||||
|
var params = {
|
||||||
|
eventids:eventid,
|
||||||
|
message:message
|
||||||
|
};
|
||||||
|
return this.request('event.acknowledge',params);
|
||||||
|
}
|
||||||
|
|
||||||
getGroups() {
|
getGroups() {
|
||||||
var params = {
|
var params = {
|
||||||
|
|||||||
@@ -94,6 +94,15 @@
|
|||||||
<small>{{ack.message}}</small>
|
<small>{{ack.message}}</small>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr ng-if="trigger.newAct">
|
||||||
|
<td>
|
||||||
|
<small>{{trigger.newAct.time}}</small>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<small>{{trigger.newAct.user}}</small>
|
||||||
|
</td>
|
||||||
|
<td><input ng-model="trigger.newAct.message" size="80" ng-blur="ctrl.acknowledgeTrigger({keyCode:13},trigger,trigger.newAct)" ng-keyup="ctrl.acknowledgeTrigger($event,trigger,trigger.newAct)"/></td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@@ -127,6 +136,14 @@
|
|||||||
bs-tooltip="'Acknowledges ({{trigger.acknowledges.length}})'">
|
bs-tooltip="'Acknowledges ({{trigger.acknowledges.length}})'">
|
||||||
<i class="fa fa-comments"></i>
|
<i class="fa fa-comments"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<!-- Acknowledge events -->
|
||||||
|
<a ng-if="trigger.acknowledges === undefined"
|
||||||
|
role="button"
|
||||||
|
ng-click="ctrl.addAcknowledgeMessage(trigger)"
|
||||||
|
bs-tooltip="'acknowledge this event'">
|
||||||
|
<i class="fa fa-comments-o"></i>
|
||||||
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -59,10 +59,11 @@ var defaultTimeFormat = "DD MMM YYYY HH:mm:ss";
|
|||||||
class TriggerPanelCtrl extends MetricsPanelCtrl {
|
class TriggerPanelCtrl extends MetricsPanelCtrl {
|
||||||
|
|
||||||
/** @ngInject */
|
/** @ngInject */
|
||||||
constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv) {
|
constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv,contextSrv) {
|
||||||
super($scope, $injector);
|
super($scope, $injector);
|
||||||
this.datasourceSrv = datasourceSrv;
|
this.datasourceSrv = datasourceSrv;
|
||||||
this.templateSrv = templateSrv;
|
this.templateSrv = templateSrv;
|
||||||
|
this.contextSrv = contextSrv;
|
||||||
this.triggerStatusMap = triggerStatusMap;
|
this.triggerStatusMap = triggerStatusMap;
|
||||||
this.defaultTimeFormat = defaultTimeFormat;
|
this.defaultTimeFormat = defaultTimeFormat;
|
||||||
|
|
||||||
@@ -227,6 +228,41 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
|
|||||||
switchAcknowledges(trigger) {
|
switchAcknowledges(trigger) {
|
||||||
trigger.showAcknowledges = !trigger.showAcknowledges;
|
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';
|
TriggerPanelCtrl.templateUrl = 'panel-triggers/module.html';
|
||||||
|
|||||||
Reference in New Issue
Block a user