diff --git a/doc/source/admin/special_topics/grafana.png b/doc/source/admin/special_topics/grafana.png new file mode 100644 index 00000000000..19259aaf049 Binary files /dev/null and b/doc/source/admin/special_topics/grafana.png differ diff --git a/doc/source/admin/special_topics/index.rst b/doc/source/admin/special_topics/index.rst index 2c3f22a971d..b3cf8f7aa9a 100644 --- a/doc/source/admin/special_topics/index.rst +++ b/doc/source/admin/special_topics/index.rst @@ -9,4 +9,5 @@ Special Topics mulled_containers grt chat - webhooks \ No newline at end of file + webhooks + performance_tracking diff --git a/doc/source/admin/special_topics/performance_tracking.rst b/doc/source/admin/special_topics/performance_tracking.rst new file mode 100644 index 00000000000..51150b8724a --- /dev/null +++ b/doc/source/admin/special_topics/performance_tracking.rst @@ -0,0 +1,52 @@ +Galaxy Performance Tracking +=========================== + +Tracking performance over time and identifying slow queries in your Galaxy can be an extremely important thing to do, especially for larger Galaxies. + +Most performance tracking requires sending metrics to a metrics collection server such as `Graphite `__ or `StatsD `__. This document assumes you have already deployed a metrics server. + +uWSGI +----- + +As you have certainly switched to uWSGI from the default paste server, there is some built-in uWSGI support for performance logging. You can send uWSGI's internal metrics to a carbon (Graphite) server by setting the carbon option in your galaxy.ini: + +.. code-block:: ini + + [uwsgi] + socket = ... + carbon = 127.0.0.1:2003 + +Or a StatsD server via: + +.. code-block:: ini + + [uwsgi] + socket = ... + statsd-push = 127.0.0.1:8125 + +The `official documentation `__ contains further information on uWSGI and stats servers. In the `uWSGI Stats Server ` documentation, you can see an example of the sort of information that you will be able to collect. + +API / Route Timing Statistics +----------------------------- + +Galaxy provides middleware to automatically log the amount of time controllers take to execute and to send that data to a stats server. Using the stats server of your choice, you can calculate the relevant statistics to ensure that your Galaxy server is performing as expected. + +The statsD configuration requires setting the following: + +.. code-block:: ini + + statsd_host=127.0.0.1 + statsd_port=8125 + statsd_prefix=galaxy + +And the graphite configuration is very similar: + +.. code-block:: ini + + graphite_host=127.0.0.1 + graphite_port=2003 + graphite_prefix=galaxy + +Most people visualize the statistics using something like `Grafana `__: + +.. image:: grafana.png