Changer le fuseau horaire dans Zabbix

Voici l’exemple type du billet memo/post it, on vous prévient à l’avance.

Sur un Zabbix 2.4 installé sur une Debian 7.7 (weezy) nous avions un problème de fuseau horaire (time zone), en effet toutes les données remontées dans zabbix avaient une heure d’avance par rapport au fuseau horaire du serveur zabbix. En regardant dans notre Debian l’heure était bien la bonne (avec le bon fuseau horaire), direction donc le php.ini (/etc/php5/apache2/) que nous modifions afin de mettre le fuseau horaire “Europe/Paris” accompagné d’un restart d’apache2.

Après cette modification le problème de fuseau horaire était toujours présent, afin de retrouver le fuseau horaire utilisé dans zabbix nous avons simulé une ré-installation de zabbix sur notre serveur zabbix via l’onglet Administration-Installation.

Zabbix_Timezone1On constate que la partie PHP time zone est sur Europe/Riga

 

En regardant de plus près Zabbix gère son fuseau horaire directement via le fichier apache.conf situé dans /etc/zabbix/apache.conf.

 

Zabbix_Timezone2Effectivement nous ne sommes pas dans le bon fuseau horaire

 

 

Zabbix_Timezone3Une fois le date.timezone renseigné correctement notre zabbix affichait bien la bonne heure

 

Post to Twitter

Problème d’incrementation de Session ID

Récemment on nous a remonté un problème d’incrémentation de Session Id au sein d’une ferme XenApp 6.5 R04 Us. L’effet de bord de ce problème d’incrémentation de Session Id était que les ID de session fermés (ces sessions n’étaient plus présentes sur les serveurs et aucun process n’était visible via un procmon ou autre) n’étaient jamais recyclés ce qui engendrait des Session ID avec des valeurs excessives.

SessionId_CountOn constate bien dans l’App Center des Sessions Id élevés au vu du nombre de CCU sur ce silo 🙂

En lançant un process explorer nous avons constaté que seule les process des utilisateurs en cour étaient visibles (avec ceux du system) par contre en passant par un RamMap on constate des process csrss.exe “zombies” avec des Sessions ID associés (ce qui explique pourquoi les nouvelles sessions ne reprenaient pas d’ancien Session Id).

SessionId_Count1Il ne reste plus qu’a trouver la cause 😉

 En googlelant nous sommes rapidement tombés sur la  KB75462 de chez McAfee décrivant exactement notre problématique.

Problem

CSRSS.exe sessions have open session objects even after the active user session is closed.
The session ID is not recycled when one user logs out and another person logs in. This can cause performance issues over time.
This issue is seen only on Windows Server 2008 with Service Pack 1.

Cause

McAfee has determined that this issue is a result of Microsoft Registry Filtering API not freeing 80 bytes of ObjectContexts. These 80 bytes include references to operating system resources (a process object that inherits a session object). The open session constitutes a resource leak that has a disproportionate impact on the operating system. If user sessions are spawned and terminated in excess, it causes in an equally large number of sessions that are not closed. This number increases until it impacts the operating system.As part of its Access Protection feature, VSE 8.8 must use the Registry Filtering API to protect the registry. When the Access Protection feature is enabled, bad behavior is exposed in Microsoft Registry Filtering API.

La  KB75462 préconise la mise à jour du VSE en 8.8 patch 4, le passage du  VSE en 8.8 patch 4 a bien corrigé le problème dans notre cas.

Post to Twitter

XenApp_Usr : mise à jour 1.3

Dans cette mise à jour, nous avons corrigé quelques bugs mineurs et rajouté les fonctionnalités ci-dessous :

  • Une section “Gpo Applied” qui affiche toutes les Gpos appliquées (avec les Gpos bloquées) sur l’utilisateur et le serveur hébergeant la session (avec un compteur total du nombre de Gpos appliquées)
  • Possibilité d’exporter la Gpo sélectionnée au format HTML (il faut comme pré-requis que le  Module GroupPolicy soit installé sur même le serveur que XenApp_Usr)
  • Possibilité d’exporter toutes informations de la session courante dans un fichier texte

 

XenApp_usr1_3
Nos collègues ont bien apprécié la partie Gpos applied 😉

Pour télécharger XenaApp_Usr c’est par ici

Post to Twitter

Erreur HTTP : Error 503 sur Web Interface

