[vRO] Récupérer les événements du vCenter des 24 dernières heures

Ce message est également disponible en : Anglais

vra-product-icon-mac_0

 

 

 

 

Comment récupérer les événements des 24 dernières heures de votre vCenter avec plus de 999 events.

Comme vous le savez , par défaut , le nombre maximum d’événements que peut vous afficher le vCenter est de 999. Je vais donc vous montrer comment récupérer l’intégralité des événements sur les dernières 24h dans vRealize Orchestrator (vRO).

Dans cet exemple, je vais récupérer tous les événements du vCenter pour ensuite les traiter un par un.

Premièrement vous devez ajouter comme attribut votre vCenter (Type :sdkconnection).

sdk connection

Ensuite vous devez initialiser les événements sur les 24h dernières heures et créez un collecteur. Par défaut le collecteur ne peut stocker que 999 événements.

System.debug("Initialize all the Events of the infrastructure minus 24 hours");
//Initialize all the Events of the infrastructure minus 24 hours
var vcEventFilterSpec = new VcEventFilterSpec() ;
var vcEventFilterSpecByTime = new VcEventFilterSpecByTime() ;
var vcEventManager = sdk.eventManager;
var HostEvents = [];

var beginTime = new Date();

beginTime.setHours(beginTime.getHours()-24);

vcEventFilterSpecByTime.beginTime = beginTime;

System.debug("BeginTime : "+beginTime);

System.debug("Define Filter by time");
vcEventFilterSpec.time = vcEventFilterSpecByTime;


var collector = vcEventManager.createCollectorForEvents(vcEventFilterSpec);

Ensuite, ce que je vais faire , c’est créer une boucle while et lire les 999 événements puis tous les événements suivant en créant un nouveau collecteur.

//Define Max task number per Collector (999 maximum)
var tasknumber = 999;

var tasks =[];

var collector = vcEventManager.createCollectorForEvents(vcEventFilterSpec);

var dummy = collector.rewindCollector();

var tasks = collector.readNextEvents(tasknumber);

while (tasks.length == tasknumber) {
    var last = tasks.length-1;
System.debug("Number of event to analyze: "+tasks.length);
System.debug("First Event :"+tasks[0].createdTime);
System.debug("Last event :"+tasks[last].createdTime);

for each (var task in tasks){
    if(task.fullFormattedMessage != undefined ) {
    System.debug(task.createdTime+" "+task.fullFormattedMessage);
    }
}
var tasks = collector.readNextEvents(tasknumber);
}

Une fois que le nombre maximum d’évènements est inférieur à 999 vous allez afficher dans une simple boucle les derniers évènements restant.


var last = tasks.length-1;

System.debug("Number of event to analyze: "+tasks.length);
System.debug("First Event :"+tasks[0].createdTime);
System.debug("Last event :"+tasks[last].createdTime);

for each (var task in tasks){
if(task.fullFormattedMessage != undefined ) {
System.debug(task.createdTime+" "+task.fullFormattedMessage);
}
}

Pour finir , ne pas oublier de détruire les collecteurs précédemment créés.

collector.destroyCollector();

Et voila, maintenant le workflow va vous affichez tous les événements ligne par ligne.

screen-shot-2016-10-09-at-20-00-24

 

Julien Varela
Follow me

Julien Varela

Virtualisation & Cloud manager chez Excellium Services
Consultant Virtualisation/Cloud au sein de Excellium Services et blogger @vThink. Je suis passionné par les nouvelles technologies. Et tout particulièrement, celles concernant la virtualisation. j'ai su apporter par mon autonomie, ma curiosité, ma pugnacité et ma technicité mon expertise dans ce domaine.
Julien Varela
Follow me

Laisser un commentaire