Butler 15.0: Filling the gaps - monitor all task types in client-managed Qlik Sense

Butler 15.0 is a major release that extends monitoring and alerting to all task types in Qlik Sense Enterprise on Windows. Previously, only reload tasks were fully supported. This release adds comprehensive support for external program tasks, user sync tasks, distribute tasks, and preload tasks.

Butler 15.0: Filling the gaps - monitor all task types in client-managed Qlik Sense
Photo by Brett Jordan / Unsplash

What's New

If you're using Butler to monitor reload tasks in a Qlik Sense environment, this release means you can now get alerts and metrics for every scheduled task — not just reloads.

External program tasks, preload task, distribution tasks and user sync tasks - all supported with metrics stored in InfluxDB and email alerts where applicable!

All Sense task types can now be monitored by Butler

InfluxDB Support for All Task Types

The core addition in this release is InfluxDB integration for all five Qlik Sense task types:

Task Type Type Code InfluxDB Support
Reload 0 ✅ (existing)
External Program 1 new
User Sync 2 new
Distribute 3 new
Preload 4 new

Each task type now writes success and failure metrics to dedicated InfluxDB measurements. For example, external_program_task_success, distribute_task_failed, preload_task_success, and so on.

This means you can build Grafana dashboards that show the health of your entire task infrastructure—not just reloads.

Email Alerts for Distribute and Preload Tasks

Beyond metrics, Butler 15.0 adds email notifications for distribute and preload task failures and successes. This uses the same Handlebars templating system as reload task emails, giving you full control over formatting.

New email template files are included:

  • failed-distribute-qseow.handlebars
  • success-distribute-qseow.handlebars
  • failed-preload-qseow.handlebars
  • success-preload-qseow.handlebars

Configure them the same way you'd configure reload task emails—point Butler to your template directory and specify which template file to use for each event type.

Script Log Excerpts in Reload Success Emails

A smaller but useful addition: reload success emails can now include excerpts from the script log.
Previously, script log excerpts were only available for failed and aborted reloads.

Configure the number of lines to include:

Butler:
  emailNotification:
    reloadTaskSuccess:
      headScriptLogLines: 15 # Lines from start of script log
      tailScriptLogLines: 25 # Lines from end of script log

This is useful when you want to verify that expected data was loaded, or confirm row counts logged during the reload.

Breaking Changes

This is a major release with configuration changes. If you're upgrading from Butler 14.x, you'll need to update your config file.

InfluxDB Configuration

The InfluxDB section has been restructured to accommodate all task types. Instead of just reloadTaskFailure and reloadTaskSuccess, there are now separate sections for each task type:

Butler:
  influxDb:
    enable: true
    # ... connection settings ...

    reloadTaskFailure:
      enable: true
    reloadTaskSuccess:
      enable: true

    # New in 15.0.0
    externalProgramTaskSuccess:
      enable: false
    externalProgramTaskFailure:
      enable: false
    userSyncTaskSuccess:
      enable: false
    distributeTaskSuccess:
      enable: false
    distributeTaskFailure:
      enable: false
    preloadTaskSuccess:
      enable: false
    preloadTaskFailure:
      enable: false

The above shows the main changes, under each new section in the configuration file there are some additional properties. Check the production_template.yaml file that is included in the distribution ZIP for a complete config file, or the Butler documentation site.

Email Notification Configuration

Similarly, the email notification section has new subsections for distribute and preload tasks:

Butler:
  emailNotification:
    enable: true
    # ... existing reload task settings ...

    # New in 15.0.0
    distributeTaskSuccess:
      enable: false
      # ... template and recipient settings ...
    distributeTaskFailure:
      enable: false
    preloadTaskSuccess:
      enable: false
    preloadTaskFailure:
      enable: false

XML Log Appender Updates

If you use Butler's UDP-based task failure detection, you need to update your Qlik Sense log appender configuration. The LocalLogConfig.xml file on your Sense servers needs additional filters to detect preload task failures:

<appender name="TaskFailLogger" type="log4net.Appender.UdpAppender">
    <!-- Existing reload task filter -->
    <filter type="log4net.Filter.StringMatchFilter">
        <param name="stringToMatch" value="Max retries reached" />
    </filter>

    <!-- New: Preload task failure filters -->
    <filter type="log4net.Filter.StringMatchFilter">
        <param name="stringToMatch" value="Failed to start session" />
    </filter>
    <filter type="log4net.Filter.StringMatchFilter">
        <param name="stringToMatch" value="Could not reserve an executor for task" />
    </filter>

    <filter type="log4net.Filter.DenyAllFilter" />
    <!-- ... rest of appender config ... -->
</appender>

The complete updated LocalLogConfig.xml is included in the Butler release package.

Bug Fixes

Certificate Loading with --no-qs-connection

The --no-qs-connection command line option now correctly skips loading Qlik Sense API certificates. Previously, Butler would still attempt to load certificates even when running in isolated mode, causing errors if the certificate files didn't exist.

This fix is useful when running Butler in development environments or CI/CD pipelines without Qlik Sense connectivity.

Windows Service Monitoring Hostname Validation

Butler now validates hostnames for Windows service monitoring during startup. If a service host is misconfigured (e.g., invalid hostname format), you'll get a clear error message instead of cryptic failures at runtime.

Upgrade Process

  1. Back up your config file before making any changes.

  2. Add the new InfluxDB sections for external program, user sync, distribute, and preload tasks. Set them to enable: false initially if you don't need them yet.

  3. Add the new email notification sections for distribute and preload tasks if you want email alerts for these task types.

  4. Update your LocalLogConfig.xml on each Qlik Sense server if you use UDP-based task detection. Add the preload task failure filters shown above.

  5. Copy the new email templates (failed-distribute-qseow.handlebars, etc.) to your template directory if you plan to use them.

  6. Restart Butler and verify startup logs for any configuration errors.

The upgrade documentation has complete details and the full config file structure.

Resources


Butler is open source and free to use. If you find it useful, consider giving it a ⭐ on GitHub.