Suite à une mise à jour sur nos Web Interface (5.4 us /2008 R2 us) de prod (suppression de sites XenApp Web) nous avons rencontré sur deux Web Interface une erreur HTTP 503 (Service Unavailable).


Http503_1

 

Vu que seuls les sites XenApp Web étaient impactés (IIS était ok, la création d’un site et son accès répondait bien), nous avons regardé du coté de IIS, et en cliquant sur l’application Pools (bien sur nous ne sommes pas tombés directement dessus 😉 ), nous avons constaté que “CitrixWebInterface5.4.0AppPool” était arrêté.

 

Http503_2C’est sûr que ça risquait de marcher la

 

Une fois l’application pool “CitrixWebInterface5.4.0AppPool” démarrée, l’erreur HTTP 503  n’apparaissait plus.

Afin de checker les sites XenApp Web de nos différentes Web Interface, nous avons mis en place un script PowerShell permettant de vérifier si les différentes url répondent bien.  Dans un second temps  en parcourant l’outil de supervision (Zabbix) de notre client actuel,  nous avons remarqué que le check d’URL est possible via un scénario web qui lui même va checker les différentes url de nos sites Web Interface (avec un trigger afin de générer une alerte dans Zabbix).

 

Zabbix_WebuiDans notre cas nous avons créé le scénario web dans un template que nous appliquons à nos Web Interface

 

Zabbix01
Une fois l’étape du scénario créée le check d’url est réalisé

 

Zabbix_Webui_XenApp_triggerLe trigger que nous avons associé à notre scénario Web, si le dernier check est différent de 0 (check ok) alors une alerte avec un statut haut remontera dans Zabbix

 

Http503_3
Le résultat de la supervision Web dans Zabbix

 

Concernant le script Powershell, il faut au préalable :

  1. Modifier en ligne 2 du script les Web Interface à checker
  2. Modifier l’url à checker en ligne 7 du script

 

WebiCheckPour la partie PowerShell, si vous avez pas d’outil de surpervision ou autres solution alors à l’ancienne une tache planifiée (en dernier recours)

 

Download_2
Check_Url_Webi.ps1

Post to Twitter

Mise à jour de XenApp_Check (XenApp 6.x) : 2.6

XenApp_Check pour XA 6 passe en 2.6, dans cette mise à jour nous avons modifié le check du nombre de serveur(s) publié(s) au sein d’une application afin que ce dernier prenne en compte les Groupes de tâches (Worker Groups).

Toutes les applications n’ayant qu’un seul serveur de publié en direct ou via les Worker Groups seront regroupées dans la section (section « Server in Application(s)).

 

XenAppcheck_26Plus d’excuse pour les publications via les Worker Groups .

Le billet concernant XenApp_Check est ici .

XenApp_CheckXA6 2.6 (XenApp 6.x)

XenApp_CheckXA6.rar

Post to Twitter

XenApp_Usr

————————————————————————————————————
MAJ : 23/03/2015
V1.4

  • Rajout du refresh des sessions lors d’un logoff
  • La progressBar change de couleur en fonction de la charge du serveur hébergeant la session (vert de 0 à 5999, orange de 6000 à 8499 et rouge à partir de 8500)
  • Le champ username accepte la validation via la touche Entrée (Enter)
  • Refresh des process lorsqu’un process est tué via le bouton Stop
  • Correction de divers bug mineurs

————————————————————————————————————

MAJ : 22/12/2014
V1.3

  • Correction de bugs mineurs
  • Ajout de la section “Gpo Applied”
  • Possibilité d’exporter la Gpo sélectionnée au format HTML (il faut comme pré-requis que le  Module GroupPolicy soit installé sur même le serveur que XenApp_Usr)
  • Possibilité d’exporter toutes informations de la session courante dans un fichier texte

————————————————————————————————————

C’est quoi XenApp_Usr  ? 🙂

C’est un script PowerShell que nous avons mis en place et qui permet via une GUI de retrouver la ou les session(s) d’un utilisateur au sein d’une ferme XenApp.

Un fois la ou les sessions retrouvée(s), il suffit de sélectionner une session afin que les informations ci-dessous s’affichent dans la GUI :

  • Nom et version de la ferme XenApp
  • Application publiée
  • Serveur sur lequel la session est connectée
  • Etat de la session
  • Version du client ICA
  • Type de client
  • Nom du client
  •  IP du client
  • Date et heure de la connexion
  • Imprimantes de la session
  • Processus  lancés dans la session
  • Afficher la bande passante de la session ICA
  • Afficher la latence de la session ICA

