Select Supported Platforms

Select Supported Architectures

Select Tier

Github Name


README
Asset Definition
Release Notes
Release Assets

Sensu Go Hello World Asset

This asset is the "Hello World" of Sensu Go assets. It's designed to give you an idea of how assets are packaged up and used with Sensu Go.

If you haven't already, you should read the Sensu Go Asset Reference documentation. This will go over all the material you'll need to know to understand assets from a theoretical perspective.

Assuming you've read that document, we can now start discussing this project.

Starting out

So you've got a bash script that you need to run. In our case, we REALLY need to run a script that outputs "Hello World." It looks like this:

#!/bin/sh

STRING="Hello World"

echo $STRING

if [ $? -eq 0 ]; then
    exit 0
else
    exit 2
fi

Sure, it's basic. But it does what we need it to do. So how do we make it a reusable asset for Sensu Go? First we need to put it in the right spot.

According to the reference document, there are three potential directories where our script could live in our project: /bin, /lib, or /include. For this case, we'll just use /bin and put our script there:

.
├── README.md
└── bin
    └── hello-world.sh

Let's make sure that it's marked as executable:

$ chmod +x hello-world.sh 
mode of 'hello-world.sh' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)

Ok, this is a great start. We've got our script in the /bin dir, it's executable...what next?

Packaging the asset

Assets are tarballs, pure and simple. So how can we tar up our asset? First, let's tar up our directory. This assumes you're in the directory you want to tar up:

$ cd ..
$ tar -C sensu-go-hello-world -cvzf sensu-go-hello-world-0.0.1.tar.gz .
...

Excellent. We've got an archive.

Now, let's generate a SHA512 sum for it (this is required, else the asset won't work)

sha512sum sensu-go-hello-world-0.0.1.tar.gz | tee sha512sum.txt
dbfd4a714c0c51c57f77daeb62f4a21141665ae71440951399be2d899bf44b3634dad2e6f2516fff1ef4b154c198b9c7cdfe1e8867788c820db7bb5bcad83827 sensu-go-hello-world-0.0.1.tar.gz

Awesome. Now we have our sha512sum. The last part of this portion of our exercise is getting the archive and the sha512sum somewhere where it can be hosted. You can do this with S3, a Github release, or even just serving the files out of a directory using Nginx/Apache.

In this case, we're going to use Github to serve our release. So let's go ahead and create a release.

Create a new github release

Once you've clicked on "Create a new release," you should see a screen that looks like this:

Release details screen

So you can see that there will need to be some details filled out. We'll also need to drag and drop our asset and checksum to the screen so they will be uploaded as part of the release. If you've done all of that, you should see something like this:

Release details filled in

Once you've done that, you can hit "Publish release" and you should have a release listed that looks like so:

Completed release

Alright. Now, time to create some definitions!

Generating the definitions

So far, we've created a directory for our asset with our script present in /bin, we've packaged up the asset and generated a checksum for it, we've got it hosted at Github, now it's time to generate some definitions for it to see it work. So let's start with our asset definition:

---
type: Asset
api_version: core/v2
metadata:
  name: sensu-go-hello-world
  namespace: default
spec:
  url: https://github.com/yourusername/sensu-go-hello-world/releases/download/0.0.1/sensu-go-hello-world-0.0.1.tar.gz
  sha512: dbfd4a714c0c51c57f77daeb62f4a21141665ae71440951399be2d899bf44b3634dad2e6f2516fff1ef4b154c198b9c7cdfe1e8867788c820db7bb5bcad83827

Now, let's create a basic check that uses the asset:

type: CheckConfig
api_version: core/v2
metadata:
  name: sensu-go-hello-world
  namespace: default
spec:
  command: hello-world.sh
  runtime_assets:
  - sensu-go-hello-world-asset
  interval: 10
  publish: true
  handlers:
    - debug
  subscriptions:
  - linux

We'll apply both of those definitions to our Sensu Go deployment:

sensuctl create -f sensu-go-hello-world-asset.yml
sensuctl create -f sensu-go-hello-world-check.yml

Now, let's take a look in the dashboard to see our check using our asset. In my case, I have an entity named sensu-agent-01, and I can see that the check successfully executes:

Sensu go agent successfully executes check with hello world asset

There you have it! You've successfully created an asset from a script, uploaded that to Github as a release, and have created your own definitions that make use of that asset. Congratulations! 🎉🎉🎉🎉

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

Download

×

Either download the source code:

Download Source

Or download the asset definition: