class NsServerAlert

La classe NsServerAlert représente une condition critique surveillée par le serveur de sauvegarde. Lorsqu'une alerte est déclenchée, cela signifie que la condition a éé rencontrée. Toute alerte déclenchée doit être réinitialisée manuellement afin que la surveillance de la condition soit relancée. La réinitialisation des alertes peut se faire depuis la console d'administration ou par code.

Les alertes serveur permettent de prévenir d'une défaillance ou d'une situation inhabituelle. Elles peuvent être appliquées à de nombreux objets du serveur de sauvegarde : utilisateurs, groupes, sauvegardes, etc. Le déclenchement d'une alerte engendre une notification dans la console d'administration du logiciel et suivant les paramètres de reporting choisis, un e-mail peut etre envoyé à l'administrateur du serveur de de sauvegarde.

Un système d'héritage permet de définir au niveau du groupe d'utilisateurs (NsUserGroup) les alertes qui devront être automatiquement injectées par le serveur lors de la création de nouvelles sauvegardes et de nouveaux groupes. Un utilisateur connecté avec des droits administrateur peut également créer, modifier et réinitialiser des alertes.

ID : __int64

L'identificateur numérique de l'alerte. Les constantes suivantes peuvent-être utilisées :

  • THALERT_CREATE = -1 : l'objet n'existe pas et doit être créé.

CreationDate : VARIANT readonly

La date de création de l'alerte, au format UTC.

AlertClass : enum NsAlertClass

La classe de l'alerte.

AlertSubclass : long

La sous-classe de l'alerte.

ObjectType : enum NsAlertableObjectType

Le type de l'objet sur lequel porte l'alerte.

ObjectID : __int64

L'identificateur unique de l'objet sur lequel porte l'alerte.

Raised : VARIANT_BOOL

Une valeur booléenne indiquant si l'alerte est déclenchée ou non.

NotifyMode : enum NsAlertNotifyMode

Le mode de notification à utiliser lorsque l'alerte est déclenchée.

RaiseDate : VARIANT readonly

La date de déclenchement de l'alerte au format UTC, le cas échéant.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 AlertID)

Charge en mémoire l'alerte d'identificateur AlertID.

VARIANT_BOOL Update(NsConnection Connection)

Créée ou met à jour l'alerte décrite par l'objet.

VARIANT_BOOL Delete(NsConnection Connection)

Supprime l'alerte représentée par l'objet.

VARIANT_BOOL Reset(NsConnection Connection)

Réinitialise l'alerte, si elle est déclenchée.

Création d'une alerte prévenant de nombreuses tentatives de connexion infructueuses successives, pour les utilisateurs ne l'ayant pas activée

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

const nsAlertClassCheckMaxAuthAttempts = 11
const aotUser = 2
const nsAlertNotifyServerAdmin = 1

if connection.ConnectToLocalServer then
  set server = CreateObject("NsAPI.NsServer")
  
  usersCount = 0 ' Compte les utilisateurs du serveur
  existingAlertsCount = 0 ' Compte le nombre d'alertes nsAlertClassCheckMaxAuthAttempts déjà créées
  createdAlertsCount = 0  ' Compte le nombre d'alertes nsAlertClassCheckMaxAuthAttempts créées par ce script

  if server.Load(connection) then ' Charger les informations serveur
    set groups = server.UserGroups(connection) ' Récupérer les groupes paramétrés
    
    for each group in groups ' Pour chaque groupe
      set users = group.Users(connection) ' Récupérer les utilisateurs du groupe
      
      for each user in users ' Pour chaque utilisateur
        set alerts = user.alerts(connection, false) ' Récupérer toutes les alertes qui lui sont associées
        usersCount = usersCount + 1
        
        index = alerts.FindByClass(nsAlertClassCheckMaxAuthAttempts) ' Chercher la position dans la liste de l'alerte nsAlertClassCheckMaxAuthAttempts
        
        if index = -1 then ' L'alerte n'exite pas !
          set newAlert = CreateObject("NsAPI.NsServerAlert")
          
          newAlert.ID = -1 ' Constante nécessaire pour créer l'alerte
          newAlert.AlertClass = nsAlertClassCheckMaxAuthAttempts
          newAlert.AlertSubclass = 0
          newAlert.ObjectType = aotUser ' Associer à un objet Utilisateur
          newAlert.ObjectID = user.ID ' L'ID de l'utilisateur
          newAlert.NotifyMode = nsAlertNotifyServerAdmin ' Envoyer un mail à l'admin serveur
          
          if newAlert.update(connection) then ' Créer l'alerte
            createdAlertsCount = createdAlertsCount + 1 ' Incrémenter le nombre d'alertes créées
          else
            MsgBox "Impossible de créer une alerte. Consultez les journaux serveur pour en savoir plus." ' Erreur
          end if
        else
          ' L'alerte existe déjà. On ne fait rien, à part incrémenter le nombre d'alertes existantes.
          existingAlertsCount = existingAlertsCount + 1
        end if
      next
    next
    
    ' Afficher un joli résumé
    MsgBox usersCount & " utilisateurs ont été analysés." & vbCrLf & existingAlertsCount & " alertes existaient déjà." & vbCrLf & createdAlertsCount & " alertes ont été crées."
  else
    MsgBox "Impossible de charger les informations serveur."
  end if

  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if

Réinitialisation de toutes les alertes déclenchées sur le serveur

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

if connection.ConnectToLocalServer then
  set server = CreateObject("NsAPI.NsServer")
  raisedAlertsCount = 0

  if server.Load(connection) then ' Charger les informations serveur
    set alerts = server.Alerts(connection, true) ' Obtenir la liste des alertes déclenchées

    for each alert in alerts ' Pour chaque alerte
      if alert.Reset(connection) then ' Réinitialisation de l'alerte...
        raisedAlertsCount = raisedAlertsCount + 1 ' Succès : on incrémente le compteur
      else
        MsgBox "Impossible de réinitialiser l'alerte #" & alert.ID ' Echec : on notifie l'erreur
      end if
    next
  else
    MsgBox "Impossible de charger les informations serveur."
  end if

  if raisedAlertsCount = 0 then
    MsgBox "Aucune alerte n'a été réinitialisée."
  else
    MsgBox raisedAlertsCount & " alertes ont été réinitialisées."
  end if

  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if