A cela nous avons ajouté la possibilité d’effectuer les actions ci-dessous :

  • Fermer la session
  • Lancer un remote assistance sur la session
  • Stopper un process de la session

 

XenApp_UsrV1 Ok la GUI fait un peu année 90 🙂

 

XenApp_Usr a été validé sur des fermes XenApp 6.5 R01, R03 et R04 (us et fr), la consommation mémoire est d’environ 60 Mo ( 🙁 faudra qu’on regarde pour diminuer ça).

Vos remarques et suggestions sont les bienvenues (au passage nous avons volontairement éviter les Splash Screen et Progress Bar).

Pour l’instant (et vu que le code n’est pas encore présentable) on ne livre que le ps1 compilé en binaire, la version ps1 arrive asap .

Au passage la GUI a été réalisée avec Powershell Studio de Sapien.

 

Download_2XenApp_Usr.rar

 

———————————————————
MAJ : 24/11/2014
V1.1
Correction de bugs mineurs
Ajout de la charge serveur (Load server)
———————————————————

Post to Twitter

Problème de reconnexion sur une application limitée à une instance

Au sein d’une ferme XenApp 6.5 R03 US, nous avions des utilisateurs qui ne pouvaient plus se connecter sur une application limitée à une instance par utilisateur.

 

Reco01

 

En regardant les sessions des utilisateurs rencontrant ce type de problème nous avons constaté que les sessions étaient actives, en effet les sessions déconnectées passaient en active après un délai de 30 mn, les 30 mn correspondant à la “fin d’une session déconnectée” dans une GPO du silo applicatif.

Dans notre cas les sessions n’étaient pas fermées mais repassaient en active du fait que le process “splwow64.exe” (permet l’impression à partir d’application 32 bits sur des pilotes 64 bits) ne se fermait pas correctement (merci procmon, mais on aurait pu faire plus simple via un gestionnaire de tâche 🙂 ).

Un google plus loin nous tombons sur la CTX138940 qui dans le point 11 indique que dans pareil cas il faut créer (sauf si vous jouez avec la persistance de session) la clé de registre (REG_DWORD) “AllowLogoffSysModules” et lui donnez la valeur 1.

 

Reco02

Post to Twitter

Simuler une latence dans une session ICA

Pour visualiser une latence dans une session ICA on a EdgeSight et pour les plus pauvres d’entre nous perfmon (et aussi HDX Monitor)  avec les compteurs “Latence – Dernière enregistrée”, “Latence – écart de session”, “Latence – moyenne de session”, mais que donnent les valeurs de latence remontées visuellement dans une application publiée  ?

Ctx_Latency_escarqui a dit que ça ramait ?

 

TMnetsim (ça fait deux ans qu’on s’en sert et on fait le billet seulement maintenant 🙁 ) permet de simuler une latence (en jouant le rôle de proxy) pour se connecter à une application publiée (par exemple), outre que TMnetsim est gratuit, il est portable et très simple d’utilisation.

 

  • Télécharger TMnetsim et déziper dans un dossier son contenu
  • Créer un fichier ica custom permettant de lancer une application publiée (avec Citrix Quick Launch par exemple)
  • Modifier le fichier ica afin de faire pointer la partie adresse sur le serveur hébergeant TMnetsim et ajouter un port TCP comme par exemple 1495

Ctx_Latency_IcaFile

  • Lancer TMnetsim.exe et renseigner le l’IP du serveur XenApp et les ports Inbound (dans notre cas 1495) et le port Outbound (1494), rentrez la latence que vous souhaitez dans le champ Delay Base (MS) puis cliquez sur le bouton Start (vous pouvez aussi choissir le type de Delay).

Ctx_Latency_TMnetsim

  • Double cliquez sur le fichier ICA précédemment crée et modifié

Ctx_Latency_TMnetsim01On constate bien que la connection ICA passe par TMnetsim

 Il ne vous reste plus qu’a constater par vous même les effets de la latence au sein de votre application publiée 😉 .

Quelques liens sur TMnetsim :

