There are four different monitor types Event, Report, Metric and Slack/Webhook. Below is a description of each.
Event Monitors
Event monitors alert on your data events such as new, deleted, or modified rows. They work by comparing snapshots of your query each time your monitor runs and creating alerts when there are changes.
As an example, consider an alert named "Customer Account Needs Attention" that produces a list of customer IDs whenever a new row from your Data Warehouse sees a new payment error from a customer.
Day 1 Rows:
CustID 1 (New Row)
CustID 3 (New Row)
CustID 7 (New Row)
CustID 14 (New Row)The monitor will generate notifications for all 4
CustIDs
.
β
Day 2 Rows:
CustID 1
CustID 3
CustID 7
CustID 12
CustID 14 (New Row)The monitor will generate a notification for
CustID
14 only, as it detects that to be the only new row.
Suppose the payments team has resolved the issues related to Customer IDs 1, 3, and 7.
βDay 3 Rows:
CustID 12
CustID 14No alerts will be fired in this case.
Now, for example, on Day 4,
CustID
1 transitions back to the "needs attention" state.Day 4 Rows:
CustID 12
CustID 14
CustID 1 (New Row)In this case, Avenue will generate a fresh alert for
CustID
1, as it has transitioned back into the "needs attention" state after being absent from the results earlier.
Report Monitors
Report monitors very simply send you the results of your query on whatever cadence you set. These are a great choice for things like weekly sales volume reports, or daily new orders lists.
π‘ Note: Depending on the size of your query results returned you may want to toggle Aggregate Changes
when customizing your signals. By default a new signal will be created for each row, if you would like to combine all rows into 1 signal turn on Aggregate Changes
.
Metric Monitors
Overview
Metric monitors aggregate a metric over a given interval and alert you if it breaches a threshold. Examples of use cases for metric monitors are getting notified if:
The sum of sales over the last week is less than $10,000
The average time to respond to a customer ticket over the last month is above 1 hour
The 99th percentile of your basket size over the last 2 weeks is less than $50
Configure Your Alerting Conditions
In addition to setting the Value column and Timestamp column, you need to:
Select an Aggregation Function.
Choose from:
Count: returns the count of the rows in a given evaluation window
Sum: returns the sum of the value column of the rows in a given evaluation window
Percentile: returns a specified percentile of the value column of the rows in a given evaluation window
Average: returns the average of the value column of the rows in a given evaluation window
Minimum: returns the minimum of the value column of the rows in a given evaluation window
Maximum: returns the minimum of the value column of the rows in a given evaluation window
Select a Lookback Duration.
This value determines how far back Avenue should look when evaluating your metric. For example, if you set this value to "5 minutes", every time the monitor runs, Avenue will include rows where the Timestamp column value is in the last 5 minutes, and exclude any rows where the timestamp column is not in the last 5 minutes.
Select a Comparison Operator.
The options are:
Equal To: monitor will trigger if the metric value is equal to the threshold value
Greater Than: monitor will trigger if the metric value is greater than the threshold value
Greater Than or Equal To: monitor will trigger if the metric value is greater than or equal to the threshold value
Less Than: monitor will trigger if the metric value is less than the threshold value
Less Than or Equal To: monitor will trigger if the metric value is less than or equal to the threshold value
Select a Threshold Value.
Your metric value will be compared against this value to determine whether the monitor should trigger an alert.
Select a Monitor Cadence.
This dictates how often and when your monitor should run. This functions the same as it does for event-based monitors.
Select a Healthy Run Count.
This value dictates how many consecutive runs it takes for your metric monitor to be considered healthy. In order to prevent noise, metric monitors will only create a signal when the metric initially transitions to an unhealthy state. For example, let's say your healthy run count is 3, your comparison operator is "greater than", and your threshold value is 5.
Your monitor is healthy, but the current run's metric value is greater than 5 so your monitor will transitions to an unhealthy state and sends a signal.
The next run's metric value is also greater than 5 so your monitor stays unhealthy, but it does not send another signal.
The next run's metric value is less than 5. Since your healthy run count is 3, your monitor stays unhealthy and does not yet transition to a healthy state.
The next 2 runs are also healthy. On the third consecutive healthy run, your monitor transitions to a healthy state.
If there is another unhealthy run after this, your monitor will once again transition to an unhealthy state and create a new signal.
Select any row filters that you'd like to apply to your data. These filters will be applied before the metric value is computed.
Add Metric Data in your Signal Messages
{{metric.value}}
: the metric value for a given monitor run{{metric.threshold}}
: the threshold value you chose above{{metric.comparisonOperator}}
: the comparison operator you chose above
β
Slack/Webhook
A Webhook is a system that sends automatic updates from one app to another whenever a specific event occurs. It allows apps to communicate with each other in real-time.
β
If you want to create a Monitor to trigger signals manually instead of based on data from a query, you can create a new Monitor and choose Slack/Webhook. You will also be able to trigger this Monitor via Slack with the shortcut /Avenue
.
Directions
Create new monitor
Select to Slack / Webhook
You can send POST requests to the Webhook URL or setup a form and assign to the monitor.
Using Webhook Data in your Monitor
Webhook information can be accessed and used by using template variables starting with:
payload.
For example, if we are creating a webhook monitor that reviews requests from a meeting scheduler our signal message body could look like this:
β
Call booked: {{ payload.name }} at {{payload.company_name }}
Meeting: {{ payload.scheduled_event.name }}
Date: {{ payload.scheduled_event.start_time }}
Status: {{ payload.scheduled_event.status }}
Context: {{ payload.meeting_type}}
βοΈ If you need any help or have any questions please contact support by email, or click on the button in the bottom right corner.