Citrix XenDesktop Monitoring – Free Community Project

Citrix XenDesktop Monitoring – Free Community Project

Citrix XenDesktop Monitoring – Free Community Project

This post has already been read 39933 times!

So, a long time ago I released a monitoring platform for Citrix XenApp 6.5 and have been using it where I work for some time.  The idea was to provide a high level view of your estate and give you the option to get on top of issues before they happen in your environment.

As Citrix moved onto XenDesktop and FMA this platform had to change – I wrote a new version of the software to cater for XenDesktop 7.x and released version 1 of that a while back.  Since then things have kind of exploded.

Here was my issue

“Whilst I love to write code and give something back to the Citrix Community it was becoming tough to keep up with my family, my job, my community commitments and this project”

I thought about this for a while and decided to open the project up to some of the people who had helped out with code in the past and try to move this on to something that the wider community could use and enhance.

The idea has always been the same and we kind of have a group mission statement now

“Provide an agent less high level overview of your EUC Platform and take out the need for those daily checks you run to ensure things are running ‘properly’ “

This has driven how we decided to develop the platform and also keeps it simple.  I have always said before that we are not out to compete with ControlUp or others similar we are simply just trying to compliment what they offer.

How did I achieve offering this to the community to help enhance?  Really with 2 things:

  • Slack (Communication between the team)
  • GitHub (Source Control and Code Sharing)

Slack I was ok with as I use it loads through the Citrix CTP and Nutanix NTC Program however GitHub was new to me.  I copied the code up there and we got started (Thanks to Ryan and Aaron Parker for schooling us all on GitHub here).  Now – at this point I would like to mention some of the people who have had a big involvement in this project and getting it to where it is today.

Without the help of these community legends this would not be anywhere close to where it is today.  They have helped with GitHub, the design, code, teaching each other how to be better coders (Thanks Ryan and Adam!) and generally just been nice blokes.

So, onto the meat of it.  VERSION 2.

We decided to rewrite the way it worked.  This meant migrating all the code into a version 2 branch and getting it working in there.  Some of the reasons for this were to make it more portable, to allow 4 versions of the output (more on this later) and to allow people to use the output to create their own graphs and dashboards.

What Does It Look Like?

The HTML Rendered Dashboard

The Grafana Dashboard (One of them)

How Do You Get It?

Thats the easy part.  you have 2 options here:

  • GitHub
  • Microsoft PSGallery


Just head over to and from there you can find all the code and instructions on how to install it. Simple eh!

PS Gallery

Also listed on the GitHub pages but if you prefer you can just open PowerShell as an Administrator and type in the following:

install-module EUCMonitoring

Thats it! You will then have the scripts ready to run in your environment.

There is a README.MD file on the GitHub page that will give you all the instructions on how to configure it for your environment.  I have to say – it is really simple and fast to get up and running.

How Can You Help?

Have some scripts you run and want to include them?

Can think of a better way to do something?

Just want to get involved in the awesome Citrix Community?

If you want to get involved you can either fork the GitHub Project, join the Slack Channel.  If you want an invite then just drop me an email and I will get you an invite over.

A Special Thanks

Have to call out Adam for all the effort he has put in on this.

This by no means retracts from what all the others have done as they have also contributed LOADS but Adam has been a trojan on this beta.

He is like a code junky and once he makes a promise (even a drunk one at Synergy) he certainly delivers on it.  Here is his take on it all.

I found out about the project through google searches and social media.  I was looking for something to round out the monitoring scripts scripts I wrote by leaning on some of the community examples.  In fact, I’m fairly sure I just googled “Citrix monitoring free” and a page on your blog was the fourth on the front page.  I believe Stalhood retweeted it, and I had just opened a twitter account after years of avoiding it.

I couldn’t get it to work.  We emailed back and forth, and you helped me get it up and running.

I think I had figured out how to run some of the environment checks for things like catalogs, delivery groups, and use them in my own scripts, so I emailed them to you in case you found them useful.  More back and forth and in two days I’m invited into the Slack channel.

You soon decided to host it on github instead of the private download links via email, and make it more community driven, which I thought was great.  I’ve been wanting to contribute back and make something useful, as a way to backdoor into a community of the guys who’s blogs I read when I get stuck.  I was encouraged to blog / tweet / participate as well, as it would both get my name out there as well as help others.  I still need to get over that hurdle.

A few months later, Synergy cemented it for me.  We all talked in the EUCMonitoring Slack, met up in Anaheim, and I was instantly brought in.  I’d get tips on how to spot / avoid the marketing sessions, get pointed to ones that were going to be good even if the title didn’t immediately grab me, etc.  Hung out with Kindon, Wilky, Gareth, George, Ryan B, Ryan R, Hal, Kev and you for a bit (Editors Note: My Bad – was a very busy Synergy for me this year – More beers next time!).  All people I hadn’t met before the joining the project.  Great times, each and every one of them is super smart.   

