Skip to content

Commit

Permalink
Addressing Nits Updating README
Browse files Browse the repository at this point in the history
Took Vishnu's feedback.
Updated README
Adding `reason` to example ack file

Signed-off-by: Joe Talerico aka rook <[email protected]>
  • Loading branch information
jtaleric committed Dec 17, 2024
1 parent d04e5ee commit 70c54d9
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 16 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,17 +164,20 @@ You can open the match requirement by using the ```--node-count``` option to fin
**_NOTE:_** The ```cmr```, ```--hunter-analyze``` and ```--anomaly-detection``` flags are mutually exclusive. They cannot be used together because they represent different algorithms designed for distinct use cases.

#### Ack known bugs
To ack known regressions, you must provide a yaml file with the timestamp which the regression was identified at.
To ack known regressions, you must provide a yaml file with the uuid and metric which the regression was identified at. Example below

```
---
ack :
- timestamp: 1733490603,
- uuid: "af24e294-93da-4729-a9cc-14acf38454e1",
metric: "etcdCPU_avg"
reason: "started thread with etcd team"
```

ack'ing regressions will ensure Orion doesn't continue to notify users of the same issues.

Engineers should add a `reason` that could link to a JIRA or Slack thread. Or the `reason` could be the changepoint % diff is too low to alert component teams.

### Daemon mode
The core purpose of Daemon mode is to operate Orion as a self-contained server, dedicated to handling incoming requests. By sending a POST request accompanied by a test name of predefined tests, users can trigger change point detection on the provided metadata and metrics. Following the processing, the response is formatted in JSON, providing a structured output for seamless integration and analysis. To trigger daemon mode just use the following commands

Expand Down
4 changes: 4 additions & 0 deletions ack/ack.yaml → ack/418ack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@
ack :
- uuid: "7f7337aa-cee3-4a36-b154-a7c48ed1fb75"
metric: "etcdCPU_avg"
reason: "Under our 10% target"
- uuid: "22e90f4e-1c79-4d9d-b2f6-b95a7072738c"
metric: "kubelet_avg"
reason: "Opened Dialog with node team"
- uuid: "22e90f4e-1c79-4d9d-b2f6-b95a7072738c"
metric: "ovnCPU_avg"
reason: "OCPBUGS111111"
- uuid: "93201652-b496-4594-b1ac-7eb9a32cd609"
metric: "apiserverCPU_avg"
reason: "opened discussion with api team"
17 changes: 3 additions & 14 deletions pkg/algorithms/edivisive/edivisive.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,29 +21,18 @@ def _analyze(self):


# Process if we have ack'ed regression
ackList = []
ackSet = set()
if len(self.options["ack"]) > 1 :
for ack in self.options["ackMap"]["ack"]:
pos = series.find_by_attribute("uuid",ack["uuid"])
ackList.append(
{"pos" : pos[0],
"metric" : ack["metric"]})
ackSet.add(str(pos[0]) + "_" + ack["metric"])

# filter by direction
for metric, changepoint_list in change_points_by_metric.items():
for i in range(len(changepoint_list)-1, -1, -1):
if ((self.metrics_config[metric]["direction"] == 1 and changepoint_list[i].stats.mean_1 > changepoint_list[i].stats.mean_2) or
(self.metrics_config[metric]["direction"] == -1 and changepoint_list[i].stats.mean_1 < changepoint_list[i].stats.mean_2) ):
if ((self.metrics_config[metric]["direction"] == 1 and changepoint_list[i].stats.mean_1 > changepoint_list[i].stats.mean_2) or (self.metrics_config[metric]["direction"] == -1 and changepoint_list[i].stats.mean_1 < changepoint_list[i].stats.mean_2) or (str(changepoint_list[i].index) + "_" + changepoint_list[i].metric in ackSet)):
del changepoint_list[i]

# Filter ack'ed changes
for metric, changepoint_list in change_points_by_metric.items():
for i in range(len(changepoint_list)-1, -1, -1):
for acked in ackList:
if len(changepoint_list) > 0 :
if (changepoint_list[i].index == acked["pos"] and changepoint_list[i].metric == acked["metric"]):
del changepoint_list[i]

if [val for li in change_points_by_metric.values() for val in li]:
self.regression_flag=True
return series, change_points_by_metric

0 comments on commit 70c54d9

Please sign in to comment.