http://www.tmurgent.com/appv/index.php/87-tools/performance-tools/177-tmnetsim-quick-and-easy-network-simulation-tool
https://4sysops.com/archives/free-tmnetsim-network-simulator-simulate-network-latency-and-packet-loss/

Post to Twitter

Crash Online Plug-in 12.3

Il y a quelques jours nous avons rencontré un problème qui jusqu’à présent ne s’était jamais posé de cette façon, cinq utilisateurs rencontraient un crash WFICA32.exe lorsqu’ils lançaient une application publiée spécifique (les autres applications publiées se lançaient sans problème), lors du lancement de l’application en question un crash WFICA32.exe se produisait systématiquement avec un event 1002.

 

Nom du journal :Application
Source :       Application Hang
ID de l’événement :1002
Catégorie de la tâche :(101)
Niveau :       Erreur
Description :
Le programme WFICA32.exe version 12.3.0.8 a cessé d’interagir avec Windows et a été fermé. Pour déterminer si des informations supplémentaires sont disponibles, consultez l’historique du problème dans le Centre de maintenance.

 

Les postes clients étaient en Seven Sp1 fr (on ne sait pas si c’était du 64 ou 32 bits) avec un Online Plug-in 12.3.

Au détour de quelques questions on apprend que nos utilisateurs ont déménagé récemment et qu’ils impriment désormais sur une nouvelle imprimante, après un arrêt du spooler sur l’un des postes  la fameuse application se lançait. Nos collègues de poste de travail on dû changer le pilote afin que tout rentre dans l’ordre (par contre on n’a pas le nom du pilote qui causait problème 🙁  ).

 

CLUEDO
Une partie ? 🙂

 

 

Post to Twitter

Publication du Remote Assistance

Comme vous le savez, en XenApp 6.5 le shadowing sur des sessions multi-écran cause problème (voir CTX125693), l’utilisation de MSRA (Microsoft Remote Assistance) permet de palier cette problématique (la seule contrainte est de connaitre à l’avance le nom du serveur hébergeant la session que l’on souhaite observer, ce qui est peu pratique à l’usage).

Au départ on souhaitait mettre en place une GUI permettant de faire du MSRA sans avoir à chercher où se trouve la session de l’utilisateur, en googlelant nous sommes tombés sur l’excellent script de nos collègues de DEPTIVE qui avait déjà (depuis 2012) mis en place un PowerShell  permettant de rechercher un session ICA/RDP (le tout via une GUI) au sein d’une ferme et de lancer sur cette session un MSRA.

Nous avons juste rajouté/modifié les éléments ci-dessous afin qu’ils correspondent un peu plus à notre besoin :

  • Teste si le snapin Citrix est bien chargé
  • Si le champ username est vide le script n’affiche plus toutes les sessions ica/rdp ouvertes dans la ferme mais une erreur indiquant qu’il faut renseigner le champ username
  • Le bouton Connect est désactivé tant qu’une session n’est pas trouvée dans la ferme XenApp en cours
  • Ajout de la colonne application publiée (afin de bien cibler la session de l’utilisateur)
  • Ajout d’un compteur comptabilisant le nombre de sessions trouvées pour un utilisateur
  • Ajout du nom de la ferme en cours

 

MSRA_Script

 

MSRA_Script1Sur des grandes ferme avec what mille CCU on evite l’affichage de toutes les sessions de la ferme si on clique sur le bouton Search et que le champ username est vide

 

MSRA_Script2Rien de transcandant dans nos modifications mais c’est pratique 🙂

 

 

Si vous publiez le script sur un serveur avant l’agent EdgeSight installé alors n’oubliez pas d’exclure le process “msra.exe” dans l’agent EdgeSight  (voir CTX131271).

 

EdgeSightExcluRsaSi vous souhaitez le reg pour l’importation c’est juste en dessous

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\rskcore]

“UviProcessList”=”rotatelogs.exe;msra.exe”

 

Pour plus d’information sur le Remote Assistance (et pour l’activer) c’est par ici.

Au passage pour ajouter le Remote Assistance sur un serveur en PowerShell :

import-module servermanager;get-windowsfeature "Remote-Assistance"|?{$_.installed -eq $False}|%{Add-WindowsFeature "Remote-Assistance"} 

 

Quelques liens  sur la configuration de Remote Assistance  :

 

 

Download_2RemoteAssistance.ps1

Post to Twitter