We were able to brainstorm about what it could look like, what was similar and different between the infrastructure checks you previously had in place, and bounce ideas off each other.  Everyone basically wanted the same thing, agent-less and high level overview.  After a few cocktails, it was settled and the (very rough) new beta was gonna be on the way after heading back home.

We needed a way that we could easily add new systems, as well as work with the output.  The new object model allowed us to take a common output and transform it in new ways.  We now have the standard flat webpage, a console view, send to influx, and plans for chat integration. 

I think it’s gonna be great when the community plays with it more and shows us where they want to see things going.  I mean, that’s how I got involved in this….

Some More Screen Shots

Here are some more screenshots of the various Dashboards that you can use as part of this.

The static HTML dashboard.  You don’t need any internet connectivity to use this as the donuts are rendered with HTML only.  It will update every time you run the script and display the infrastructure components along the top (as many as you select), the worker status in the middle and the current stats and errors over on the right hand side.

This is the Grafana landing page.  It will give you the easiest information to digest.  Top Left is Sessions, along with a license limit to compare to if you’ve selected those tests.  Right is a very simple machine view.  Note that its multi-site and multi-zone.  Then some netscaler stats, followed by StopLights for the common series.  We may add more to any of these as we choose, and the user can as well as they define their own series to test

.Notice how you can hover over one of the dots and get which target is giving you that value?

Here’s the new session details.  It has a little more information and graphs, but again, we’re not really trying to be ControlUp or anything.  Still, might be useful for historical reasons later down the line.

Thats it for now – hope you enjoy version 2.  Go grab it now!

11 thoughts on “Citrix XenDesktop Monitoring – Free Community Project

  1. Hussain Saifee

    Really a good initiative as tool being used here is freeware and anybody can use it or modify it further according to their requirement
    Citrix really needs a good monitoring and troubleshooting tool as “Netscaler Insight” and “Director” are not the good ones. Specially when looking for historical data for analysis or RCA
    Currently, I have started using Splunk and Uberagent which is very good but comes with a price. But you get support for that price paid
    If there is a community working on such project and make this as a product, it will be really a good new product

  2. Frank Recker

    Hi Guys,
    1. Thanks for the good job. Works fine in a bigger environement!
    2. If you try to implement VMware there is many grafana stuff already there:
    3. What is the controlup section in the json file plan for the future?
    4. I use the monitoring section as a subfolder in iis like the director.
    BUT: How to update permanently the index.html output in iis?
    I tried a Scheduled task as a batch witch the following:
    powershell.exe -command “& {Start-EUCMonitor -Jsonfile “c:\monitoring\euc-monitoring.json”}”
    That works end creates all txt files in the Monitoring folder. But could no update/create a new index.html file….
    Any idea how to update these file each our?


  3. Dwayne Dunivan

    Can you please explain what Total User Base is. I have 4492/92. Also, how do I translate the licensing I show License MPS twice with two different set of numbers. I understand the rest but any insight will be helpful. Example Broker Machine Maintenance Mode I have 505 total servers with 4 in maintenance mode. 505/4. Thank you in advance and great job on this!

  4. Dwayne Dunivan

    Howdy, great job on this! I am testing this to put this in production. Why is there two license reports? I see the second is correct but the first seems way off. I am seeing License MPS 14363/2. The other is correct. Also, can you clarify what Total User base is? It is always a low number. I am able to understand the rest but those are the only two I am not fully understanding.

    Thank you for this!

  5. Marc

    Excellent Tool!

    When I set influx to “true” I receive this:

    Der Wert “1,5644087349928E+22” kann nicht in den Typ “System.Int64” konvertiert werden. Fehler: “Die arithmetische
    Operation hat einen Überlauf verursacht.”
    In C:\Program Files\WindowsPowerShell\Modules\EUCMonitoring\2.0.1\Private\Get-InfluxTimestamp.ps1:33 Zeichen:12
    + return [int64]$nano
    + ~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvalidCastIConvertible

    In Grafana I have “no data available”. I guess it depends with this runtime-exception


  6. Devante Vargas

    This is fantastic. I used to build my own grafana dashboards but this one is so much cleaner coding wise and well done. I do have one question though in the XdControllers the state is returning as a value of 2. Could you explains the values for this as I am little confused. I thought the only values returned would be 0 and 1, 0 being down and 1 being up. Any insight would be greatly appreciated.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.