[SQL Server] Réplication : alertes et éléments d’audit

Ce billet présente brièvement les alertes dédiées à la réplication, ainsi que quelques éléments d’audit. Concernant ce dernier point, nous aborderons notamment le Replication Monitor, les Dynamic Management Views (DMV) et les Performance Dashboard Reports associés à la réplication. Ce billet s’applique surtout aux versions supérieures ou égales à SQL Server 2005.

Remarques sur les alertes

Lors de la mise-en-place de la réplication, SQL Server créé automatiquement des alertes prédéfinies. Celles-ci sont retrouvables, au sein de l’explorateur d’objets de SQL Server Management Studio (SSMS), dans la section Alertes d’Agent SQL Server :


Par défaut, les alertes de type Avertissement sont activées, tandis que les autres types d’alertes ne le sont pas. De ce fait, pour activer une alerte, il suffit de faire un clic-droit sur l’alerte concernée, puis sélectionner Activer.

En allant dans les propriétés d’une alerte (via clic-droit, ou en double-cliquant dessus), vous pouvez effectuer quelques configurations adaptées, à savoir :

  • Onglet Général : définition du nom et du type d’alerte, ainsi que des événéments (les valeurs par défaut sont déjà suffisantes).
  • Onglet Réponses : exécution d’un travail complémentaire éventuel, notification d’opérateurs (il s’agit de personnes physiques ou morales à mailer).
  • Onglet Options : définition d’un message de notification supplémentaire et du délai entre les réponses.
  • Onglet Historique : historique de lancement (dernière exécution,
Notez bien qu’outre l’utilisation des outils de monitoring qui seront présentés dans ce billet, vous pouvez configurer des alertes de façon à ce qu’en cas de problème, une notification soit lancée par le SQL Agent.
Plus de détails ici : http://msdn.microsoft.com/en-us/library/ms152496.aspx.
Cela est également possible via le Replication Monitor (voir section suivante).

Vous pouvez utiliser le script T-SQL suivant pour connaître la liste des dernières alertes lancées :

USE msdb
GO
SELECT * FROM sysreplicationalerts
ORDER BY time DESC
GO

Utilisation du Replication Monitor

Le Replication Monitor est un outil du composant de réplication qui permet d’avoir des informations relatives à la santé de chaque élément concerné par la réplication. Il permet également, à l’instar du moniteur de SQL Agent Jobs, d’avoir l’état du déroulement des travaux des agents de réplication et de, si possible, détecter l’origine des problèmes éventuels de réplication.

Pour lancer le Replication Monitor, faites un clic-droit sur Réplication au sein de l’explorateur d’objets de SSMS de l’instance d’une base concernée par la réplication (ou sur n’importe quelle publication locale ou abonnement local), puis sélectionner Lancer le moniteur de réplication :


Une fenêtre modale s’ouvrira :


Le Replication Monitor peut permettre d’avoir un aperçu :

  • De toutes les publications de l’instance éditrice (cf : figure précédente).
  • De la liste de suivi des abonnements :

    Il est possible de filtrer les informations par abonnements :


    Et par type d’informations à afficher :


  • Des informations relatives aux travaux des agents de réplication :


Il est possible de filtrer les informations par type d’agents :


On rappelle que l’agent d’instantané fait référence au Snapshot Agent, l’agent de lecture du journal au Log Reader Agent (pour la réplication transactionnelle), l’agent de lecture de la file d’attente au Queue Reader Agent (pour la réplication transactionnelle peer-to-peer), l’agent de travaux de maintenance aux agents de nettoyage et de vérifications du Distribution Agent.

Voici un petit aperçu pour le Log Reader Agent :


En cas de souci avec le Log Reader Agent, n’hésitez pas à directement aller dans le Replication Monitor, onglet Agents, filtre Agent de lecture du journal, pour en savoir plus sur son statut et sa dernière action, comme ci-dessus.

Les sous-sections suivantes donnent quelques exemples de monitoring de la réplication avec le Replication Monitor.

Exemple de monitoring de la réplication de snapshot

A gauche du Replication Monitor, si vous cliquez sur une publication de snapshot, le Replication Monitor affichera les abonnements concernés par la réplication de snapshot sélectionnée, et diverses informations associées (état, dernière synchronisation,…) :


L’onglet Agents affiche les informations relatives aux agents de notre publication de snapshot. Il n’y a, en fait, que le Snapshot Agent :


On y trouve notamment le statut en cours des agents, la date et heure de dernière exécution, la durée de la dernière exécution et la dernière action effectuée. Les informations sur les travaux du Distribution Agents ne sont pas présents ici, mais peuvent être retrouvables dans l’onglet Agents de l’ensemble des publications qu’on a pu voir un peu plus haut.

L’onglet Avertissements fournit les informations relatives aux alertes et avertissements de la


Il n’y a, en fait, qu’une seule alerte par défaut dont la configuration est suffisante pour le monitoring d’une publication de snapshot.

En cliquant sur le bouton Configurer des alertes… il est possible d’ajouter de nouvelles alertes :


Plus de détails ici : http://msdn.microsoft.com/en-us/library/ms152496.aspx.

L’accès au détail des informations sur les abonnés peut se faire en allant dans l’onglet Tous les abonnements, puis en faisant un clic-droit sur un des abonnés que l’on souhaite inspecter pour accéder à ses informations de monitoring détaillées :


On y peut lire le détail des dernières informations relatives aux actions de synchronisation, avec possibilité de les filtrer :


Exemple de monitoring de la réplication transactionnelle

A gauche du Replication Monitor, si vous cliquez sur une publication transactionnelle, le Replication Monitor affichera les abonnements transactionnels, et diverses informations associées (état, dernière synchronisation,…) :


En allant dans l’onglet Jetons de suivi (Token Tracers), on obtient l’aperçu suivant :


Un jeton de suivi est un marqueur spécial écrit au sein du journal de transactions de la base de publication (MaBase1, dans notre cas). Un jeton de suivi n’a aucun impact sur le changement des données au sein des tables répliquées vers un abonné. Mais toutefois, ce genre de marqueur ressemble, pour un agent de réplication (comme le Log Reader Agent), à n’importe quel marqueur présent dans un journal de transactions.

Un tel jeton permet à SQL Server de mesurer les temps de latence aussi bien entre l’éditeur et le distributeur qu’entre le distributeur et chaque abonné. Il est possible d’insérer un jeton de suivi en pressant sur Insérer un suivi :


Il ne peut y avoir qu’autant d’insertions que d’abonnés.

La latence totale observée sur la figure ci-dessus correspond à la somme du temps de latence entre l’éditeur et le distributeur avec celui entre le distributeur et l’abonné. La date et l’heure d’insertion sont visibles tout en haut.

L’onglet Agents affiche les informations relatives aux agents de notre publication transactionnelle : le Snapshot Agent et le Log Reader Agent.


On y trouve notamment le statut en cours des agents, la date et heure de dernière exécution, la durée de la dernière exécution et la dernière action effectuée. Les informations sur les travaux du Distribution Agents ne sont pas présents ici, mais peuvent être retrouvables dans l’onglet Agents de l’ensemble des publications qu’on a pu voir un peu plus haut.

L’onglet Avertissements fournit les informations relatives aux alertes et avertissements de la réplication concernée :


Dans le cas de la réplication transactionnelle, les alertes par défaut sont généralement suffisantes :

  • Avertir si un abonnement expire avant le seuil défini : valeur par défaut à 80%.
  • Avertir si la latence dépasse le seuil : valeur par défaut à 30 secondes.

Mais toutefois, il est toujours possible de les modifier selon les besoins (exemple : la latence en minutes ou en heures, plutôt qu’en secondes).

L’accès au détail des informations sur les abonnés peut se faire en allant dans l’onglet Tous les abonnements, puis en faisant un clic-droit sur un des abonnés que l’on souhaite inspecter pour accéder à ses informations de monitoring détaillées :


Une fenêtre modale multi-onglets s’affichera :


On y peut lire le détail des dernières informations relatives aux actions de synchronisation, avec possibilité de les filtrer. Les informations en question concernent les onglets suivants :

  • Historique du serveur de publication vers le serveur de distribution (focus sur le Snapshot Agent et le Log Reader Agent).
  • Historique du serveur de distribution vers l’abonné (focus sur le Distribution Agent).
  • Commandes non-distribuées :


    Il s’agit du nombre de commandes non-distribuées et le temps restant estimé nécessaire pour les distribuer.

Exemple de monitoring de la réplication de fusion

En mettant en surbrillance la publication de fusion souhaitée (MaBase1_Merge, dans notre cas), située dans la liste des publications, à gauche du Replication Monitor, on obtient cet exemple d’aperçu :


L’onglet Agents conduit vers la liste des agents (le Snapshot Agent ici, les Merge Agents étant sur les abonnés du fait de l’utilisation du mode de récupération pull)
et leurs informations :


L’onglet Avertissements fournit les avertissements et alertes relatives à la réplication de fusion :


Il existe 3 types d’alertes préconfigurées par MSSQL : un pour l’expiration des abonnements (Avertir si un abonnement expire avant le seuil défini)
et 2 sur les performances (Avertir si la durée de la fusion… et Avertir si les lignes fusionnées par seconde…).

Les alertes préconfigurées par SQL Server et leurs valeurs par défaut sont suffisantes. Etant donné que par défaut, ces alertes sont désactivées, il faudra donc les activer comme sur la figure ci-dessus (il faudra cliquer sur le bouton Enregistrer les modifications pour les valider).

L’accès au détail des informations sur les abonnés peut se faire en allant dans l’onglet Tous les abonnements, puis en faisant un clic-droit sur un des abonnés que l’on souhaite inspecter pour accéder à ses informations de monitoring détaillées :


Une fenêtre modale mono-onglet s’affichera :


On y peut lire le détail des dernières informations relatives aux actions de synchronisation, avec possibilité de les filtrer.

Utilisation du Perfmon

Le Performance Monitor (Perfmon) de Windows peut être utilisé pour le monitoring de compteurs de réplication. Le tableau ci-dessous présente quelques-uns d’entre eux :

Compteur Description
  • Dist: Delivered Cmds/sec
Capture le nombre de commandes par secondes envoyées aux abonnés par le distributeur.
  • Dist: Delivered Trans/sec
Capture le nombre de transactions par secondes envoyées aux abonnés par le distributeur.
  • Dist: Delivery Latency
La quantité moyenne de temps que met une transaction pour être répliquée vers un abonné par le distributeur.

Utilisation des Dynamic Management Views (DMV)

Les DMV peuvent être utilisé pour auditer la réplication. Voici quelques exemples de requêtes utiles :

  • Récupération du plan d’exécution des procédures stockées utilisées par la réplication de fusion pour évaluer les mises-à-jour de l’éditeur et leur réplication vers les abonnés :
SELECT TOP 25
     st.text,
     qp.query_plan,
     (qs.total_logical_reads/qs.execution_count) as avg_logical_reads,
     (qs.total_logical_writes/qs.execution_count) as avg_logical_writes,
     (qs.total_physical_reads/qs.execution_count) as avg_phys_reads,qs.*
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE st.text like '%MSmerge%'
-- AND st.text like '%sp_mergemetadataretentioncleanup%'
-- AND st.text like '%sp_MSenumgenerations90%'
-- AND st.text like '%sp_MSmakegeneration%'
ORDER BY qs.total_logical_reads DESC
GO
  • Affichage des informations relatives à chaque article (retourne les données de la base de publication et retourne une ligne pour chaque objet publié dans chaque article) :
SELECT *
FROM sys.dm_repl_articles
GO
  • Affichage des informations relatives à chaque table et colonnes publiées (retourne les données de la base de publication et retourne une ligne pour chaque colonne publiée dans chaque objet) :
SELECT *
FROM sys.dm_repl_schemas
GO
  • Affichage des informations relatives à chaque transaction d’une réplication transactionnelle :
SELECT *
FROM sys. dm_repl_traninfo
GO

Utilisation des Performance Dashboard Reports

Il est possible de consulter un rapport de performance relatif à une publication. Pour cela, sous SSMS, dans l’explorateur d’objets allez dans Réplication>Publications locales, puis faites un clic-droit sur la publication souhaitée afin d’accéder à Rapports>Rapports standard. En guise d’illustration :


Soulignons toutefois que le rendu des rapports reste très basique. En voici un exemple :


Etat du snapshot, du Log Reader et de la synchronisation

Outre notamment via l’utilisation du Replication Monitor, vous pouvez directement consulter l’état des principaux agents de réplication à partir de l’explorateur d’objets de SSMS. Pour ce faire :

  • Concernant l’état d’un snapshot, sous Réplication>Publications locales, faites un clic-droit sur la publication ciblée, puis sélectionnez Afficher l’état de l’Agent d’instantané, dont voici un exemple de boîte modale qui s’ouvrira :


  • Concernant l’état de la synchronisation, sur le serveur de l’abonné, puis, au sein de Réplication, dépilez Abonnements locaux, puis faites un clic-droit sur l’abonné souhaité pour choisir Afficher l’état de la synchronisation, dont voici un exemple de boîte modale qui s’ouvrira :


    Remarquez que vous avez la possibilité d’arrêter/relancer le travail de synchronisation à partir de ladite boîte modale. Et par ailleurs, suivant la topologie de votre réplication (en push), vous pouvez également y accéder en allant, au sein du serveur de publication, sous Réplication>Publications locales, dépilez la publication souhaitée, puis faites un clic-droit sur l’abonné ciblé, puis sélectionnez Afficher l’état de la synchronisation.

  • Concernant l’état du Log Reader Agent, allez dans Réplication>Publications locales, puis faites un clic-droit sur la publication transactionnelle souhaitée afin de sélectionner Afficher l’état de l’Agent de lecture du journal dont voici un exemple de boîte modale :


Laisser un commentaire