-
Notifications
You must be signed in to change notification settings - Fork 23
Improvement/bb 605 alert for ingestion processing #2821
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: development/9.6
Are you sure you want to change the base?
Changes from all commits
ce732c7
9077d5f
ecb9f8b
3c1e419
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| evaluation_interval: 1m | ||
| rule_files: | ||
| - ingestion-producer-alert.rendered.yaml | ||
|
|
||
| tests: | ||
|
|
||
| # A source whose setup keeps failing is retried on every cron tick, so it | ||
| # fails at a steady rate while every other source keeps reading normally. | ||
| - name: Ingestion Producer Source Setup Failing | ||
| interval: 1m | ||
| input_series: | ||
| - series: s3_ingestion_source_operations_total{namespace="zenko",job="artesca-data-backbeat-ingestion-producer-headless",origin="ingestion",op="getRaftId",status="error"} | ||
| values: 0+12x20 | ||
| - series: s3_ingestion_source_operations_total{namespace="zenko",job="artesca-data-backbeat-ingestion-producer-headless",origin="ingestion",op="getRaftLog",status="success"} | ||
| values: 0+12000x20 | ||
| alert_rule_test: | ||
| - alertname: IngestionProducerSourceSetupFailing | ||
| eval_time: 5m | ||
| exp_alerts: [] | ||
| - alertname: IngestionProducerSourceSetupFailing | ||
| eval_time: 12m | ||
| exp_alerts: | ||
| - exp_labels: | ||
| severity: warning | ||
| exp_annotations: | ||
| zenko_service: backbeat-ingestion-producer | ||
| description: "Ingestion producer has been unable to set up a source for the last 10 minutes, so the objects of that location are not ingested. Check the producer logs for the bucket it fails to resolve." | ||
| summary: "Ingestion producer cannot set up a source" | ||
| # The same failures are 0.1% of all the source operations, which is why the | ||
| # error ratio alerts cannot report a single source that stopped ingesting. | ||
| - alertname: IngestionProducerSourceErrorRate3Percent | ||
| eval_time: 12m | ||
| exp_alerts: [] | ||
| - alertname: IngestionProducerSourceErrorRate5Percent | ||
| eval_time: 12m | ||
| exp_alerts: [] | ||
|
|
||
| # A source that fails to set up while its location restarts, then recovers, | ||
| # must not alert. | ||
| - name: Ingestion Producer Source Setup Recovering | ||
| interval: 1m | ||
| input_series: | ||
| - series: s3_ingestion_source_operations_total{namespace="zenko",job="artesca-data-backbeat-ingestion-producer-headless",origin="ingestion",op="getRaftId",status="error"} | ||
| values: 0 12 24 24x17 | ||
| - series: s3_ingestion_source_operations_total{namespace="zenko",job="artesca-data-backbeat-ingestion-producer-headless",origin="ingestion",op="getRaftId",status="success"} | ||
| values: 0 0 0 1+1x17 | ||
| alert_rule_test: | ||
| - alertname: IngestionProducerSourceSetupFailing | ||
| eval_time: 8m | ||
| exp_alerts: [] | ||
| - alertname: IngestionProducerSourceSetupFailing | ||
| eval_time: 15m | ||
| exp_alerts: [] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -84,7 +84,7 @@ groups: | |
| description: "Ingestion producer source error rate has increased to 3% in the last 5 minutes" | ||
| summary: "Ingestion producer source error rate has increased" | ||
|
|
||
| - alert: IngestionProducerSourceErrorRate3Percent | ||
| - alert: IngestionProducerSourceErrorRate5Percent | ||
| Expr: | | ||
| sum(rate(s3_ingestion_source_operations_total{status="error", namespace="${namespace}", job="${job_ingestion_producer}"}[5m])) | ||
| / | ||
|
|
@@ -98,6 +98,22 @@ groups: | |
| description: "Ingestion producer source error rate has increased to 5% in the last 5 minutes" | ||
| summary: "Ingestion producer source error rate has increased" | ||
|
|
||
| # The setup of a reader is retried on every cron tick, so a source that cannot | ||
| # be resolved fails continuously. It is a handful of errors against the reads | ||
| # of every healthy source, so it only shows up on the absolute rate: the ratio | ||
| # alerts above stay far below their threshold when a single source is stuck. | ||
| - alert: IngestionProducerSourceSetupFailing | ||
| Expr: | | ||
| sum(rate(s3_ingestion_source_operations_total{op="getRaftId", status="error", namespace="${namespace}", job="${job_ingestion_producer}"}[5m])) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should we sum by bucket or location? So the alert points to the specific bucket/location which does not work?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not possible today. s3_ingestion_source_operations_total only has origin, op, status. No bucket and no location sum by would be empty and locationNameRaftID exists on the journal gauges, not on this counter. We can add a locationName label, but it would apply to every source op (getRaftLog, metadata, …), not only getRaftId. I would keep this alert cluster-wide for now and add the label in a follow-up if we want the firing alert to name the location. |
||
| > 0 | ||
| For: "10m" | ||
| Labels: | ||
| severity: warning | ||
| Annotations: | ||
| zenko_service: backbeat-ingestion-producer | ||
| description: "Ingestion producer has been unable to set up a source for the last 10 minutes, so the objects of that location are not ingested. Check the producer logs for the bucket it fails to resolve." | ||
| summary: "Ingestion producer cannot set up a source" | ||
|
|
||
| - alert: IngestionProducerZookeeperErrorRate3Percent | ||
| Expr: | | ||
| sum(rate(s3_ingestion_zookeeper_operations_total{status="error", namespace="${namespace}", job="${job_ingestion_producer}"}[5m])) | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this alert is a sub-class of the previous one (
IngestionProducerSourceErrorRate5Percent) :There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For me it is the aggregation. A stuck source retries getRaftId every few seconds and those errors are drowned by getRaftLog successes from healthy sources. Lowering the ratio would noisy-alert on read errors and filtering the existing ratio to op="getRaftId" would fire, but then “error rate 5%” would mean setup failure...
The dedicated absolute rate on getRaftId, with for: 10m, is the smallest change that names this failure mode in my opinion