add acknowledge trigger event function.
This commit is contained in:
@@ -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 = {
|
||||
|
||||
@@ -94,6 +94,15 @@
|
||||
<small>{{ack.message}}</small>
|
||||
</td>
|
||||
</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>
|
||||
</table>
|
||||
</div>
|
||||
@@ -127,6 +136,14 @@
|
||||
bs-tooltip="'Acknowledges ({{trigger.acknowledges.length}})'">
|
||||
<i class="fa fa-comments"></i>
|
||||
</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>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user