Select Supported Platforms

Select Supported Architectures

Select Tier

Github Name

Asset Definition
Release Notes
Release Assets

Sensu Go Ruby Runtime Assets

This project provides Sensu Go Assets containing portable Ruby
runtimes (for various platforms), based on the excellent ruby-install project
by postmodern
. In practice, this Ruby runtime asset should allow
Ruby-based scripts (e.g. Sensu Community plugins) to be
packaged as separate assets containing Ruby scripts and any corresponding gem
dependencies. In this way, a single shared Ruby runtime may be delivered to
systems running the new Sensu Go Agent via the new Sensu's new Asset framework
(i.e. avoiding solutions that would require a Ruby runtime to be redundantly
packaged with every ruby-based plugin).

This same project may be used to build Sensu Assets for Ruby-based plugins via
bundler or other similar tools. We'll share more information on
building Ruby-based assets with third-party gem depdencies using Bundler soon;
in the interim, please review the instructions below for more information on
how to get started with this project.


Please note the following instructions:

  1. Use a Docker container to install ruby-install, build a Ruby, and generate
    a local_build Sensu Go Asset.

    $ docker build --build-arg "RUBY_VERSION=2.4.4" -t sensu-ruby-runtime:2.4.4-alpine -f Dockerfile.alpine .
    $ docker build --build-arg "RUBY_VERSION=2.4.4" -t sensu-ruby-runtime:2.4.4-debian -f Dockerfile.debian .
  2. Extract your new sensu-ruby asset, and get the SHA-512 hash for your
    Sensu asset!

    $ mkdir assets
    $ docker run -v "$PWD/assets:/assets" sensu-ruby-runtime:2.4.4-debian cp /assets/sensu-ruby-runtime_2.4.4_debian_linux_amd64.tar.gz /assets/
    $ shasum -a 512 assets/sensu-ruby-runtime_2.4.4_debian_linux_amd64.tar.gz
  3. Put that asset somewhere that your Sensu agent can fetch it. Perhaps add it to the Bonsai asset index!

  4. Create an asset resource in Sensu Go.

    First, create a configuration file called sensu-ruby-runtime-2.4.4-debian.json with
    the following contents:

      "type": "Asset",
      "api_version": "core/v2",
      "metadata": {
        "name": "sensu-ruby-runtime-2.4.4-debian",
        "namespace": "default",
        "labels": {},
        "annotations": {}
      "spec": {
        "url": "http://your-asset-server-here/assets/sensu-ruby-runtime-2.4.4-debian.tar.gz",
        "sha512": "4f926bf4328fbad2b9cac873d117f771914f4b837c9c85584c38ccf55a3ef3c2e8d154812246e5dda4a87450576b2c58ad9ab40c9e2edc31b288d066b195b21b",
        "filters": [
          "entity.system.os == 'linux'",
          "entity.system.arch == 'amd64'",
          "entity.system.platform == 'debian'"

    Then create the asset via:

    $ sensuctl create -f sensu-ruby-runtime-2.4.4-debian.json
  5. Create a second asset containing a Ruby script.

    To run a simple test using the Ruby runtime asset, create another asset
    called helloworld-v0.1.tar.gz with a simple ruby script at
    bin/helloworld.rb; e.g.:

    #!/usr/bin/env ruby
    require "date"
    puts "Hello world! The time is now #{}"

    NOTE: this is a simple "hello world" example, but it shows that we have
    support for basic stlib gems!

    Compress this file into a g-zipped tarball and register this asset with
    Sensu, and then you're all ready to run some tests!

  6. Create a check resource in Sensu 2.0.

    First, create a configuration file called helloworld.json with
    the following contents:

      "type": "CheckConfig",
      "api_version": "core/v2",
      "metadata": {
        "name": "helloworld",
        "namespace": "default",
        "labels": {},
        "annotations": {}
      "spec": {
        "command": "helloworld.rb",
        "runtime_assets": ["sensu-ruby-runtime-2.4.4-debian", "helloworld-v0.1"],
        "publish": true,
        "interval": 10,
        "subscriptions": ["docker"]

    Then create the asset via:

    $ sensuctl create -f helloworld.json

    At this point, the sensu-backend should begin publishing your check
    request. Any sensu-agent member of the "docker" subscription should
    receive the request, fetch the Ruby runtime and helloworld assets,
    unpack them, and successfully execute the helloworld.rb command by
    resolving the Ruby shebang (#!/usr/bin/env ruby) to the Ruby runtime
    on the Sensu agent $PATH.:wq

Are you sure you want to report this asset?

Please describe the reason for reporting this asset. Our moderators will be notified and will disable the asset if it is found to be inappropriate.


You must be signed in to report this asset.

Sign In with Github



Either download the source code:

Download Source

Or download the asset definition: