Pumpkins are big thing during October. Pumpkins line the streets, guard our porches and create a beacon of light to find your way home. The glow and smell of a lightly warmed pumpkins with a candle inside is something that brings back great memories of October and Halloween. Its all fun and games though, until your pumpkin starts to show signs of degradation and soon melts into a pile of slop on your porch. If only there was a way to detect when your pumpkins public presentation was up to par and no major pumpkin service interruption was existent.
We have come up with a very basic monitoring solution for this very problems, we call it “Speedy Pumpkin Optical Outlook Kaleidoscope Yabber” or SPOOKY for short. Let us explain how it works.
First you need a pumpkin, any pumpkin will do (carved or not). That pumpkin will then be monitored by a physical camera attached to a Raspberry Pi device. This camera will snap images every 5 minutes and compare the image back to a master desired pumpkin image. If the Raspberry Pi’s scripts detect a major delta between the master and the recent pumpkin status update then it will trigger an API call out to Jira Ops to create an issue. From there, Jira Ops will update StatusPage to ensure there is full transparency on your pumpkins performance and any pumpkins issues are quickly presented for the world to see. Soon after StatusPage has been updated, Jira Ops will then make a call out to OpsGenie. From here OpsGenie will handle the alert routing based on your call schedule and notify the current On-Call Pumpkin Engineer.
We believe that using our monitoring methods that you will be able to accomplish the following:
Constant pumpkin updates
Availability of pumpkin status
No pumpkin porch rot
Desired pumpkin performance
Youthful delight of perfect pumpkins
Not only will this solution ensure you have CANDY, it will also have additional applications for the following:
Physical device monitoring (Check lights on a server and detect changes).
Access and entry detection with alert generation
Record events by generating alerts with screen shots
Tactical package delivery notifications
Yielded significant improvements in automation
With Jira Ops, StatusPage and OpsGenie you will have the full suite of tools needed to accomplish your operational goals. This suite will help with ensuring you have maximum up time, faster recovery, and detailed and transparent alerting.
Ensuring we completed the circle, no incident can be completed without an Incident response plan. Wether is is responding to an incident or completing an incident postmortem, we have a handbook to help you along they way. Check out the Atlassian Jira Ops Handbook.
Interested in how Jira Ops and OpsGenie integrate? View the full documentation here: Jira Ops to OpsGenie integration
Interested in how Jira Ops and Status Page integrate? View the full documentation here: Jira Ops to Status Page
Want to see how we really detected changes in our Pumpkins status? Check out the code example below (we used Python in this example):
# package imports
import skimage.measure as ssim
from jira import JIRA
import cv2
# Images to use
master_image = cv2.imread("master.jpg")
webcam_image = cv2.imread("webcam.jpg")
# Jira configuration
jira_username = "jac@olant.ern"
jira_token = "7r1ck0r7r347"
jira = "https://pumpkins.atlassian.net"
# Jira issue setup - modify these values to match your project
def make_dict(delta):
issue_dict = {
'project': {'key': 'MFJOP'},
'summary': 'Pumpkin problem!',
'description': 'An issue with the pumpkin has been detected. Your pumpkin has a delta of '+ str(delta),
'issuetype': {'name': 'Incident'},
'customfield_10037': {'value': '1 - Critical'}
}
return issue_dict
auth_jira = JIRA(jira,basic_auth=(jira_username, jira_token))
def compare_images(master, webcam):
return ssim.compare_ssim(master, webcam)
# Convert images to greyscale
master = cv2.cvtColor(master_image, cv2.COLOR_BGR2GRAY)
webcam = cv2.cvtColor(webcam_image, cv2.COLOR_BGR2GRAY)
delta = compare_images(master, webcam)
# Check if the images differ beyond concern, and trigger a Jira issue if they do
if delta < 0.8:
# call jira
new_issue = auth_jira.create_issue(fields=make_dict(delta))
print "Jira issue sent"
else:
# Do nothing
print "CANDY PARTY"
Credits for Article:
Stephen Sifers
Product Lead, Community
Atlassian
Austin, TX
276 accepted answers
1 comment