19 Mar 2024 07:39 AM - edited 16 May 2024 10:23 AM
It's quite common you don't provide your services 24x7, but you will run them also during non-business hours. Until business hours or business calendar features land into the Dynatrace product natively, it's possible to have a simple solution.
My approach below works for both Dynatrace Managed and SaaS.
For this feature, we will introduce a new metric - in this example business_hours which will provide just static values:
Of course, in your environment you probably have different business hours for different services, thus you will likely need to have a dimension for it, such as level (24x7, 10x5, etc... ). See example below:
For example, values for an 8x5 service level will look like this - a value of 1 between 9:00 and 17:00 for each day and no value outside these times.
Then in the SLO definition, you will simply use metric expression and multiply your desired metric with the business hours metric with the desired dimension representing your business hours, for example - for SLO on key requests:
(
builtin:service.keyRequest.successes.server.rate:splitBy():auto
*
business_hours:filter(and(or(eq(level,"8x5")))):splitBy():auto
):setUnit(Percent)
You may also commit the :setUnit transformation if you wish.
So in the example - during business hours, your original metric will be unaffected (multiplied by 1) and outside of business hours, you will have no value. In this example I've chosen a service level of 8x5, so the result will look like this - notice there are no values during the weekend of 16th and 17th March, and during Monday - Friday we have values only between 8:00 to 16:00 - representing 8x5.
You can use this approach also in Data Explorer, for Metric event definitions or elsewhere you can utilize metric expressions!If anyone is interested in an configurable EF2 extension providing such metric, reach out to me in the comments.I've decided to publish the extension which allows you to create this business_hours metric based on cron-like schedules or also from a real calendar! (defined in Office 365, Google Calendar or any remote calendar available in ical format). So you can actually define your business hours using a shared calendar and the extension will generate the metric accordingly.
Until this becomes available in the Dynatrace HUB, you can download the extension from here. You will need to import the CA certificate into your Dynatrace environment and upload the extension. See the README.md for details and links on how to share calendars from Office 365 or Google Calendar.
08 Apr 2024 03:26 PM
Hi Julius,
(you have fans (-;)
I am very interested in your Extension, can you share?
KR Henk
10 Apr 2024 09:10 AM
Hi Julius,
I am very interested.🙂
18 Apr 2024 08:58 AM
Hi @jiri_stefanek ,
can you please reach out to me directly at julius.loman (at) alanata.sk ?
18 Apr 2024 09:13 AM
Hi Julius,
I just send you email.
16 May 2024 06:06 AM
Sent an email to you and looking forward for your reply mate. Thanks
25 Apr 2024 07:16 PM
Hi Julius,
I just sent you an email directly as well. Hope to hear from you soon. Thank you!
25 Apr 2024 07:38 PM
How did you create the custom metric that defines the different business hours for different services, thus you will likely need to have a dimension for it, such as level (24x7, 10x5, etc) in data explorer?
26 Apr 2024 08:08 AM
@hy exactly. I've just replied to your email.
07 May 2024 05:32 PM
Hi Julius, this is great! I would also be interested in your extension please 🙂
Thank you!