Giter Site home page Giter Site logo

sensu-go-workshop's Introduction

Sensu Go Workshop

Overview

The Sensu Go Workshop is a collection of learning resources designed to help new users learn Sensu. The project includes the following resources:

  1. Interactive lessons designed for self-guided learning
  2. Detailed instructions for Mac, Windows, and Linux workstations
  3. A local sandbox environment for use with the workshop (via Docker Compose or Vagrant)

Additional workshop materials are also available for advanced use cases, including instructor-led workshops with multi-tenant sandbox environment, and alternative sandbox environments based on popular Sensu reference architectures (e.g. Sensu w/ InfluxDB, TimescaleDB, Elasticsearch, and Prometheus).

NOTE: the Sensu Go Workshop is under active development, so check back often for new content and other improvements, including videos (coming Q2'22)!

Lessons

The Sensu Go Workshop aims to provide learning resources for every Sensu user, including:

  • Operators and other end-users who rely on Sensu for infrastructure and application monitoring.
  • Developers and other engineers who want to build integrations using Sensu APIs.

See below for the complete list of lesson plans.

Operator Workshop

Additional Lessons Coming Soon

Sensu Go Building Blocks 201

Sensu Go Administration 101

Sensu Go Patterns & Workflows

Developer Workshop

The Sensu Developer Workshop is coming soon! When it arrives it will cover the following topics:

  • Sensu Data Model
    • Endpoint specification (Entities)
    • Event data specification
    • Metrics specification
  • Sensu API overview
  • Sensu API authentication
  • Sensu configuration APIs (basic CRUD functions)
    • Auth (Authentication API, APIKeys API)
    • RBAC (Roles API, RoleBindings API, ClusterRoles API, ClusterRoleBindings API, Users API)
    • Namespaces API
    • Assets API
    • Checks API
    • Filters API
    • Handlers API
    • Secrets API
    • Prune API
  • Sensu observability APIs
    • Events API
    • Entities API
    • Silencing API
  • Sensu automation APIs
    • Execute API
    • Entity PATCH API
  • Sensu Agent APIs
    • Events HTTP API
    • Events TCP/UDP Socket
    • StatsD API
  • Sensu Plugins overview
  • Sensu Plugins SDK
  • Advanced Topics

Next Steps

We hope you enjoy this workshop and find it helpful for learning more about Sensu! At this point we have covered Sensu's most common concepts, which should give you a much better sense for how Sensu works – but we've barely scratched the surface. If you're interest in learning more, pleaes consider the following resources:

Join the Sensu Community

The primary home of the Sensu Community is the Sensu Community Forums. Sign up to get notified about upcoming events (e.g. webinars and virtual meetups), and new releases.

https://discourse.sensu.io/signup

Contribute to Sensu Community Projects on GitHub

The Sensu GitHub org is home to a number of open source projects that will help you get the most out of Sensu, including:

sensu-go-workshop's People

Contributors

calebhailey avatar iryna-iur avatar jspaleta avatar kayiwa avatar thoward avatar webframp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sensu-go-workshop's Issues

Update Lesson 8: reorganize into smaller units, interleave exercises w/ text

Currently the lesson is structured to have a lengthy section of informational text up-front, then a series of lessons at the end. Rather, interleave the instructional text and lessons, so that hands-on exercises happen immediately after covering the related information.

Outline should be:

  • Title: Lesson 8: Introduction to Checks
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents.
  • Overview
  • Check Scheduling & Subscriptions
  • Exercise 1: Configure a Check
  • Check Templates
  • Exercise 2: Modify Check Configuration Using Tokens
  • Metrics Collection and Extractions
  • Exercise 3: Extracting Metrics at the Edge
  • Metrics Tagging and Output Handlers
  • Exercise 4: Tagging and Handling Metrics Using Checks
  • Discussion: TTLs/deadman's switch, proxy checks, other considerations
  • Learn More: Links to more reading
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

NOTE: This is part of an effort to standardize the structure of all the lessons to look something like this (with the associated quantitative lexicographical limits):

Lesson Structure (500-1000 words):

  • Task Based Titles/Structure: “Creating a new Handler” (5-7 words)
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents. (50-100 words)
  • Exercises: One more more exercise (see Exercise Structure below)
  • Discussion: Move any edge cases, extra explanation, caveats, related features, advanced uses cases, etc to this section. (50-100 words)
  • Learn More: Links to more reading (3-7 links)
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

Exercise Structure:

  • Task: short description of the task (25-50 words)
  • Solution: short description of how we’ll solve the problem/complete the task (25-50 words)
  • Steps: Numbered steps 1-5, what to do. (50-100 words per step)

Sentences should be 5-7 words.
Paragraphs should be 2-5 sentences long (10-35 words).
Sections should be ~50-100 words long (10-20 sentences, or ~3-5 paragraphs).
Lessons should be 500-1000 words long (above structure is within those bounds)
Lessons should have 3-5 exercises
Exercises should have 3-5 steps
Exercises should be ~250 words long, using about 50 words per step.

Example: Lower end of range = 705 words.

  • Title: 5 words
  • Goals: 50 words
  • Exercise 1: Task: 25 words
  • Exercise 1: Solution: 25 words
  • Exercise 1: Step 1: 50 words
  • Exercise 1: Step 2: 50 words
  • Exercise 1: Step 3: 50 words
  • Exercise 2: Task: 25 words
  • Exercise 2: Solution: 25 words
  • Exercise 2: Step 1: 50 words
  • Exercise 2: Step 2: 50 words
  • Exercise 2: Step 3: 50 words
  • Exercise 3: Task: 25 words
  • Exercise 3: Solution: 25 words
  • Exercise 3: Step 1: 50 words
  • Exercise 3: Step 2: 50 words
  • Exercise 3: Step 3: 50 words
  • Discussion: 50 words
  • Learn More: 3 links (n/a word count)
  • Next Steps: feedback, previous, next (n/a word count)

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

  • Flesh-Kincaid Grade Level: 8-10
  • Flesch Reading Ease Score: 40-60
  • Average Words per Sentence: 4-7
  • Average Syllables per Word: 1-2
  • Sentences: 150-200
  • Words: 750-1000

sensu-agent not starting up using docker on linux

Suggested Improvement

the sensu-agent container definition is trying to use
the default ws://localhost:8081 for backend url

But this causes the sensu-agent container to fail to start up.

I need to add --backend-url "ws://sensu-backend:8081" to the sensu-agent start invocation defined in the docker-compose file to have it working again.

Remove "shell parameter expansion" from exercises?

Suggested Improvement

TL;DR: environment variables should look like ${SENSU_API_URL} not ${SENSU_API_URL:-http://127.0.0.1:8080}.

Many of the curl examples in the workshop use shell parameter expansion (e.g. "${SENSU_API_URL:-http://127.0.0.1:8080}), which effectively provide "fallback" or "default" values in the event that the referenced environment variable is not present. Since we we began working on the workshop we've more or less standardized on the use of an .envrc or .envrc.ps1 file to provide the required environment variables for all exercises. Perhaps we should use the simpler form of environment variables now?

Applicable Lessons

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Bug - Mattermost password in seed-workshop-resources

Feedback

As-is, the configurator process exits 0 but is silently failing to create a mattermost webhook.

mmctl auth login http://mattermost:8065 --name sensu-workshop --username sensu --password workshop > /dev/null 2>&1

Suggested Improvement

I'd suggest fixing the password, but also adding error handling to make sure that an api key is generated. Maybe something like this dc8e998

Lesson Progress

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Resolve SMB port conflicts

We've seen port conflicts with SMB container. If possible reconfigure to use a non-standard port to avoid this conflict.

Can't access chat UI

Feedback

There appears to be an in-progress migration from rocket chat to mattermost. The links still go to port 5000 in the documentation, although the chat service port has changed. If you do find the port and navigate to http://127.0.0.1:8065 the given login information does not work. It seems like maybe the logic to add the user to rocket chat was deleted but logic to add the user to mattermost was not added.

This means lessons 5 and 6, and likely lessons following, can't be completed because the effects of the exercises can't be observed.

Suggested Improvement

What branch or commit can I run the tutorial from in a known-working state?

Lesson Progress

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Switch to Mattermost for workshop alerts & chat

See: https://mattermost.com

Pros/Cons:

  • Mattermost appears to offer a lighter-weight Docker deployment (requires only a single container)

    Example: a local machine setup is as simple as:

    docker run --name mattermost-preview -d --publish 8065:8065 --add-host dockerhost:127.0.0.1 mattermost/mattermost-preview
    
  • Mattermost optionally supports Postgres as a database backend (so we can reuse/extend the existing postgres database and automation in docker-compose-cluster.yaml)

  • Mattermost offers a first-class solution for seeding the environment (e.g. configuring teams, channels, users, etc), which would enable us to simplify the workshop chat automation

  • There is currently no supported Sensu handler for Mattermost, although the Mattermost API appears to be very well documented, so development of a new handler should be relatively straightforward

Update Lesson 9 to new format.

Outline

  • Title: Introduction to Check Hooks
  • Goals
    Learn how to collect additional context when a check result meets specific criteria, using Sensu Check Hooks
    Learn more about how to <achieve (or other verb)> “automated diagnosis” using Sensu Check Hooks
  • What are Check Hooks?
    • Exercise: du -sh per volume mount (or Windows equivalent)
  • Discussion

Non-content tasks:

  • Create a GitHub issue for check hook “filtering” or “subscriptions” for cross-platform check hook configuration; add issue to ISSUES.md

Update Lesson 4: reorganize into smaller units, interleave exercises w/ text

Currently the lesson is structured to have a lengthy section of informational text up-front, then a series of lessons at the end. Rather, interleave the instructional text and lessons, so that hands-on exercises happen immediately after covering the related information.

Outline should be:

  • Title: Lesson 4: Intro to Handlers
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents.
  • Exercise 1: Configure an Alert Handler
  • Exercise 2: Configure a Metrics Handler
  • Discussion: Socket Handlers, Handler Sets, Where do handlers run?, handler templates, handler config overrides, etc.
  • Learn More: Links to more reading
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

NOTE: This is part of an effort to standardize the structure of all the lessons to look something like this (with the associated quantitative lexicographical limits):

Lesson Structure (500-1000 words):

  • Task Based Titles/Structure: “Creating a new Handler” (5-7 words)
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents. (50-100 words)
  • Exercises: One more more exercise (see Exercise Structure below)
  • Discussion: Move any edge cases, extra explanation, caveats, related features, advanced uses cases, etc to this section. (50-100 words)
  • Learn More: Links to more reading (3-7 links)
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

Exercise Structure:

  • Task: short description of the task (25-50 words)
  • Solution: short description of how we’ll solve the problem/complete the task (25-50 words)
  • Steps: Numbered steps 1-5, what to do. (50-100 words per step)

Sentences should be 5-7 words.
Paragraphs should be 2-5 sentences long (10-35 words).
Sections should be ~50-100 words long (10-20 sentences, or ~3-5 paragraphs).
Lessons should be 500-1000 words long (above structure is within those bounds)
Lessons should have 3-5 exercises
Exercises should have 3-5 steps
Exercises should be ~250 words long, using about 50 words per step.

Example: Lower end of range = 705 words.

  • Title: 5 words
  • Goals: 50 words
  • Exercise 1: Task: 25 words
  • Exercise 1: Solution: 25 words
  • Exercise 1: Step 1: 50 words
  • Exercise 1: Step 2: 50 words
  • Exercise 1: Step 3: 50 words
  • Exercise 2: Task: 25 words
  • Exercise 2: Solution: 25 words
  • Exercise 2: Step 1: 50 words
  • Exercise 2: Step 2: 50 words
  • Exercise 2: Step 3: 50 words
  • Exercise 3: Task: 25 words
  • Exercise 3: Solution: 25 words
  • Exercise 3: Step 1: 50 words
  • Exercise 3: Step 2: 50 words
  • Exercise 3: Step 3: 50 words
  • Discussion: 50 words
  • Learn More: 3 links (n/a word count)
  • Next Steps: feedback, previous, next (n/a word count)

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

  • Flesh-Kincaid Grade Level: 8-10
  • Flesch Reading Ease Score: 40-60
  • Average Words per Sentence: 4-7
  • Average Syllables per Word: 1-2
  • Sentences: 150-200
  • Words: 750-1000

Update Lesson 6: reorganize into smaller units, interleave exercises w/ text

Currently the lesson is structured to have a lengthy section of informational text up-front, then a series of lessons at the end. Rather, interleave the instructional text and lessons, so that hands-on exercises happen immediately after covering the related information.

Outline should be:

  • Title: Lesson 6: Intro to Filters
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents.
  • Overview
  • Built-in Filters
  • Exercise 1: Using Built-in Filters
  • Exercise 2: Create a Custom Filter
  • Exercise 3: Using a Custom Filter in a Handler
  • Discussion: Filter execution environment, additional/advanced use cases, other considerations
  • Learn More: Links to more reading
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

NOTE: This is part of an effort to standardize the structure of all the lessons to look something like this (with the associated quantitative lexicographical limits):

Lesson Structure (500-1000 words):

  • Task Based Titles/Structure: “Creating a new Handler” (5-7 words)
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents. (50-100 words)
  • Exercises: One more more exercise (see Exercise Structure below)
  • Discussion: Move any edge cases, extra explanation, caveats, related features, advanced uses cases, etc to this section. (50-100 words)
  • Learn More: Links to more reading (3-7 links)
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

Exercise Structure:

  • Task: short description of the task (25-50 words)
  • Solution: short description of how we’ll solve the problem/complete the task (25-50 words)
  • Steps: Numbered steps 1-5, what to do. (50-100 words per step)

Sentences should be 5-7 words.
Paragraphs should be 2-5 sentences long (10-35 words).
Sections should be ~50-100 words long (10-20 sentences, or ~3-5 paragraphs).
Lessons should be 500-1000 words long (above structure is within those bounds)
Lessons should have 3-5 exercises
Exercises should have 3-5 steps
Exercises should be ~250 words long, using about 50 words per step.

Example: Lower end of range = 705 words.

  • Title: 5 words
  • Goals: 50 words
  • Exercise 1: Task: 25 words
  • Exercise 1: Solution: 25 words
  • Exercise 1: Step 1: 50 words
  • Exercise 1: Step 2: 50 words
  • Exercise 1: Step 3: 50 words
  • Exercise 2: Task: 25 words
  • Exercise 2: Solution: 25 words
  • Exercise 2: Step 1: 50 words
  • Exercise 2: Step 2: 50 words
  • Exercise 2: Step 3: 50 words
  • Exercise 3: Task: 25 words
  • Exercise 3: Solution: 25 words
  • Exercise 3: Step 1: 50 words
  • Exercise 3: Step 2: 50 words
  • Exercise 3: Step 3: 50 words
  • Discussion: 50 words
  • Learn More: 3 links (n/a word count)
  • Next Steps: feedback, previous, next (n/a word count)

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

  • Flesh-Kincaid Grade Level: 8-10
  • Flesch Reading Ease Score: 40-60
  • Average Words per Sentence: 4-7
  • Average Syllables per Word: 1-2
  • Sentences: 150-200
  • Words: 750-1000

Standardize on self-guided setup

Currently the workshop has instructions for both an instructor-led pathway (where the workshop environment is a shared setup created by the instructor) and a self-guided pathway (where the workshop environment is running locally in a orchestrated set of containers). Remove the instructor-led option, focusing on the self-guided pathway only.

Add diagrams

Most of the lesson plans are walls of text. It would be super helpful if we could visualize some of the concepts with diagrams.

Lesson 05 Feedback: Include or Reference Troubleshoot Sensu Docs

Feedback

Lesson 5 is the first time in the workshop that really see the pipeline exercised. When I got to this lesson I found an issue (#108) where a misconfigured mattermost handler was not producing the alerts I was expecting. I've ran into a handful of similar situations so far, and found this section to be super useful: https://docs.sensu.io/sensu-go/latest/operations/maintain-sensu/troubleshoot/#handlers-and-event-filters

Suggested Improvement

Think about including reference to the official sensu troubleshooting docs either here in Lesson 05, or somewhere central.

Lesson Progress

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Add a Sumo Logic reference architecture

Suggested Improvement

Add a docker-compose template that replaces influxdb and grafana w/ Sumo Logic.

Applicable Lessons

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Add metrics collection exercises

Suggested Improvement

Metrics collection exercises are currently marked as "todo" in lessons 4 and 8. Let's add examples for each reference architecture (influxdb, sumologic, elasticsearch, prometheus, etc).

Applicable Lessons

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Create new Lesson 2 covering Laptop Setup and Description of Workshop Environment

Changes in Issue #60 will leave us with an empty "Lesson 2" slot. Right now the workshop is also missing an explicit step for workshop learners to setup their local test environment. The new Lesson 2 will guide the user through setting up their environment, describe the test environment, and how to do some basic troubleshooting steps like restarting the containers, viewing the log output, etc.

Basic outline should be:

  • Setting up the Workshop Environment
  • Workshop Environment Components
  • Troubleshooting Strategies

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

Flesh-Kincaid Grade Level: 8-10
Flesch Reading Ease Score: 40-60
Average Words per Sentence: 4-7
Average Syllables per Word: 1-2
Sentences: 150-200
Words: 750-1000

Review Lesson 11, 12 changes.

We merged a few PRs without sufficient detailed review today due to deadline pressure for a scheduled review. Come back to these and review afterwards.

Related PRs:

Replace Lesson 1 & 2 content with a brief "Intro to Sensu" as Lesson 1

Currently Lesson 1 and Lesson 2 are too long. They require too much upfront "passive receptive" reading before getting to the "hands-on" active-learning portion of the workshop in Lesson 3.

Instead, we should replace Lesson 1 & 2 with a shorter Intro to Sensu module as Lesson 1. It should be less than 1000 words in length, with the following outline:

  • What is Sensu?
  • Observability Pipeline
  • The Sensu Data Model
  • Monitoring As Code

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

  • Flesh-Kincaid Grade Level: 8-10
  • Flesch Reading Ease Score: 40-60
  • Average Words per Sentence: 4-7
  • Average Syllables per Word: 1-2
  • Sentences: 150-200
  • Words: 750-1000

Update Lesson 10 to new format

Lesson 10 outline:

Title: Silencing & Scheduled Maintenance

  • Goals
  • Silencing alerts
    • TL;DR… users often use this as a sort of “acknowledgement”
    • Exercise: silence an alert
      1. Add check to monitor the demo app w/ 10s interval (HTTP)
      2. Add is_silenced filter to your alert handler (Sensu doesn’t assume that silencing should have the same effect on every handler)
      3. TODO: remove the occurrence filter; add a blockquote comment to explain that we’re only doing this to observe the effect of the silence for this exercise
      4. Invoke demo app failure (curl -XPOST localhost:9000/healthz)
      5. Create a silence using sensuctl silenced create --interactive with begin:now, expiry:3600, expire_on_resolve:false
      6. Observe the effect of the silence
      7. Restore demo app to healthy status (curl -XPOST localhost:9000/healthz)
  • How to schedule maintenance
    • TL;DR…
    • Exercise: configure a silence that starts and ends in the future
      1. Create a silence using sensuctl silenced create --interactive with begin:180, expire:-1, expire_on_resolve:false
      2. Invoke demo app failure
      3. Wait / observe maintenance mode
      4. Restore demo app to healthy status
  • Discussion
    • Recap
    • Automated maintenance mode… use Sensu API to create/remove silence at beginning/end of configuration management

Update Lesson 7: reorganize into smaller units, interleave exercises w/ text

Currently the lesson is structured to have a lengthy section of informational text up-front, then a series of lessons at the end. Rather, interleave the instructional text and lessons, so that hands-on exercises happen immediately after covering the related information.

Outline should be:

  • Title: Lesson 7: Intro to Agents
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents.
  • The Sensu Agent
  • Exercise 1: Install the Sensu Agent
  • Authentication and Communication
  • Configuring the Agent
  • Exercise 2: Customize Agent Configuration
  • Discussion: Entity management, agent ingest API, deadman's switch, keepalives, other considerations
  • Learn More: Links to more reading
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

NOTE: This is part of an effort to standardize the structure of all the lessons to look something like this (with the associated quantitative lexicographical limits):

Lesson Structure (500-1000 words):

  • Task Based Titles/Structure: “Creating a new Handler” (5-7 words)
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents. (50-100 words)
  • Exercises: One more more exercise (see Exercise Structure below)
  • Discussion: Move any edge cases, extra explanation, caveats, related features, advanced uses cases, etc to this section. (50-100 words)
  • Learn More: Links to more reading (3-7 links)
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

Exercise Structure:

  • Task: short description of the task (25-50 words)
  • Solution: short description of how we’ll solve the problem/complete the task (25-50 words)
  • Steps: Numbered steps 1-5, what to do. (50-100 words per step)

Sentences should be 5-7 words.
Paragraphs should be 2-5 sentences long (10-35 words).
Sections should be ~50-100 words long (10-20 sentences, or ~3-5 paragraphs).
Lessons should be 500-1000 words long (above structure is within those bounds)
Lessons should have 3-5 exercises
Exercises should have 3-5 steps
Exercises should be ~250 words long, using about 50 words per step.

Example: Lower end of range = 705 words.

  • Title: 5 words
  • Goals: 50 words
  • Exercise 1: Task: 25 words
  • Exercise 1: Solution: 25 words
  • Exercise 1: Step 1: 50 words
  • Exercise 1: Step 2: 50 words
  • Exercise 1: Step 3: 50 words
  • Exercise 2: Task: 25 words
  • Exercise 2: Solution: 25 words
  • Exercise 2: Step 1: 50 words
  • Exercise 2: Step 2: 50 words
  • Exercise 2: Step 3: 50 words
  • Exercise 3: Task: 25 words
  • Exercise 3: Solution: 25 words
  • Exercise 3: Step 1: 50 words
  • Exercise 3: Step 2: 50 words
  • Exercise 3: Step 3: 50 words
  • Discussion: 50 words
  • Learn More: 3 links (n/a word count)
  • Next Steps: feedback, previous, next (n/a word count)

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

  • Flesh-Kincaid Grade Level: 8-10
  • Flesch Reading Ease Score: 40-60
  • Average Words per Sentence: 4-7
  • Average Syllables per Word: 1-2
  • Sentences: 150-200
  • Words: 750-1000

Lesson 08 Feedback - sensu/check-disk-usage:0.6.0 not released

Feedback

Hi! I had to use 0.5.0 - It looks like 0.6.0 is released on github, but Bonsai only has 0.5.0.

Suggested Improvement

Pretty straight-forward - release check-disk-usage 0.6.0, remove the hard coded reference in the lesson, downgrade to 0.5.0 or wait!

Lesson Progress

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Lesson 07 Feedback - avoid installing `sensu-agent` on user's OS

Feedback

In Lesson 7, I skipped exercise 2 (installing sensu-agent on my machine). I was OK installing sensuctl since that is the Sensu client, but I did not want to install the agent on my machine. This also meant I could not do exercise 3.

Suggested Improvement

Add a small Linux container to your docker-compose setup to host sensu-agent, which would eliminate the problem of people not wanting to install it on their native OS.

Lesson Progress

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Add a Vagrantfile

Suggested Improvement

Provide a Vagrantfile that packages up the workshop environment as a VM for users who are not allowed to run Docker on their corporate workstations.

Update Lesson 5: reorganize into smaller units, interleave exercises w/ text

Currently the lesson is structured to have a lengthy section of informational text up-front, then a series of lessons at the end. Rather, interleave the instructional text and lessons, so that hands-on exercises happen immediately after covering the related information.

Outline should be:

  • Title: Lesson 5: Intro to Events
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents.
  • Events are Observations
  • Exercise 1: Create an Event Using Curl
  • Exercise 2: Create an Event that Triggers an Alert
  • Discussion: Use Cases (service health, metrics, endpoint discovery, deadman's switch), Metrics vs Events
  • Learn More: Links to more reading
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

NOTE: This is part of an effort to standardize the structure of all the lessons to look something like this (with the associated quantitative lexicographical limits):

Lesson Structure (500-1000 words):

  • Task Based Titles/Structure: “Creating a new Handler” (5-7 words)
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents. (50-100 words)
  • Exercises: One more more exercise (see Exercise Structure below)
  • Discussion: Move any edge cases, extra explanation, caveats, related features, advanced uses cases, etc to this section. (50-100 words)
  • Learn More: Links to more reading (3-7 links)
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

Exercise Structure:

  • Task: short description of the task (25-50 words)
  • Solution: short description of how we’ll solve the problem/complete the task (25-50 words)
  • Steps: Numbered steps 1-5, what to do. (50-100 words per step)

Sentences should be 5-7 words.
Paragraphs should be 2-5 sentences long (10-35 words).
Sections should be ~50-100 words long (10-20 sentences, or ~3-5 paragraphs).
Lessons should be 500-1000 words long (above structure is within those bounds)
Lessons should have 3-5 exercises
Exercises should have 3-5 steps
Exercises should be ~250 words long, using about 50 words per step.

Example: Lower end of range = 705 words.

  • Title: 5 words
  • Goals: 50 words
  • Exercise 1: Task: 25 words
  • Exercise 1: Solution: 25 words
  • Exercise 1: Step 1: 50 words
  • Exercise 1: Step 2: 50 words
  • Exercise 1: Step 3: 50 words
  • Exercise 2: Task: 25 words
  • Exercise 2: Solution: 25 words
  • Exercise 2: Step 1: 50 words
  • Exercise 2: Step 2: 50 words
  • Exercise 2: Step 3: 50 words
  • Exercise 3: Task: 25 words
  • Exercise 3: Solution: 25 words
  • Exercise 3: Step 1: 50 words
  • Exercise 3: Step 2: 50 words
  • Exercise 3: Step 3: 50 words
  • Discussion: 50 words
  • Learn More: 3 links (n/a word count)
  • Next Steps: feedback, previous, next (n/a word count)

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

  • Flesh-Kincaid Grade Level: 8-10
  • Flesch Reading Ease Score: 40-60
  • Average Words per Sentence: 4-7
  • Average Syllables per Word: 1-2
  • Sentences: 150-200
  • Words: 750-1000

Update "default" reference architecture to use Sumo Logic

Rename the existing docker-compose-default.yaml to docker-compose-influxdb.yaml and add a new docker-compose-default.yaml that uses Sumo Logic as the default data/analytics platform.

Also update the docker-compose-cluster.yaml template to use Sumo Logic.

Update workshop automation for Sensu Go 6.5.0

Changes:

  • Use the new sensu-backend init --cluster-admin-apikey automation
  • Rename the configurator service to workshop (which can also now be used as a sandboxed workstation environment)
  • Remove the sensuctl container (no need for sensuctl configure thanks to automated API Key initialization)
  • Remove the wait-for-sensuctl script and .config/ volume mount
  • Refactor the seed-workshop-resources script (use a simpler sensuctl retry loop mechanism)

Review use of term "under management" in the workshop

Suggested Improvement

TBD if the term "under management" is relevant to the user persona for this workshop.

Applicable Lessons

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Lesson 7, Exercise 2 linux install instructions are invalid

Feedback

The instructions for installing a Linux agent are incorrect (they expect some environment variables that we don't set in .envrc). The tar command also needs to be executed via sudo.

Suggested Improvement

curl -LO https://s3-us-west-2.amazonaws.com/sensu.io/sensu-go/${SENSU_VERSION}/sensu-go_${SENSU_VERSION}_linux_amd64.tar.gz
sudo tar -xzf sensu-go_${SENSU_VERSION}_linux_amd64.tar.gz -C /usr/bin/  
rm sensu-go_${SENSU_VERSION}_linux_amd64.tar.gz    

Lesson Progress

  • Lesson 01 completed or in-progress
  • Lesson 02 completed or in-progress
  • Lesson 03 completed or in-progress
  • Lesson 04 completed or in-progress
  • Lesson 05 completed or in-progress
  • Lesson 06 completed or in-progress
  • Lesson 07 completed or in-progress
  • Lesson 08 completed or in-progress
  • Lesson 09 completed or in-progress
  • Lesson 10 completed or in-progress
  • Lesson 11 completed or in-progress
  • Lesson 12 completed or in-progress
  • Lesson 13 completed or in-progress
  • Lesson 14 completed or in-progress
  • Lesson 15 completed or in-progress
  • Lesson 16 completed or in-progress

Update Lesson 11 to new format

Outline...

Title: Introduction to the Sensu Web Application

  • Goals
  • How to view system overview information in Sensu? (Dashboard)
    • Exercise: answer the question: how many entities are ??? (scavenger hunt)
    • Exercise: how to get the same info from sensuctl???
      • sensuctl entity list --format json | jq '. | length'
  • How to navigate between namespaces in Sensu?
    • Exercise: select the “default” namespace
  • How to view event data in Sensu?
    • Exercise: view all events
  • How to view inventory data in Sensu?
    • Exercise: view agent entities
    • Exercise: search for a specific entity
  • How to view/create silences in Sensu?
    • Exercise: create a silence for an entity
    • Exercise: create a silence for a entity+check
    • Exercise: delete a silence
  • How to view configuration data in Sensu?
    • Exercise: modify a check
  • Discussion
    • Recap
    • Sensu web app is just another API client, like sensuctl

Default branch naming

I noticed on this repo, we're using latest instead of main, which is the current GitHub default for new repositories. Is there a reason we're using a customized name here instead of main?

Update Lesson 3: Remove web interface walkthrough, focus entirely on CLI

This lesson currently opens with a long, passive walkthrough of the Sensu web interface, then moves to a set of exercises built around the CLI/shell environment, which the remainder of the lessons also use. Instead, remove the web interface portion and focus only on the CLI content, moving the web interface walkthrough to a supplemental / later lesson (numbering TBD).

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

Flesh-Kincaid Grade Level: 8-10
Flesch Reading Ease Score: 40-60
Average Words per Sentence: 4-7
Average Syllables per Word: 1-2
Sentences: 75-100
Words: 375-500

Update Lesson 3: reorganize into smaller units, interleave exercises w/ text

Currently the lesson is structured to have a lengthy section of informational text up-front, then a series of lessons at the end. Rather, interleave the instructional text and lessons, so that hands-on exercises happen immediately after covering the related information.

Outline should be:

  • Title: Lesson 3: Using the sensuctl CLI
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents.
  • Exercise 1: Install and Configure the Sensu CLI
  • Exercise 2: Create an API Key
  • Exercise 3: List Sensu Resources
  • Exercise 4: View Resources and Event Details
  • Discussion: Sensu is API-based, CLI is a client, Web app is also a client. Namespaces, note about output options, note about --help, etc.
  • Learn More: Links to more reading
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

NOTE: This is part of an effort to standardize the structure of all the lessons to look something like this (with the associated quantitative lexicographical limits):

Lesson Structure (500-1000 words):

  • Task Based Titles/Structure: “Creating a new Handler” (5-7 words)
  • Goals: Explicitly describe Target Audience, Pre-Requisites, Intents. (50-100 words)
  • Exercises: One more more exercise (see Exercise Structure below)
  • Discussion: Move any edge cases, extra explanation, caveats, related features, advanced uses cases, etc to this section. (50-100 words)
  • Learn More: Links to more reading (3-7 links)
  • Next Steps: Workshop Navigation (standard links: feedback, next step, prev step)

Exercise Structure:

  • Task: short description of the task (25-50 words)
  • Solution: short description of how we’ll solve the problem/complete the task (25-50 words)
  • Steps: Numbered steps 1-5, what to do. (50-100 words per step)

Sentences should be 5-7 words.
Paragraphs should be 2-5 sentences long (10-35 words).
Sections should be ~50-100 words long (10-20 sentences, or ~3-5 paragraphs).
Lessons should be 500-1000 words long (above structure is within those bounds)
Lessons should have 3-5 exercises
Exercises should have 3-5 steps
Exercises should be ~250 words long, using about 50 words per step.

Example: Lower end of range = 705 words.

  • Title: 5 words
  • Goals: 50 words
  • Exercise 1: Task: 25 words
  • Exercise 1: Solution: 25 words
  • Exercise 1: Step 1: 50 words
  • Exercise 1: Step 2: 50 words
  • Exercise 1: Step 3: 50 words
  • Exercise 2: Task: 25 words
  • Exercise 2: Solution: 25 words
  • Exercise 2: Step 1: 50 words
  • Exercise 2: Step 2: 50 words
  • Exercise 2: Step 3: 50 words
  • Exercise 3: Task: 25 words
  • Exercise 3: Solution: 25 words
  • Exercise 3: Step 1: 50 words
  • Exercise 3: Step 2: 50 words
  • Exercise 3: Step 3: 50 words
  • Discussion: 50 words
  • Learn More: 3 links (n/a word count)
  • Next Steps: feedback, previous, next (n/a word count)

Quantitative Metric Goals (as determined by this Flesch-Kincaid calculator):

  • Flesh-Kincaid Grade Level: 8-10
  • Flesch Reading Ease Score: 40-60
  • Average Words per Sentence: 4-7
  • Average Syllables per Word: 1-2
  • Sentences: 150-200
  • Words: 750-1000

Fix typo in README.md

Under step 1, in the side note about using jq to check the json files just created, fix the line that reads

$ cat /etc/sensu/conf.d/influxdb.json | jq .

to

$ cat /etc/sensu/conf.d/handlers/influxdb.json | jq .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.