Skip to content

Engine Performance Monitoring

The combination of Butler SOS and Grafana provides a powerful combo for monitoring the performance of your Qlik Sense engines.

Here are some recipes for how to set up Butler SOS to implement various specific monitoring scenarios.

Available Tutorials

Track App Open Times

Monitor how long it takes to open apps on your Qlik Sense server. This is useful for:

  • Establishing a baseline for normal app opening times
  • Identifying apps that are slow to open
  • Setting up alerts when app opening times exceed thresholds
  • Verifying user complaints about slow performance

Learn how to track app open times →

Find Slow Updating Charts

Identify which app objects (charts, tables, etc.) are slow to update. This is useful for:

  • Identifying misbehaving charts in important apps
  • Establishing baselines for object update times
  • Setting up alerts for slow-updating objects
  • Troubleshooting end user performance complaints

Learn how to find slow updating charts →

Prerequisites

All engine performance monitoring tutorials require:

  • Butler SOS 11.0 or later
  • InfluxDB v1 or v2 database for storing metrics
  • XML appender files deployed on Sense servers
  • Grafana for visualization
  • Data connections configured between Grafana and InfluxDB

A Word of Caution

Data volume

Enabling detailed performance monitoring can generate a lot of data, especially if enabled for many apps.

This can lead to:

  • Large amounts of data stored in InfluxDB
  • Performance issues in InfluxDB and Grafana

It is therefore recommended to:

  • Only enable detailed monitoring for a limited number of apps
  • Consider enabling monitoring only for limited time periods
  • Start by monitoring all objects, then narrow down to specific ones of interest
  • Limit monitoring to certain object types (e.g., charts and tables only)

Configuration Overview

Engine performance monitoring uses the enginePerformanceMonitor section in the Butler SOS config file:

yaml
logEvents:
  enginePerformanceMonitor:
    enable: true
    appNameLookup:
      enable: true
    trackRejectedEvents:
      enable: true
    monitorFilter:
      allApps:
        enable: false # Monitor all apps, or...
      appSpecific:
        enable: true # ...monitor specific apps only
        app:
          - include:
              - appName: "Your App Name"
            objectType:
              allObjectTypes: true
            appObject:
              allAppObjects: true
            method:
              allMethods: true

Released under the MIT License.