Skip to content

Conversation

@casmssm
Copy link

@casmssm casmssm commented Sep 10, 2022

New feature that user assumpt an arbitrary value of sli when metrics hasn't a increase, and it is equals to 0. The metric exists but has no changes. Some scenarios we want a sli assumption to 100% or 0%. This feature can be used by adding the option assumption_empty_sli under spec in the slo_config.

We use this tool in production and we need this patch, but someone else might need it too.

CARLOS MARTINS and others added 5 commits September 9, 2022 20:35
…hasn't a increase, and it is equals to 0. The metric exists but has no changes. Some scenarios we want a sli assumption to 100% or 0%. This feature can be used by adding the option assumption_empty_sli under spec in the slo_config.
@lvaylet
Copy link
Contributor

lvaylet commented Oct 17, 2022

Hi @casmssm,

I just took over the maintenance of the SLO Generator.

Could you give us a quick example where this extra setting is relevant, and what the corresponding YAML files look like?

Copy link
Contributor

@ocervell ocervell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest rewriting this in the following way to keep to code clean:

  • In the report code, add an if SLI value == NO_DATA and set the SLI value to DEFAULT_EMPTY_SLI_VALUE

nb: it might even makes sense to specify a default sli value per backend, but I'm not sure about the use cases.

data = self.run_backend(config, backend, client=client, delete=delete)
if not self._validate(data):
# Patch globo-0.3 for three retries
RETRIES=3
Copy link
Contributor

@ocervell ocervell Oct 19, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retries do not belong here, this code should be left as clean as possible.
Retries should go in the providers (backends / exporters) code as they can be different for various backends. Please see https://github.com/google/slo-generator/blob/master/slo_generator/backends/dynatrace.py#L270 for an example.
On top of that, what is globo-0.3 ?

self.valid = False

def build(self, step, data):
def build(self, step, data, assumption_empty_sli=-1):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here, I don't think we should pass assumption_empty_sli to the build method.
imho the way should be a user configurable global variable to specify the SLI value when no events are found.
Please keep in mind that SLOs with no events cannot be relied on, read https://sre.google/workbook/alerting-on-slos/#low-traffic-services-and-error-budget-alerting for more info on why.

if good_count == NO_DATA:
good_count = 0
#patch globo-0.3, terminate if not exists good events
good_count = 'EMPTY'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good_count should be an int o a float, and NO_DATA already tells us that no events were found.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants