From 645decf15d7a7285a4594bb4447f90169150f796 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Mon, 27 Jan 2025 12:07:03 +0100 Subject: [PATCH 01/39] fix: AI workflow examples (#3134) --- examples/workflows/conditionally_run_if_ai_says_so.yaml | 5 ++++- .../enrich_using_structured_output_from_openai.yaml | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/workflows/conditionally_run_if_ai_says_so.yaml b/examples/workflows/conditionally_run_if_ai_says_so.yaml index 0f73660b27..21d6a63d78 100644 --- a/examples/workflows/conditionally_run_if_ai_says_so.yaml +++ b/examples/workflows/conditionally_run_if_ai_says_so.yaml @@ -1,7 +1,10 @@ id: auto-fix-mysql-table-overflow description: Clean heavy mysql tables after consulting with OpenAI using structured output triggers: - - type: manual + - type: incident + events: + - updated + - created steps: - name: ask-openai-if-this-workflow-is-applicable diff --git a/examples/workflows/enrich_using_structured_output_from_openai.yaml b/examples/workflows/enrich_using_structured_output_from_openai.yaml index 2c9bd04c26..053f540ec6 100644 --- a/examples/workflows/enrich_using_structured_output_from_openai.yaml +++ b/examples/workflows/enrich_using_structured_output_from_openai.yaml @@ -1,7 +1,10 @@ id: enrich-using-ai description: Enrich alerts using structured output from LLMs triggers: - - type: manual + - type: alert + filters: + - key: source + value: prometheus steps: - name: get-enrichments From 427dc2717a7526d89c09ac07003fb5ce62cdc8c5 Mon Sep 17 00:00:00 2001 From: Tal Date: Mon, 27 Jan 2025 14:17:37 +0200 Subject: [PATCH 02/39] feat(ui): show provider id in provider form (#3151) --- examples/workflows/slack-message-reaction.yml | 87 +++++++++++++++++++ .../app/(keep)/providers/provider-form.tsx | 3 + 2 files changed, 90 insertions(+) create mode 100644 examples/workflows/slack-message-reaction.yml diff --git a/examples/workflows/slack-message-reaction.yml b/examples/workflows/slack-message-reaction.yml new file mode 100644 index 0000000000..07a546a89d --- /dev/null +++ b/examples/workflows/slack-message-reaction.yml @@ -0,0 +1,87 @@ +id: slack-message-reaction +description: Sends a Slack message and reacts to it when the alert is resolved +disabled: false +triggers: + - type: manual + - filters: + - key: source + value: gcpmonitoring + type: alert +consts: {} +name: Slack Message + Reaction +owners: [] +services: [] +steps: [] +actions: + - name: slack-alert-resolved + if: "'{{ alert.slack_timestamp }}' and '{{ alert.status }}' == 'resolved'" + provider: + config: "{{ providers.keephq }}" + type: slack + with: + channel: C06PF9TCWUF + message: "white_check_mark" + thread_timestamp: "{{ alert.slack_timestamp }}" + notification_type: "reaction" + - name: get-tenant-name + if: "not '{{ alert.customer_name }}'" + provider: + config: "{{ providers.readonly }}" + type: mysql + with: + as_dict: true + enrich_alert: + - key: customer_name + value: results.name + query: select * from tenant where id = '{{ alert.tenantId }}' + single_row: true + - name: send-slack-alert + if: "not '{{ alert.slack_timestamp }}'" + provider: + config: "{{ providers.keephq }}" + type: slack + with: + enrich_alert: + - key: slack_timestamp + value: results.slack_timestamp + blocks: + - text: + emoji: true + text: Provider installation failed + type: plain_text + type: header + - elements: + - elements: + - text: "Tenant ID: {{alert.tenantId}}{{^alert.tenantId}}n/a{{/alert.tenantId}}" + type: text + type: rich_text_section + type: rich_text + - elements: + - elements: + - text: "Tenant Name: {{alert.customer_name}}{{^alert.customer_name}}n/a{{/alert.customer_name}}" + type: text + type: rich_text_section + type: rich_text + - elements: + - elements: + - text: "Scopes: {{alert.validatedScopes}}{{^alert.validatedScopes}}n/a{{/alert.validatedScopes}}" + type: text + type: rich_text_section + type: rich_text + - elements: + - elements: + - text: "Description: {{alert.content}}" + type: text + type: rich_text_section + type: rich_text + - elements: + - action_id: actionId-0 + text: + emoji: true + text: ":gcp: Original Alert" + type: plain_text + type: button + url: "{{alert.url}}" + type: actions + channel: C06PF9TCWUF + message: "" diff --git a/keep-ui/app/(keep)/providers/provider-form.tsx b/keep-ui/app/(keep)/providers/provider-form.tsx index adca74a8e1..c55d63291f 100644 --- a/keep-ui/app/(keep)/providers/provider-form.tsx +++ b/keep-ui/app/(keep)/providers/provider-form.tsx @@ -669,6 +669,9 @@ const ProviderForm = ({ + {installedProvidersMode && provider.id && ( + {provider.id} + )} {installedProvidersMode && provider.last_pull_time && ( Provider last pull time:{" "} From b0f371f1684873776ec972b0ce81a1476f2ecfeb Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Mon, 27 Jan 2025 14:35:01 +0200 Subject: [PATCH 03/39] feat(api): alert evaluation engine (#3138) --- .../examples/victoriametricsmulti.mdx | 67 ++ .../examples/victoriametricssingle.mdx | 53 ++ docs/alertevaluation/overview.mdx | 52 + docs/mint.json | 13 + docs/overview/introduction.mdx | 6 +- .../workflows/create_alert_from_vm_metric.yml | 48 +- examples/workflows/create_alert_in_keep.yml | 7 +- .../create_multi_alert_from_vm_metric.yml | 58 ++ .../workflows/update_workflows_from_s3.yml | 2 +- keep/contextmanager/contextmanager.py | 3 +- keep/iohandler/iohandler.py | 57 +- keep/providers/keep_provider/keep_provider.py | 516 +++++++++- .../victoriametrics_provider.py | 5 +- keep/step/step.py | 42 +- keep/workflowmanager/workflow.py | 13 +- pyproject.toml | 2 +- tests/conftest.py | 3 + tests/test_alert_evaluation.py | 892 ++++++++++++++++++ 18 files changed, 1721 insertions(+), 118 deletions(-) create mode 100644 docs/alertevaluation/examples/victoriametricsmulti.mdx create mode 100644 docs/alertevaluation/examples/victoriametricssingle.mdx create mode 100644 docs/alertevaluation/overview.mdx create mode 100644 examples/workflows/create_multi_alert_from_vm_metric.yml create mode 100644 tests/test_alert_evaluation.py diff --git a/docs/alertevaluation/examples/victoriametricsmulti.mdx b/docs/alertevaluation/examples/victoriametricsmulti.mdx new file mode 100644 index 0000000000..edf8f3a4fc --- /dev/null +++ b/docs/alertevaluation/examples/victoriametricsmulti.mdx @@ -0,0 +1,67 @@ +--- +title: "VictoriaMetrics Multi Alert Example" +--- + +This example demonstrates a simple CPU usage multi-alert based on a metric: + +```yaml +workflow: + # Unique identifier for this workflow + id: query-victoriametrics-multi + # Display name shown in the UI + name: victoriametrics-multi-alert-example + # Brief description of what this workflow does + description: victoriametrics + triggers: + # This workflow can be triggered manually from the UI + - type: manual + steps: + # Query VictoriaMetrics for CPU metrics + - name: victoriametrics-step + provider: + # Use the VictoriaMetrics provider configuration + config: "{{ providers.vm }}" + type: victoriametrics + with: + # Query that returns the sum of CPU usage for each job + # Example response: + # [ + # {'metric': {'job': 'victoriametrics'}, 'value': [1737808021, '0.022633333333333307']}, + # {'metric': {'job': 'vmagent'}, 'value': [1737808021, '0.009299999999999998']} + # ] + query: sum(rate(process_cpu_seconds_total)) by (job) + queryType: query + + actions: + # Create an alert in Keep based on the query results + - name: create-alert + provider: + type: keep + with: + # Only create alert if CPU usage is above threshold + if: "{{ value.1 }} > 0.01 " + # Alert must persist for 1 minute + for: 1m + # Use job label to create unique fingerprint for each alert + fingerprint_fields: + - labels.job + alert: + # Alert name includes the specific job + name: "High CPU Usage on {{ metric.job }}" + description: "CPU usage is high on the VM (created from VM metric)" + # Set severity based on CPU usage thresholds: + # > 0.9 = critical + # > 0.7 = warning + # else = info + severity: '{{ value.1 }} > 0.9 ? "critical" : {{ value.1 }} > 0.7 ? "warning" : "info"' + labels: + # Job label is required for alert fingerprinting + job: "{{ metric.job }}" + # Additional context labels + environment: production + app: myapp + service: api + team: devops + owner: alice + +``` diff --git a/docs/alertevaluation/examples/victoriametricssingle.mdx b/docs/alertevaluation/examples/victoriametricssingle.mdx new file mode 100644 index 0000000000..c2cc9e0516 --- /dev/null +++ b/docs/alertevaluation/examples/victoriametricssingle.mdx @@ -0,0 +1,53 @@ +--- +title: "VictoriaMetrics Single Alert Example" +--- + +This example demonstrates a simple CPU usage alert based on a metric: + +```yaml +# This workflow queries VictoriaMetrics metrics and creates alerts based on CPU usage +workflow: + # Unique identifier for this workflow + id: query-victoriametrics + # Display name shown in the UI + name: victoriametrics-alert-example + # Brief description of what this workflow does + description: Monitors CPU usage metrics from VictoriaMetrics and creates alerts when thresholds are exceeded + + # Define how the workflow is triggered + triggers: + - type: manual # Can be triggered manually from the UI + + # Steps to execute in order + steps: + - name: victoriametrics-step + provider: + # Use VictoriaMetrics provider config defined in providers.vm + config: "{{ providers.vm }}" + type: victoriametrics + with: + # Query average CPU usage rate + query: avg(rate(process_cpu_seconds_total)) + queryType: query + + # Actions to take based on the query results + actions: + - name: create-alert + provider: + type: keep + with: + # Create alert if CPU usage exceeds threshold + if: "{{ value.1 }} > 0.0040" + alert: + name: "High CPU Usage" + description: "[Single] CPU usage is high on the VM (created from VM metric)" + # Set severity based on CPU usage thresholds + severity: '{{ value.1 }} > 0.9 ? "critical" : {{ value.1 }} > 0.7 ? "warning" : "info"' + # Alert labels for filtering and routing + labels: + environment: production + app: myapp + service: api + team: devops + owner: alice +``` diff --git a/docs/alertevaluation/overview.mdx b/docs/alertevaluation/overview.mdx new file mode 100644 index 0000000000..360c17bddb --- /dev/null +++ b/docs/alertevaluation/overview.mdx @@ -0,0 +1,52 @@ +--- +title: "Overview" +--- + +The Keep Alert Evaluation Engine is a flexible system that enables you to create alerts based on any data source and define evaluation rules. Unlike traditional monitoring solutions that are tied to specific metrics, Keep's engine allows you to combine data from multiple sources and apply complex logic to determine when and how alerts should be triggered. + +## Core Features + +### Generic Data Source Support +- Query any data source (databases, APIs, metrics systems) +- Combine multiple data sources in a single alert rule +- Apply custom transformations to the data + +### Flexible Alert Evaluation +- Define custom conditions using templated expressions +- Support for complex boolean logic and mathematical operations +- State management for alert transitions (pending->firing->resolved) +- Deduplication and alert instance tracking + +### Customizable Alert Definition +- Full control over alert metadata (name, description, severity) +- Dynamic labels based on evaluation context +- Template support for all alert fields +- Custom fingerprinting for alert grouping + +## Core Components + +### Alert States +- **Pending**: Initial state when alert condition is met (relevant only if `for` supplied) +- **Firing**: Active alert that has met its duration condition +- **Resolved**: Alert that is no longer active + +### Alert Rule Components +1. **Data Collection**: Query steps to gather data from any source +2. **Condition (`if`)**: Expression that determines when to create/update an alert +3. **Duration (`for`)**: Optional time period the condition must be true before firing +4. **Alert Definition**: Complete control over how the alert looks and behaves: + - Name and description + - Severity levels + - Labels for routing + - Custom fields and annotations + +### State Management +- **Fingerprinting**: Unique identifier for alert deduplication and state tracking +- **Keep-Firing**: Control how long alerts remain active +- **State Transitions**: Rules for how alerts move between states + +## Examples +The following examples demonstrate different ways to use the alert evaluation engine: + +- [Single Metric Alert](/alertevaluation/examples/victoriametricssingle) - Basic example showing metrics-based alerting +- [Multiple Metrics Alert](/alertevaluation/examples/victoriametricsmulti) - Advanced example with multiple alert instances diff --git a/docs/mint.json b/docs/mint.json index c45131a63e..53b41543ee 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -103,6 +103,19 @@ } ] }, + { + "group": "Alert Evaluation Engine", + "pages": [ + "alertevaluation/overview", + { + "group": "Examples", + "pages": [ + "alertevaluation/examples/victoriametricssingle", + "alertevaluation/examples/victoriametricsmulti" + ] + } + ] + }, { "group": "Providers", "pages": [ diff --git a/docs/overview/introduction.mdx b/docs/overview/introduction.mdx index c6e064bfd7..c6f165bba5 100644 --- a/docs/overview/introduction.mdx +++ b/docs/overview/introduction.mdx @@ -41,6 +41,6 @@ Our vision is to democratize AIOps, making it accessible and practical for teams ## What you should read next -- [Key Concepts](#key-concepts): Understand the foundational ideas behind Keep. -- [Use Cases](#use-cases): Learn how Keep can solve specific IT operations challenges. -- [Getting Started](#getting-started): Dive in and start using Keep today. +- [Key Concepts](/overview/glossary): Understand the foundational ideas behind Keep. +- [Use Cases](/overview/usecases): Learn how Keep can solve specific IT operations challenges. +- [Playground](/overview/playground): Explore Keep's playground. diff --git a/examples/workflows/create_alert_from_vm_metric.yml b/examples/workflows/create_alert_from_vm_metric.yml index e28ff9d02d..1cdce5000f 100644 --- a/examples/workflows/create_alert_from_vm_metric.yml +++ b/examples/workflows/create_alert_from_vm_metric.yml @@ -1,39 +1,45 @@ +# This workflow queries VictoriaMetrics metrics and creates alerts based on CPU usage workflow: + # Unique identifier for this workflow id: query-victoriametrics + # Display name shown in the UI name: victoriametrics-alert-example - description: victoriametrics + # Brief description of what this workflow does + description: Monitors CPU usage metrics from VictoriaMetrics and creates alerts when thresholds are exceeded + + # Define how the workflow is triggered triggers: - - type: manual + - type: manual # Can be triggered manually from the UI + + # Steps to execute in order steps: - name: victoriametrics-step provider: + # Use VictoriaMetrics provider config defined in providers.vm config: "{{ providers.vm }}" type: victoriametrics with: + # Query average CPU usage rate query: avg(rate(process_cpu_seconds_total)) queryType: query + # Actions to take based on the query results actions: - name: create-alert - # only create an alert if the CPU usage is greater than 0.005 - if: "{{ steps.victoriametrics-step.results.data.result.0.value.1 }} > 0.001 " provider: type: keep - # create an alert with the following details with: - name: "High CPU Usage" - description: "CPU usage is high on the VM (created from VM metric)" - severity: '{{ steps.victoriametrics-step.results.data.result.0.value.1 }} > 0.9 ? "critical" : {{ steps.victoriametrics-step.results.data.result.0.value.1 }} > 0.7 ? "warning" : "info"' - labels: - environment: production - app: myapp - service: api - team: devops - owner: alice - # optional: customize the fingerprint based on these fields - fingerprint_fields: - - environment - - app - - service - - team - - owner + # Create alert if CPU usage exceeds threshold + if: "{{ value.1 }} > 0.0040" + alert: + name: "High CPU Usage" + description: "[Single] CPU usage is high on the VM (created from VM metric)" + # Set severity based on CPU usage thresholds + severity: '{{ value.1 }} > 0.9 ? "critical" : {{ value.1 }} > 0.7 ? "warning" : "info"' + # Alert labels for filtering and routing + labels: + environment: production + app: myapp + service: api + team: devops + owner: alice diff --git a/examples/workflows/create_alert_in_keep.yml b/examples/workflows/create_alert_in_keep.yml index 979604b1eb..19b5cd8544 100644 --- a/examples/workflows/create_alert_in_keep.yml +++ b/examples/workflows/create_alert_in_keep.yml @@ -2,12 +2,13 @@ workflow: id: create-alert description: Just creating one more alert in Keep triggers: - - type: manual + - type: manual actions: - name: create-alert provider: type: keep with: - name: "Alert created from the workflow" - description: "This alert was created from the create_alert_in_keep.yml example workflow." \ No newline at end of file + alert: + name: "Alert created from the workflow" + description: "This alert was created from the create_alert_in_keep.yml example workflow." diff --git a/examples/workflows/create_multi_alert_from_vm_metric.yml b/examples/workflows/create_multi_alert_from_vm_metric.yml new file mode 100644 index 0000000000..86ad19ae09 --- /dev/null +++ b/examples/workflows/create_multi_alert_from_vm_metric.yml @@ -0,0 +1,58 @@ +workflow: + # Unique identifier for this workflow + id: query-victoriametrics-multi + # Display name shown in the UI + name: victoriametrics-multi-alert-example + # Brief description of what this workflow does + description: victoriametrics + triggers: + # This workflow can be triggered manually from the UI + - type: manual + steps: + # Query VictoriaMetrics for CPU metrics + - name: victoriametrics-step + provider: + # Use the VictoriaMetrics provider configuration + config: "{{ providers.vm }}" + type: victoriametrics + with: + # Query that returns the sum of CPU usage for each job + # Example response: + # [ + # {'metric': {'job': 'victoriametrics'}, 'value': [1737808021, '0.022633333333333307']}, + # {'metric': {'job': 'vmagent'}, 'value': [1737808021, '0.009299999999999998']} + # ] + query: sum(rate(process_cpu_seconds_total)) by (job) + queryType: query + + actions: + # Create an alert in Keep based on the query results + - name: create-alert + provider: + type: keep + with: + # Only create alert if CPU usage is above threshold + if: "{{ value.1 }} > 0.01 " + # Alert must persist for 1 minute + for: 1m + # Use job label to create unique fingerprint for each alert + fingerprint_fields: + - labels.job + alert: + # Alert name includes the specific job + name: "High CPU Usage on {{ metric.job }}" + description: "CPU usage is high on the VM (created from VM metric)" + # Set severity based on CPU usage thresholds: + # > 0.9 = critical + # > 0.7 = warning + # else = info + severity: '{{ value.1 }} > 0.9 ? "critical" : {{ value.1 }} > 0.7 ? "warning" : "info"' + labels: + # Job label is required for alert fingerprinting + job: "{{ metric.job }}" + # Additional context labels + environment: production + app: myapp + service: api + team: devops + owner: alice diff --git a/examples/workflows/update_workflows_from_s3.yml b/examples/workflows/update_workflows_from_s3.yml index 14937add9a..21f717cd9e 100644 --- a/examples/workflows/update_workflows_from_s3.yml +++ b/examples/workflows/update_workflows_from_s3.yml @@ -6,7 +6,7 @@ triggers: steps: - name: s3-dump provider: - config: '{{ providers.s3 }}' + config: "{{ providers.s3 }}" type: s3 with: bucket: "keep-workflows" diff --git a/keep/contextmanager/contextmanager.py b/keep/contextmanager/contextmanager.py index 30421b9d1e..c8c965551d 100644 --- a/keep/contextmanager/contextmanager.py +++ b/keep/contextmanager/contextmanager.py @@ -100,8 +100,9 @@ def api_key(self): session.close() return self._api_key - def set_execution_context(self, workflow_execution_id): + def set_execution_context(self, workflow_id, workflow_execution_id): self.workflow_execution_id = workflow_execution_id + self.workflow_id = workflow_id self.logger_adapter.workflow_execution_id = workflow_execution_id for logger in self.__loggers.values(): logger.workflow_execution_id = workflow_execution_id diff --git a/keep/iohandler/iohandler.py b/keep/iohandler/iohandler.py index 3bb5cd16ea..cb242d79c7 100644 --- a/keep/iohandler/iohandler.py +++ b/keep/iohandler/iohandler.py @@ -37,7 +37,7 @@ def __init__(self, context_manager: ContextManager): ): self.shorten_urls = True - def render(self, template, safe=False, default=""): + def render(self, template, safe=False, default="", additional_context=None): # rendering is only support for strings if not isinstance(template, str): return template @@ -51,7 +51,7 @@ def render(self, template, safe=False, default=""): raise Exception( f"Invalid template - number of ( and ) does not match {template}" ) - val = self.parse(template, safe, default) + val = self.parse(template, safe, default, additional_context) return val def quote(self, template): @@ -135,7 +135,7 @@ def _trim_token_error(self, token): else: return token - def parse(self, string, safe=False, default=""): + def parse(self, string, safe=False, default="", additional_context=None): """Use AST module to parse 'call stack'-like string and return the result Example - @@ -160,9 +160,9 @@ def parse(self, string, safe=False, default=""): # first render everything using chevron # inject the context - string = self._render(string, safe, default) + string = self._render(string, safe, default, additional_context) - # Now, extract the token if exists - + # Now, extract the token if exists -תכ parsed_string = copy.copy(string) if string.startswith("raw_render_without_execution(") and string.endswith(")"): @@ -399,7 +399,7 @@ def _parse(self, tree): tree = ast.parse(token.encode("unicode_escape")) return _parse(self, tree) - def _render(self, key: str, safe=False, default=""): + def _render(self, key: str, safe=False, default="", additional_context=None): if "{{^" in key or "{{ ^" in key: self.logger.debug( "Safe render is not supported when there are inverted sections." @@ -413,6 +413,10 @@ def _render(self, key: str, safe=False, default=""): const_rendering = True context = self.context_manager.get_full_context() + + if additional_context: + context.update(additional_context) + # TODO: protect from multithreaded where another thread will print to stderr, but thats a very rare case and we shouldn't care much original_stderr = sys.stderr sys.stderr = io.StringIO() @@ -463,7 +467,7 @@ def _encode_single_quotes_in_double_quotes(self, s): i += 1 return "".join(result) - def render_context(self, context_to_render: dict): + def render_context(self, context_to_render: dict, additional_context: dict = None): """ Iterates the provider context and renders it using the workflow context. """ @@ -472,20 +476,29 @@ def render_context(self, context_to_render: dict): for key, value in context_to_render.items(): if isinstance(value, str): context_to_render[key] = self._render_template_with_context( - value, safe=True + value, safe=True, additional_context=additional_context ) elif isinstance(value, list): - context_to_render[key] = self._render_list_context(value) + context_to_render[key] = self._render_list_context( + value, additional_context=additional_context + ) elif isinstance(value, dict): - context_to_render[key] = self.render_context(value) + context_to_render[key] = self.render_context( + value, additional_context=additional_context + ) elif isinstance(value, StepProviderParameter): safe = value.safe and value.default is not None context_to_render[key] = self._render_template_with_context( - value.key, safe=safe, default=value.default + value.key, + safe=safe, + default=value.default, + additional_context=additional_context, ) return context_to_render - def _render_list_context(self, context_to_render: list): + def _render_list_context( + self, context_to_render: list, additional_context: dict = None + ): """ Iterates the provider context and renders it using the workflow context. """ @@ -493,16 +506,24 @@ def _render_list_context(self, context_to_render: list): value = context_to_render[i] if isinstance(value, str): context_to_render[i] = self._render_template_with_context( - value, safe=True + value, safe=True, additional_context=additional_context ) if isinstance(value, list): - context_to_render[i] = self._render_list_context(value) + context_to_render[i] = self._render_list_context( + value, additional_context=additional_context + ) if isinstance(value, dict): - context_to_render[i] = self.render_context(value) + context_to_render[i] = self.render_context( + value, additional_context=additional_context + ) return context_to_render def _render_template_with_context( - self, template: str, safe: bool = False, default: str = "" + self, + template: str, + safe: bool = False, + default: str = "", + additional_context: dict = None, ) -> str: """ Renders a template with the given context. @@ -513,7 +534,9 @@ def _render_template_with_context( Returns: str: rendered template """ - rendered_template = self.render(template, safe, default) + rendered_template = self.render( + template, safe, default, additional_context=additional_context + ) # shorten urls if enabled if self.shorten_urls: diff --git a/keep/providers/keep_provider/keep_provider.py b/keep/providers/keep_provider/keep_provider.py index 7c7103510b..e095a33238 100644 --- a/keep/providers/keep_provider/keep_provider.py +++ b/keep/providers/keep_provider/keep_provider.py @@ -2,17 +2,19 @@ Keep Provider is a class that allows to ingest/digest data from Keep. """ +import copy import logging -from datetime import datetime, timezone +from datetime import datetime, timedelta, timezone from html import unescape import yaml from keep.api.core.db import get_alerts_with_filters -from keep.api.models.alert import AlertDto +from keep.api.models.alert import AlertDto, AlertStatus from keep.api.tasks.process_event_task import process_event from keep.contextmanager.contextmanager import ContextManager from keep.exceptions.provider_exception import ProviderException +from keep.iohandler.iohandler import IOHandler from keep.providers.base.base_provider import BaseProvider from keep.providers.models.provider_config import ProviderConfig from keep.searchengine.searchengine import SearchEngine @@ -27,6 +29,7 @@ class KeepProvider(BaseProvider): def __init__( self, context_manager: ContextManager, provider_id: str, config: ProviderConfig ): + self.io_handler = IOHandler(context_manager) super().__init__(context_manager, provider_id, config) def dispose(self): @@ -114,6 +117,431 @@ def _query(self, filters=None, version=1, distinct=True, time_delta=1, **kwargs) self.logger.info("Got alerts from Keep", extra={"num_of_alerts": len(alerts)}) return alerts + def _build_alert(self, alert_data, fingerprint_fields=[], **kwargs): + """ + Build alerts from Keep. + """ + labels = copy.copy(kwargs.get("labels", {})) + alert = AlertDto( + name=kwargs["name"], + status=kwargs.get("status"), + lastReceived=kwargs.get("lastReceived"), + environment=kwargs.get("environment", "undefined"), + duplicateReason=kwargs.get("duplicateReason"), + service=kwargs.get("service"), + message=kwargs.get("message"), + description=kwargs.get("description"), + severity=kwargs.get("severity"), + pushed=True, + url=kwargs.get("url"), + labels=labels, + ticket_url=kwargs.get("ticket_url"), + fingerprint=kwargs.get("fingerprint"), + annotations=kwargs.get("annotations"), + workflowId=self.context_manager.workflow_id, + **alert_data, + ) + # if fingerprint_fields are not provided, use labels + if not fingerprint_fields: + fingerprint_fields = ["labels." + label for label in list(labels.keys())] + + # workflowId is used as the "rule id" - it's used to identify the rule that created the alert + fingerprint_fields.append("workflowId") + alert.fingerprint = self.get_alert_fingerprint(alert, fingerprint_fields) + return alert + + def _handle_state_alerts( + self, _for, state_alerts: list[AlertDto], keep_firing_for=timedelta(minutes=15) + ): + """ + Handle state alerts with proper state transitions. + Args: + _for: timedelta indicating how long alert should be PENDING before FIRING + state_alerts: list of new alerts from current evaluation + keep_firing_for: (future use) how long to keep alerts FIRING after stopping matching (default 15m) + Returns: + list of alerts that need state updates + """ + self.logger.info( + "Starting state alert handling", extra={"num_alerts": len(state_alerts)} + ) + alerts_to_notify = [] + search_engine = SearchEngine(tenant_id=self.context_manager.tenant_id) + curr_alerts = search_engine.search_alerts_by_cel( + cel_query=f"providerId == '{self.context_manager.workflow_id}'" + ) + self.logger.debug( + "Found existing alerts", extra={"num_curr_alerts": len(curr_alerts)} + ) + + # Create lookup by fingerprint for efficient comparison + curr_alerts_map = {alert.fingerprint: alert for alert in curr_alerts} + state_alerts_map = {alert.fingerprint: alert for alert in state_alerts} + self.logger.debug( + "Created alert maps", + extra={ + "curr_alerts_count": len(curr_alerts_map), + "state_alerts_count": len(state_alerts_map), + }, + ) + + # Handle existing alerts + for fingerprint, curr_alert in curr_alerts_map.items(): + now = datetime.now(timezone.utc) + alert_still_exists = fingerprint in state_alerts_map + self.logger.debug( + "Processing existing alert", + extra={ + "fingerprint": fingerprint, + "still_exists": alert_still_exists, + "current_status": curr_alert.status, + }, + ) + + if curr_alert.status == AlertStatus.FIRING.value: + if not alert_still_exists: + # TODO: keep_firing_for logic + # Alert no longer exists, transition to RESOLVED + curr_alert.status = AlertStatus.RESOLVED + curr_alert.lastReceived = datetime.now(timezone.utc).isoformat() + alerts_to_notify.append(curr_alert) + self.logger.info( + "Alert resolved", + extra={ + "fingerprint": fingerprint, + "last_received": curr_alert.lastReceived, + }, + ) + + # else: alert still exists, maintain FIRING state + else: + curr_alert.status = AlertStatus.FIRING + alerts_to_notify.append(curr_alert) + self.logger.debug( + "Alert still firing", extra={"fingerprint": fingerprint} + ) + elif curr_alert.status == AlertStatus.PENDING.value: + if not alert_still_exists: + # If PENDING alerts are not triggered, make them RESOLVED + # TODO: maybe INACTIVE? but we don't have this status yet + curr_alert.status = AlertStatus.RESOLVED + curr_alert.lastReceived = datetime.now(timezone.utc).isoformat() + alerts_to_notify.append(curr_alert) + self.logger.info( + "Pending alert resolved", + extra={ + "fingerprint": fingerprint, + "last_received": curr_alert.lastReceived, + }, + ) + else: + # Check if should transition to FIRING + if not hasattr(curr_alert, "activeAt"): + # This shouldn't happen but handle it gracefully + curr_alert.activeAt = curr_alert.lastReceived + self.logger.debug( + "Alert missing activeAt, using lastReceived", + extra={ + "fingerprint": fingerprint, + "activeAt": curr_alert.lastReceived, + }, + ) + + if isinstance(curr_alert.activeAt, str): + activeAt = datetime.fromisoformat(curr_alert.activeAt) + else: + activeAt = curr_alert.activeAt + + # Convert duration string to timedelta + # Parse duration string like "1m", "5m", etc + try: + value = int(_for[:-1]) + unit = _for[-1] + except ValueError: + raise ValueError(f"Invalid duration format: {_for}") + if unit == "m": + duration = timedelta(minutes=value) + elif unit == "h": + duration = timedelta(hours=value) + elif unit == "s": + duration = timedelta(seconds=value) + else: + raise ValueError(f"Invalid duration unit: {unit}") + + curr_alert.lastReceived = datetime.now(timezone.utc).isoformat() + if now - activeAt >= duration: + curr_alert.status = AlertStatus.FIRING + self.logger.info( + "Alert transitioned to firing", + extra={ + "fingerprint": fingerprint, + "duration_elapsed": str(now - activeAt), + }, + ) + # Keep pending, update lastReceived + else: + curr_alert.status = AlertStatus.PENDING + self.logger.debug( + "Alert still pending", + extra={ + "fingerprint": fingerprint, + "time_remaining": str(duration - (now - activeAt)), + }, + ) + alerts_to_notify.append(curr_alert) + # if alert is RESOLVED, add it to the list + elif curr_alert.status == AlertStatus.RESOLVED.value: + if not alert_still_exists: + # if alert is not in current state, add it to the list + alerts_to_notify.append(curr_alert) + self.logger.debug( + "Keeping resolved alert", extra={"fingerprint": fingerprint} + ) + else: + # if its resolved and with _for, then it first need to be pending + curr_alert.status = AlertStatus.PENDING + curr_alert.lastReceived = datetime.now(timezone.utc).isoformat() + alerts_to_notify.append(curr_alert) + self.logger.info( + "Resolved alert back to pending", + extra={ + "fingerprint": fingerprint, + "last_received": curr_alert.lastReceived, + }, + ) + + # Handle new alerts not in current state + for fingerprint, new_alert in state_alerts_map.items(): + if fingerprint not in curr_alerts_map: + # Brand new alert - set to PENDING + new_alert.status = AlertStatus.PENDING + new_alert.activeAt = datetime.now(timezone.utc).isoformat() + alerts_to_notify.append(new_alert) + self.logger.info( + "New alert created", + extra={"fingerprint": fingerprint, "activeAt": new_alert.activeAt}, + ) + + self.logger.info( + "Completed state alert handling", + extra={"alerts_to_notify": len(alerts_to_notify)}, + ) + return alerts_to_notify + + def _handle_stateless_alerts( + self, stateless_alerts: list[AlertDto] + ) -> list[AlertDto]: + """ + Handle alerts without PENDING state - just FIRING or RESOLVED. + Args: + state_alerts: list of new alerts from current evaluation + Returns: + list of alerts that need state updates + """ + self.logger.info( + "Starting stateless alert handling", + extra={"num_alerts": len(stateless_alerts)}, + ) + alerts_to_notify = [] + search_engine = SearchEngine(tenant_id=self.context_manager.tenant_id) + curr_alerts = search_engine.search_alerts_by_cel( + cel_query=f"providerId == '{self.context_manager.workflow_id}'" + ) + self.logger.debug( + "Found existing alerts", extra={"num_curr_alerts": len(curr_alerts)} + ) + + # Create lookup by fingerprint for efficient comparison + curr_alerts_map = {alert.fingerprint: alert for alert in curr_alerts} + state_alerts_map = {alert.fingerprint: alert for alert in stateless_alerts} + self.logger.debug( + "Created alert maps", + extra={ + "curr_alerts_count": len(curr_alerts_map), + "state_alerts_count": len(state_alerts_map), + }, + ) + + # Handle existing alerts + for fingerprint, curr_alert in curr_alerts_map.items(): + alert_still_exists = fingerprint in state_alerts_map + self.logger.debug( + "Processing existing alert", + extra={ + "fingerprint": fingerprint, + "still_exists": alert_still_exists, + "current_status": curr_alert.status, + }, + ) + + if curr_alert.status == AlertStatus.FIRING.value: + if not alert_still_exists: + # Alert no longer exists, transition to RESOLVED + curr_alert.status = AlertStatus.RESOLVED + curr_alert.lastReceived = datetime.now(timezone.utc).isoformat() + alerts_to_notify.append(curr_alert) + self.logger.info( + "Alert resolved", + extra={ + "fingerprint": fingerprint, + "last_received": curr_alert.lastReceived, + }, + ) + + # Handle new alerts not in current state + for fingerprint, new_alert in state_alerts_map.items(): + if fingerprint not in curr_alerts_map: + # Brand new alert - set to FIRING immediately + new_alert.status = AlertStatus.FIRING + new_alert.lastReceived = datetime.now(timezone.utc).isoformat() + alerts_to_notify.append(new_alert) + self.logger.info( + "New alert firing", + extra={ + "fingerprint": fingerprint, + "last_received": new_alert.lastReceived, + }, + ) + + self.logger.info( + "Completed stateless alert handling", + extra={"alerts_to_notify": len(alerts_to_notify)}, + ) + return alerts_to_notify + + def _notify_alert(self, **kwargs): + self.logger.debug("Starting _notify_alert", extra={"kwargs": kwargs}) + context = self.context_manager.get_full_context() + alert_step = context.get("alert_step", None) + self.logger.debug("Got alert step", extra={"alert_step": alert_step}) + + # if alert_step is provided, get alert results + if alert_step: + alert_results = ( + context.get("steps", {}).get(alert_step, {}).get("results", {}) + ) + self.logger.debug( + "Got alert results from alert_step", + extra={"alert_results": alert_results}, + ) + # else, the last step results are the alert results + else: + # TODO: this is a temporary solution until we have a better way to get the alert results + alert_results = context.get("steps", {}).get("this", {}).get("results", {}) + self.logger.debug( + "Got alert results from 'this' step", + extra={"alert_results": alert_results}, + ) + + _if = kwargs.get("if", None) + _for = kwargs.get("for", None) + fingerprint_fields = kwargs.pop("fingerprint_fields", []) + self.logger.debug( + "Got condition parameters", + extra={"if": _if, "for": _for, "fingerprint_fields": fingerprint_fields}, + ) + + # if we need to check _if, handle the condition + trigger_alerts = [] + if _if: + self.logger.info( + "Processing alerts with 'if' condition", extra={"condition": _if} + ) + # if its multialert, handle each alert separately + if isinstance(alert_results, list): + self.logger.debug("Processing multiple alerts") + for alert in alert_results: + # render + _if_rendered = self.io_handler.render( + _if, safe=True, additional_context=alert + ) + self.logger.debug( + "Rendered if condition", + extra={"original": _if, "rendered": _if_rendered}, + ) + # evaluate + if not self._evaluate_if(_if, _if_rendered): + self.logger.debug( + "Alert did not meet condition", extra={"alert": alert} + ) + continue + trigger_alerts.append(alert) + self.logger.debug("Alert met condition", extra={"alert": alert}) + else: + pass + # if no _if, trigger all alerts + else: + self.logger.info("No 'if' condition - triggering all alerts") + trigger_alerts = alert_results + + # build the alert dtos + alert_dtos = [] + self.logger.info( + "Building alert DTOs", extra={"trigger_count": len(trigger_alerts)} + ) + # render alert data + for alert_results in trigger_alerts: + alert_data = copy.copy(kwargs.get("alert", {})) + # render alert data + rendered_alert_data = self.io_handler.render_context( + alert_data, additional_context=alert_results + ) + self.logger.debug( + "Rendered alert data", + extra={"original": alert_data, "rendered": rendered_alert_data}, + ) + # render tenrary expressions + rendered_alert_data = self._handle_tenrary_exressions(rendered_alert_data) + alert_dto = self._build_alert( + alert_results, fingerprint_fields, **rendered_alert_data + ) + alert_dtos.append(alert_dto) + self.logger.debug( + "Built alert DTO", extra={"fingerprint": alert_dto.fingerprint} + ) + + # sanity check - if more than one alert has the same fingerprint it means something is wrong + # this would happen if the fingerprint fields are not unique + fingerprints = {} + for alert in alert_dtos: + if fingerprints.get(alert.fingerprint): + self.logger.warning( + "Alert with the same fingerprint already exists - it means your fingerprint labels are not unique", + extra={"alert": alert, "fingerprint": alert.fingerprint}, + ) + fingerprints[alert.fingerprint] = True + + # if _for is provided, handle state alerts + if _for: + self.logger.info( + "Handling state alerts with 'for' condition", extra={"for": _for} + ) + # handle alerts with state + alerts = self._handle_state_alerts(_for, alert_dtos) + # else, handle all alerts + else: + self.logger.info("Handling stateless alerts") + alerts = self._handle_stateless_alerts(alert_dtos) + + # handle all alerts + self.logger.info( + "Processing final alerts", extra={"number_of_alerts": len(alerts)} + ) + process_event( + ctx={}, + tenant_id=self.context_manager.tenant_id, + provider_type="keep", + provider_id=self.context_manager.workflow_id, # so we can track the alerts that are created by this workflow + fingerprint=kwargs.get("fingerprint"), + api_key_name=None, + trace_id=None, + event=alerts, + ) + self.logger.info( + "Alerts processed successfully", extra={"alert_count": len(alerts)} + ) + return alerts + def _notify(self, **kwargs): if "workflow_to_update_yaml" in kwargs: workflow_to_update_yaml = kwargs["workflow_to_update_yaml"] @@ -147,50 +575,16 @@ def _notify(self, **kwargs): self.logger.exception( "Failed to create workflow", extra={ - "tenant_id": context_manager.tenant_id, - "workflow": workflow, + "tenant_id": self.context_manager.tenant_id, + "workflow": self.context_manager.workflow_id, }, ) raise ProviderException(f"Failed to create workflow: {e}") else: - fingerprint_fields = kwargs.get("fingerprint_fields", []) - alert = AlertDto( - name=kwargs["name"], - status=kwargs.get("status"), - lastReceived=kwargs.get("lastReceived"), - environment=kwargs.get("environment", "undefined"), - duplicateReason=kwargs.get("duplicateReason"), - service=kwargs.get("service"), - message=kwargs.get("message"), - description=kwargs.get("description"), - severity=kwargs.get("severity"), - pushed=True, - url=kwargs.get("url"), - labels=kwargs.get("labels"), - ticket_url=kwargs.get("ticket_url"), - fingerprint=kwargs.get("fingerprint"), - ) - # if fingerprint_fields are provided, calculate fingerprint - if fingerprint_fields: - # calculate fingerprint - self.logger.info( - "Calculating fingerprint for alert", - extra={"fingerprint_fields": fingerprint_fields}, - ) - alert.fingerprint = self.get_alert_fingerprint( - alert, fingerprint_fields - ) - - process_event( - {}, - self.context_manager.tenant_id, - "keep", - None, - kwargs.get("fingerprint"), - None, - None, - alert, - ) + self.logger.info("Notifying Alerts", extra={"kwargs": kwargs}) + alerts = self._notify_alert(**kwargs) + self.logger.info("Alerts notified") + return alerts def validate_config(self): """ @@ -207,6 +601,44 @@ def _format_alert( **event, ) + def _evaluate_if(self, if_conf, if_conf_rendered): + # Evaluate the condition string + from asteval import Interpreter + + aeval = Interpreter() + evaluated_if_met = aeval(if_conf_rendered) + # tb: when Shahar and I debugged, conclusion was: + if isinstance(evaluated_if_met, str): + evaluated_if_met = aeval(evaluated_if_met) + # if the evaluation failed, raise an exception + if aeval.error_msg: + self.logger.error( + f"Failed to evaluate if condition, you probably used a variable that doesn't exist. Condition: {if_conf}, Rendered: {if_conf_rendered}, Error: {aeval.error_msg}", + extra={ + "condition": if_conf, + "rendered": if_conf_rendered, + }, + ) + return False + return evaluated_if_met + + def _handle_tenrary_exressions(self, rendered_providers_parameters): + # SG: a hack to allow tenrary expressions + # e.g.'0.012899999999999995 > 0.9 ? "critical" : 0.012899999999999995 > 0.7 ? "warning" : "info"'' + # + # this is a hack and should be improved + for key, value in rendered_providers_parameters.items(): + try: + split_value = value.split(" ") + if split_value[1] == ">" and split_value[3] == "?": + import js2py + + rendered_providers_parameters[key] = js2py.eval_js(value) + # we don't care, it's not a tenrary expression + except Exception: + pass + return rendered_providers_parameters + if __name__ == "__main__": # Output debug messages diff --git a/keep/providers/victoriametrics_provider/victoriametrics_provider.py b/keep/providers/victoriametrics_provider/victoriametrics_provider.py index 4970a4d890..192294022d 100644 --- a/keep/providers/victoriametrics_provider/victoriametrics_provider.py +++ b/keep/providers/victoriametrics_provider/victoriametrics_provider.py @@ -466,7 +466,8 @@ def _query(self, query="", start="", end="", step="", queryType="", **kwargs: di ) try: response.raise_for_status() - return response.json() + results = response.json() + return results.get("data", {}).get("result", []) except Exception as e: self.logger.exception("Failed to perform instant query") raise e @@ -478,6 +479,8 @@ def _query(self, query="", start="", end="", step="", queryType="", **kwargs: di auth=auth, ) if response.status_code == 200: + results = response.json() + # return only the results return response.json() else: self.logger.error( diff --git a/keep/step/step.py b/keep/step/step.py index c55477dd57..b77d1272d0 100644 --- a/keep/step/step.py +++ b/keep/step/step.py @@ -56,10 +56,19 @@ def name(self): def continue_to_next_step(self): return self.__continue_to_next_step + def _dont_render(self): + # special case for Keep provider on _notify with "if" - it should render the parameters itself + return self.step_type == StepType.ACTION and "KeepProvider" in str( + self.provider.__class__ + ) + def run(self): try: if self.config.get("foreach"): did_action_run = self._run_foreach() + # special case for Keep provider on _notify with "if" - it should render the parameters itself + elif self._dont_render(): + did_action_run = self._run_single(dont_render=True) else: did_action_run = self._run_single() return did_action_run @@ -136,7 +145,7 @@ def _run_foreach(self): any_action_run = True return any_action_run - def _run_single(self): + def _run_single(self, dont_render=False): # Initialize all conditions conditions = [] @@ -307,12 +316,14 @@ def _run_single(self): # Last, run the action try: - rendered_providers_parameters = self.io_handler.render_context( - self.provider_parameters - ) - rendered_providers_parameters = self._handle_tenrary_exressions( - rendered_providers_parameters - ) + if not dont_render: + rendered_providers_parameters = self.io_handler.render_context( + self.provider_parameters + ) + # special case for Keep provider (alert evaluation engine) + # which needs to evaluate the provider parameters by itself + else: + rendered_providers_parameters = self.provider_parameters for curr_retry_count in range(self.__retry_count + 1): self.logger.info( @@ -360,23 +371,6 @@ def _run_single(self): return True - def _handle_tenrary_exressions(self, rendered_providers_parameters): - # SG: a hack to allow tenrary expressions - # e.g.'0.012899999999999995 > 0.9 ? "critical" : 0.012899999999999995 > 0.7 ? "warning" : "info"'' - # - # this is a hack and should be improved - for key, value in rendered_providers_parameters.items(): - try: - split_value = value.split(" ") - if split_value[1] == ">" and split_value[3] == "?": - import js2py - - rendered_providers_parameters[key] = js2py.eval_js(value) - # we don't care, it's not a tenrary expression - except Exception: - pass - return rendered_providers_parameters - class StepError(Exception): pass diff --git a/keep/workflowmanager/workflow.py b/keep/workflowmanager/workflow.py index 4572fdd40d..2151efc40f 100644 --- a/keep/workflowmanager/workflow.py +++ b/keep/workflowmanager/workflow.py @@ -110,9 +110,12 @@ def run_action(self, action: Step): ) action_stop = True except Exception as e: - self.logger.error(f"Action {action.name} failed: {e}", extra={ - "step_id": action.step_id, - }) + self.logger.error( + f"Action {action.name} failed: {e}", + extra={ + "step_id": action.step_id, + }, + ) action_ran = False action_error = f"Failed to run action {action.name}: {str(e)}" return action_ran, action_error, action_stop @@ -138,7 +141,9 @@ def run(self, workflow_execution_id): self.logger.info(f"Skipping disabled workflow {self.workflow_id}") return self.logger.info(f"Running workflow {self.workflow_id}") - self.context_manager.set_execution_context(workflow_execution_id) + self.context_manager.set_execution_context( + self.workflow_id, workflow_execution_id + ) try: self.run_steps() except StepError as e: diff --git a/pyproject.toml b/pyproject.toml index 7bd57677e9..75967b2285 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.34.13" +version = "0.35.0" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] diff --git a/tests/conftest.py b/tests/conftest.py index c3c8319486..dbf7ab3f30 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -33,6 +33,7 @@ original_request = requests.Session.request # noqa load_dotenv(find_dotenv()) + class PusherMock: def __init__(self): @@ -41,6 +42,7 @@ def __init__(self): def trigger(self, channel, event_name, data): self.triggers.append((channel, event_name, data)) + class WorkflowManagerMock: def __init__(self): @@ -193,6 +195,7 @@ def mysql_container(docker_ip, docker_services): @pytest.fixture def db_session(request, monkeypatch): # Create a database connection + print("Creating db session") os.environ["DB_ECHO"] = "true" if ( request diff --git a/tests/test_alert_evaluation.py b/tests/test_alert_evaluation.py new file mode 100644 index 0000000000..c899223225 --- /dev/null +++ b/tests/test_alert_evaluation.py @@ -0,0 +1,892 @@ +# Tests for Keep Rule Evaluation Engine + +from datetime import timedelta + +import pytest +from freezegun import freeze_time + +from keep.api.models.alert import AlertStatus +from keep.contextmanager.contextmanager import ContextManager +from keep.providers.keep_provider.keep_provider import KeepProvider +from keep.searchengine.searchengine import SearchEngine + +steps_dict = { + # this is the step that will be used to trigger the alert + "this": { + "provider_parameters": { + "query": "avg(rate(process_cpu_seconds_total))", + "queryType": "query", + }, + "results": [ + { + "metric": {}, + "value": [], + } + ], + }, +} + + +# generate a dictionary with multiple results +# that "mocks" results of victoriametrics +def genereate_multi_dict(job_prefix: str): + return { + "this": { + "provider_parameters": { + "query": "sum(rate(process_cpu_seconds_total)) by (job)", + "queryType": "query", + }, + "results": [ + { + "metric": {"job": "victoriametrics" + job_prefix}, + "value": [1737898557, "0.02330000000000003"], + }, + { + "metric": {"job": "vmagent" + job_prefix}, + "value": [1737898557, "0.008633333333333439"], + }, + { + "metric": {"job": "vmalert" + job_prefix}, + "value": [1737898557, "0.004199999999999969"], + }, + ], + } + } + + +@pytest.mark.parametrize( + ["context", "severity", "if_condition", "value"], + [ + ( + # should not trigger + { + "steps": steps_dict, + }, + None, + "{{ value.1 }} > 0.01", + [1737891487, "0.001"], + ), + ( + { + "steps": steps_dict, + }, + "info", + "{{ value.1 }} > 0.01", + [1737891487, "0.012699999999999975"], + ), + ( + { + "steps": steps_dict, + }, + "warning", + "{{ value.1 }} > 0.01", + [1737891487, "0.81"], + ), + ( + { + "steps": steps_dict, + }, + "critical", + "{{ value.1 }} > 0.01", + [1737891487, "0.91"], + ), + ], +) +def test_stateless_alerts_firing(db_session, context, severity, if_condition, value): + """Test alerts without 'for' duration - should go straight to FIRING""" + kwargs = { + "alert": { + "description": "[Single] CPU usage is high on the VM (created from VM metric)", + "labels": { + "app": "myapp", + "environment": "production", + "owner": "alice", + "service": "api", + "team": "devops", + }, + "name": "High CPU Usage", + "severity": '{{ value.1 }} > 0.9 ? "critical" : {{ value.1 }} > 0.7 ? "warning" : "info"', + }, + "if": if_condition, + } + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context["steps"]["this"]["results"][0]["value"] = value + context_manager.context = context + context_manager.get_full_context = lambda: context + keep_provider = KeepProvider(context_manager, "test", {}) + result = keep_provider._notify(**kwargs) + + # alert should not trigger if severity is None + if not severity: + return + + assert len(result) == 1 + + alert = result[0] + assert alert.status == AlertStatus.FIRING + assert alert.name == "High CPU Usage" + assert ( + alert.description + == "[Single] CPU usage is high on the VM (created from VM metric)" + ) + assert alert.severity == severity + assert alert.labels == { + "app": "myapp", + "environment": "production", + "owner": "alice", + "service": "api", + "team": "devops", + } + + +@pytest.mark.parametrize( + ["context", "severity", "if_condition", "firing_value", "resolved_value"], + [ + ( + # should not trigger + { + "steps": steps_dict, + }, + None, + "{{ value.1 }} > 0.01", + [1737891487, "0.001"], + [1737891487, "0.001"], + ), + ( + { + "steps": steps_dict, + }, + "info", + "{{ value.1 }} > 0.01", + [1737891487, "0.012699999999999975"], + [1737891487, "0.001"], + ), + ( + { + "steps": steps_dict, + }, + "warning", + "{{ value.1 }} > 0.01", + [1737891487, "0.81"], + [1737891487, "0.001"], + ), + ( + { + "steps": steps_dict, + }, + "critical", + "{{ value.1 }} > 0.01", + [1737891487, "0.91"], + [1737891487, "0.001"], + ), + ], +) +def test_stateless_alerts_resolved( + db_session, context, severity, if_condition, firing_value, resolved_value +): + """Test that alerts transition from FIRING to RESOLVED when condition no longer met""" + kwargs = { + "alert": { + "description": "[Single] CPU usage is high on the VM (created from VM metric)", + "labels": { + "app": "myapp", + "environment": "production", + "owner": "alice", + "service": "api", + "team": "devops", + }, + "name": "High CPU Usage", + "severity": '{{ value.1 }} > 0.9 ? "critical" : {{ value.1 }} > 0.7 ? "warning" : "info"', + }, + "if": if_condition, + } + + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context["steps"]["this"]["results"][0]["value"] = firing_value + context_manager.context = context + context_manager.get_full_context = lambda: context + keep_provider = KeepProvider(context_manager, "test", {}) + # First trigger the alert with firing value + result = keep_provider._notify(**kwargs) + + # Verify initial firing state + if not severity: + assert not result + return + + assert len(result) == 1 + firing_alert = result[0] + assert firing_alert.status == AlertStatus.FIRING + assert firing_alert.severity == severity + + # Now update with resolved value + context["steps"]["this"]["results"][0]["value"] = resolved_value + context_manager.get_full_context = lambda: context + result = keep_provider._notify(**kwargs) + # Verify alert is resolved + assert len(result) == 1 + resolved_alert = result[0] + assert resolved_alert.status == AlertStatus.RESOLVED + # make sure the lastReceived timestamp is greater than the firing timestamp + assert resolved_alert.lastReceived > firing_alert.lastReceived + + +@pytest.mark.parametrize( + "context", + [ + { + "steps": genereate_multi_dict(""), + } + ], +) +def test_statless_alerts_multiple_alerts(db_session, context): + """Test that multiple alerts are created when the condition is met""" + kwargs = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + } + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context_manager.context = context + context_manager.get_full_context = lambda: context + provider = KeepProvider(context_manager, "test", {}) + result = provider._notify(**kwargs) + assert len(result) == 3 + + # Check victoriametrics alert + vm_alert = next(a for a in result if a.labels["job"] == "victoriametrics") + assert vm_alert.status == AlertStatus.FIRING + assert vm_alert.name == "High CPU Usage - victoriametrics" + assert vm_alert.description == "CPU usage is high on victoriametrics" + assert vm_alert.severity == "critical" + + # Check vmagent alert + vmagent_alert = next(a for a in result if a.labels["job"] == "vmagent") + assert vmagent_alert.status == AlertStatus.FIRING + assert vmagent_alert.name == "High CPU Usage - vmagent" + assert vmagent_alert.description == "CPU usage is high on vmagent" + assert vmagent_alert.severity == "info" + + # Check vmalert alert + vmalert_alert = next(a for a in result if a.labels["job"] == "vmalert") + assert vmalert_alert.status == AlertStatus.FIRING + assert vmalert_alert.name == "High CPU Usage - vmalert" + assert vmalert_alert.description == "CPU usage is high on vmalert" + assert vmalert_alert.severity == "info" + + +@pytest.mark.parametrize( + "context", + [ + { + "steps": genereate_multi_dict(""), + } + ], +) +def test_stateless_alerts_multiple_alerts_resolved(db_session, context): + """Test that multiple alerts are resolved when the condition is no longer met""" + kwargs = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + } + + # First create firing alerts + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context_manager.context = context + context_manager.get_full_context = lambda: context + provider = KeepProvider(context_manager, "test", {}) + result = provider._notify(**kwargs) + assert len(result) == 3 + firing_alerts = {a.labels["job"]: a for a in result} + + # Update values to be below threshold + context["steps"]["this"]["results"] = [ + { + "metric": {"job": "victoriametrics"}, + "value": [1737898558, "0.0001"], + }, + { + "metric": {"job": "vmagent"}, + "value": [1737898558, "0.0001"], + }, + { + "metric": {"job": "vmalert"}, + "value": [1737898558, "0.0001"], + }, + ] + + # Check resolved alerts + result = provider._notify(**kwargs) + assert len(result) == 3 + + for alert in result: + assert alert.status == AlertStatus.RESOLVED + assert alert.lastReceived > firing_alerts[alert.labels["job"]].lastReceived + assert alert.labels["environment"] == "production" + assert alert.labels["job"] in ["victoriametrics", "vmagent", "vmalert"] + + +#### Stateful Alerts #### + + +@pytest.mark.parametrize( + "context", + [ + { + "steps": genereate_multi_dict("2"), + } + ], +) +def test_stateful_alerts_firing(db_session, context): + """Test that multiple alerts transition from pending to firing after time condition is met""" + kwargs = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "1m", + } + + # First create pending alerts + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context_manager.context = context + context_manager.get_full_context = lambda: context + provider = KeepProvider(context_manager, "test", {}) + + # Get initial state + with freeze_time("2024-01-26 10:00:00") as frozen_time: + result = provider._notify(**kwargs) + assert len(result) == 3 + # Check all alerts are pending + for alert in result: + assert alert.status == AlertStatus.PENDING + assert alert.labels["environment"] == "production" + assert alert.labels["job"] in ["victoriametrics2", "vmagent2", "vmalert2"] + + # Store initial alerts + pending_alerts = {a.labels["job"]: a for a in result} + + # Advance time by 1 minute + frozen_time.tick(delta=timedelta(minutes=1)) + + # Check alerts transition to firing + result = provider._notify(**kwargs) + assert len(result) == 3 + + # Verify alerts are now active + for alert in result: + assert alert.status == AlertStatus.FIRING + assert alert.lastReceived > pending_alerts[alert.labels["job"]].lastReceived + assert alert.labels["environment"] == "production" + assert alert.labels["job"] in ["victoriametrics2", "vmagent2", "vmalert2"] + + +@pytest.mark.parametrize( + "context", + [ + { + "steps": genereate_multi_dict("3"), + } + ], +) +def test_stateful_alerts_resolved(db_session, context): + """Test that multiple alerts transition from firing to resolved after time condition is met""" + kwargs = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "1m", + } + + # First create pending alerts + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context_manager.context = context + context_manager.get_full_context = lambda: context + provider = KeepProvider(context_manager, "test", {}) + + # Get initial state + with freeze_time("2024-01-26 10:00:00") as frozen_time: + result = provider._notify(**kwargs) + assert len(result) == 3 + # Check all alerts are pending + for alert in result: + assert alert.status == AlertStatus.PENDING + assert alert.labels["environment"] == "production" + assert alert.labels["job"] in ["victoriametrics3", "vmagent3", "vmalert3"] + + # Store initial alerts + pending_alerts = {a.labels["job"]: a for a in result} + + # Advance time by 1 minute + frozen_time.tick(delta=timedelta(minutes=1)) + + # Update values to be below threshold + context["steps"]["this"]["results"] = [ + { + "metric": {"job": "victoriametrics3"}, + "value": [1737898558, "0.0001"], + }, + { + "metric": {"job": "vmagent3"}, + "value": [1737898558, "0.0001"], + }, + { + "metric": {"job": "vmalert3"}, + "value": [1737898558, "0.0001"], + }, + ] + # Check alerts transition to firing + result = provider._notify(**kwargs) + assert len(result) == 3 + + # Verify alerts are now active + for alert in result: + assert alert.status == AlertStatus.RESOLVED + assert alert.lastReceived > pending_alerts[alert.labels["job"]].lastReceived + assert alert.labels["environment"] == "production" + assert alert.labels["job"] in ["victoriametrics3", "vmagent3", "vmalert3"] + + +@pytest.mark.parametrize( + "context", + [ + { + "steps": genereate_multi_dict("4"), + } + ], +) +def test_stateful_alerts_multiple_alerts(db_session, context): + # test that multiple stateful alerts are created when the condition is met + kwargs = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "1m", + } + # create few alerts + with freeze_time("2024-01-26 10:00:00") as frozen_time: + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context_manager.context = context + context_manager.get_full_context = lambda: context + provider = KeepProvider(context_manager, "test", {}) + result = provider._notify(**kwargs) + assert len(result) == 3 + + # all of them should be pending + for alert in result: + assert alert.status == AlertStatus.PENDING + + # now create few more alerts + more_alerts = genereate_multi_dict("6") + context["steps"] = more_alerts + context_manager.get_full_context = lambda: context + result = provider._notify(**kwargs) + assert len(result) == 6 + + # 3 of them should be RESOLVED (since they are not exists in the results) and 3 should be FIRING + for alert in result: + if alert.labels["job"] in ["victoriametrics6", "vmagent6", "vmalert6"]: + assert alert.status == AlertStatus.PENDING + else: + assert alert.status == AlertStatus.RESOLVED + + # now we should have 6 alerts on pending + search_engine = SearchEngine(tenant_id=context_manager.tenant_id) + alerts = search_engine.search_alerts_by_cel(cel_query="1 == 1") + assert len(alerts) == 6 + + # now let's advance time by 2 minute + frozen_time.tick(delta=timedelta(minutes=2)) + + result = provider._notify(**kwargs) + # 3 should be FIRING and 3 should be RESOLVED + assert len(result) == 6 + for alert in result: + if alert.labels["job"] in ["victoriametrics6", "vmagent6", "vmalert6"]: + assert alert.status == AlertStatus.FIRING + else: + assert alert.status == AlertStatus.RESOLVED + + +@pytest.mark.parametrize( + "context", + [ + { + "steps": genereate_multi_dict("5"), + } + ], +) +def test_stateful_alerts_multiple_alerts_2(db_session, context): + # test that multiple stateful alerts are created when the condition is met + kwargs = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "1m", + } + # create few alerts + with freeze_time("2024-01-26 10:00:00") as frozen_time: + context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") + context_manager.context = context + context_manager.get_full_context = lambda: context + provider = KeepProvider(context_manager, "test", {}) + result = provider._notify(**kwargs) + assert len(result) == 3 + + # all of them should be pending + for alert in result: + assert alert.status == AlertStatus.PENDING + + # now let's advance time by 2 minute + frozen_time.tick(delta=timedelta(seconds=30)) + + result = provider._notify(**kwargs) + # should be still pending + assert len(result) == 3 + for alert in result: + assert alert.status == AlertStatus.PENDING + + # now let's advance time by 1 minute + frozen_time.tick(delta=timedelta(minutes=1)) + + result = provider._notify(**kwargs) + # should be FIRING + assert len(result) == 3 + for alert in result: + assert alert.status == AlertStatus.FIRING + + +def test_state_alerts_multiple_firing_transitions(db_session): + """Test scenario where some alerts go FIRING while others remain PENDING + - Create 6 alerts all PENDING + - Set 3 alerts to pass 'for' duration threshold + - Verify 3 alerts go FIRING, 3 stays PENDING + """ + # test that multiple stateful alerts are created when the condition is met + context1 = { + "steps": genereate_multi_dict("ctx1"), + } + context2 = { + "steps": genereate_multi_dict("ctx2"), + } + kwargs1 = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "1m", + } + kwargs2 = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "5m", + } + # create few alerts + with freeze_time("2024-01-26 10:00:00") as frozen_time: + context_manager1 = ContextManager( + tenant_id="test", workflow_id="test-workflow-1" + ) + context_manager1.context = context1 + context_manager1.get_full_context = lambda: context1 + provider1 = KeepProvider(context_manager1, "test", {}) + + context_manager2 = ContextManager( + tenant_id="test", workflow_id="test-workflow-2" + ) + context_manager2.context = context2 + context_manager2.get_full_context = lambda: context2 + provider2 = KeepProvider(context_manager2, "test", {}) + + # create 3 alerts + result = provider1._notify(**kwargs1) + assert len(result) == 3 + + # all of them should be pending + for alert in result: + assert alert.status == AlertStatus.PENDING + + # create another 3 alerts + result = provider2._notify(**kwargs2) + assert len(result) == 3 + for alert in result: + assert alert.status == AlertStatus.PENDING + + # now let's advance time by 1 minute + frozen_time.tick(delta=timedelta(minutes=1)) + + result1 = provider1._notify(**kwargs1) + result2 = provider2._notify(**kwargs2) + # should be FIRING + assert len(result1) == 3 + for alert in result1: + assert alert.status == AlertStatus.FIRING + + # should be still pending (cuz only 1m passed and not 5m) + assert len(result2) == 3 + for alert in result2: + assert alert.status == AlertStatus.PENDING + + # now let's advance time by 5 minutes + frozen_time.tick(delta=timedelta(minutes=5)) + + result1 = provider1._notify(**kwargs1) + result2 = provider2._notify(**kwargs2) + # should be FIRING + assert len(result1) == 3 + for alert in result1: + assert alert.status == AlertStatus.FIRING + + assert len(result2) == 3 + for alert in result2: + assert alert.status == AlertStatus.FIRING + + +@pytest.mark.parametrize( + "context", + [ + { + "steps": genereate_multi_dict("3"), + } + ], +) +def test_make_sure_two_different_workflows_have_different_fingerprints( + db_session, context +): + """Test that two different workflows have different fingerprints (this is because different workflows have different workflowId which is used in the fingerprint calculation)""" + kwargs1 = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + } + + kwargs2 = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + } + + context_manager1 = ContextManager(tenant_id="test", workflow_id="test-workflow-1") + context_manager1.context = context + context_manager1.get_full_context = lambda: context + provider1 = KeepProvider(context_manager1, "test", {}) + + context_manager2 = ContextManager(tenant_id="test", workflow_id="test-workflow-2") + context_manager2.context = context + context_manager2.get_full_context = lambda: context + provider2 = KeepProvider(context_manager2, "test", {}) + + result1 = provider1._notify(**kwargs1) + result2 = provider2._notify(**kwargs2) + + assert len(result1) == 3 + assert len(result2) == 3 + + assert set([alert.fingerprint for alert in result1]) != set( + [alert.fingerprint for alert in result2] + ) + + +def test_state_alerts_staggered_resolution(db_session): + """Test alerts resolving at different times + - Create 3 FIRING alerts + - Remove 1 alert from results + - Verify it goes RESOLVED while others stay FIRING + - Remove another alert + - Verify correct state transitions + """ + context1 = { + "steps": genereate_multi_dict("staggered"), + } + + kwargs1 = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "1m", + } + # create few alerts + with freeze_time("2024-01-26 10:00:00") as frozen_time: + context_manager1 = ContextManager( + tenant_id="test", workflow_id="test-workflow-1" + ) + context_manager1.context = context1 + context_manager1.get_full_context = lambda: context1 + provider1 = KeepProvider(context_manager1, "test", {}) + + result1 = provider1._notify(**kwargs1) + assert len(result1) == 3 + for alert in result1: + assert alert.status == AlertStatus.PENDING + + # now let's advance time by 1 minute and remove 1 alert + frozen_time.tick(delta=timedelta(minutes=1)) + + # remove 1 alert + context1["steps"]["this"]["results"] = [ + alert + for alert in context1["steps"]["this"]["results"] + if alert["metric"]["job"] != "vmagentstaggered" + ] + context_manager1.context = context1 + context_manager1.get_full_context = lambda: context1 + result1 = provider1._notify(**kwargs1) + assert len(result1) == 3 + for alert in result1: + if alert.labels["job"] == "vmagentstaggered": + assert alert.status == AlertStatus.RESOLVED + else: + assert alert.status == AlertStatus.FIRING + + +def test_state_alerts_flapping(db_session): + """Test alert flapping behavior + - Create alert in PENDING + - Remove it before 'for' duration -> should be dropped + - Reintroduce alert -> should start fresh PENDING + - Test this pattern multiple times + """ + context1 = { + "steps": genereate_multi_dict("flapping"), + } + + kwargs1 = { + "alert": { + "description": "CPU usage is high on {{ metric.job }}", + "labels": { + "job": "{{ metric.job }}", + "environment": "production", + }, + "name": "High CPU Usage - {{ metric.job }}", + "severity": '{{ value.1 }} > 0.02 ? "critical" : {{ value.1 }} > 0.01 ? "warning" : "info"', + }, + "if": "{{ value.1 }} > 0.001", + "for": "1m", + } + # create few alerts + with freeze_time("2024-01-26 10:00:00") as frozen_time: + context_manager1 = ContextManager( + tenant_id="test", workflow_id="test-workflow-1" + ) + context_manager1.context = context1 + context_manager1.get_full_context = lambda: context1 + provider1 = KeepProvider(context_manager1, "test", {}) + + result1 = provider1._notify(**kwargs1) + assert len(result1) == 3 + for alert in result1: + assert alert.status == AlertStatus.PENDING + + # now let's advance time by 30 seconds (still pending) + frozen_time.tick(delta=timedelta(seconds=30)) + # and remove 1 alert + removed_alert = [ + alert + for alert in context1["steps"]["this"]["results"] + if alert["metric"]["job"] == "vmagentflapping" + ][0] + context1["steps"]["this"]["results"] = [ + alert + for alert in context1["steps"]["this"]["results"] + if alert["metric"]["job"] != "vmagentflapping" + ] + context_manager1.context = context1 + context_manager1.get_full_context = lambda: context1 + result1 = provider1._notify(**kwargs1) + # so now we have 2 alerts pending and 1 alert resolved + assert len(result1) == 3 + for alert in result1: + if alert.labels["job"] == "vmagentflapping": + assert alert.status == AlertStatus.RESOLVED + else: + assert alert.status == AlertStatus.PENDING + + # now let's advance time by 1 minute and return the alert + frozen_time.tick(delta=timedelta(minutes=1)) + context1["steps"]["this"]["results"].append(removed_alert) + context_manager1.context = context1 + context_manager1.get_full_context = lambda: context1 + # it should be 2 firing and 1 pending + result1 = provider1._notify(**kwargs1) + assert len(result1) == 3 + for alert in result1: + if alert.labels["job"] == "vmagentflapping": + assert alert.status == AlertStatus.PENDING + else: + assert alert.status == AlertStatus.FIRING From 30a450793c83c60ad56a7261c256c232d4dba560 Mon Sep 17 00:00:00 2001 From: Tal Date: Mon, 27 Jan 2025 15:14:21 +0200 Subject: [PATCH 04/39] fix(ui): timeline endless loading when no alerts (#3153) --- .github/workflows/auto-resolve-keep.yml | 4 ++-- .../app/(keep)/incidents/[id]/chat/incident-chat.tsx | 3 +-- .../(keep)/incidents/[id]/incident-layout-client.tsx | 2 +- .../incidents/[id]/timeline/incident-timeline.tsx | 8 ++++---- keep-ui/components/ui/EmptyStateCard.tsx | 10 ++++++---- keep-ui/components/ui/ResizableColumns.tsx | 2 +- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.github/workflows/auto-resolve-keep.yml b/.github/workflows/auto-resolve-keep.yml index 8ec8138e15..a694a5f4fc 100644 --- a/.github/workflows/auto-resolve-keep.yml +++ b/.github/workflows/auto-resolve-keep.yml @@ -61,7 +61,7 @@ jobs: url: "https://api.keephq.dev/incidents/${{ steps.set_ids.outputs.final_incident_id }}/enrich" method: "POST" customHeaders: '{"X-API-KEY": "${{ secrets.KEEP_API_KEY }}", "Content-Type": "application/json"}' - data: '{"enrichments":{"incident_title":"${{ github.event.pull_request.title || ''Manual resolution'' }}","incident_url":"${{ github.event.pull_request.html_url || github.server_url }}//${{ github.repository }}/actions/runs/${{ github.run_id }}", "incident_id": "${{ github.run_id }}", "incident_provider": "github"}}' + data: '{"enrichments":{"incident_title":"${{ github.event.pull_request.title || ''Manual resolution'' }}","incident_url":"${{ github.event.pull_request.html_url || format(''{0}/{1}/actions/runs/{2}'', github.server_url, github.repository, github.run_id) }}", "incident_id": "${{ github.run_id }}", "incident_provider": "github"}}' - name: Auto resolve Keep alert if: | @@ -72,4 +72,4 @@ jobs: url: "https://api.keephq.dev/alerts/enrich?dispose_on_new_alert=true" method: "POST" customHeaders: '{"Content-Type": "application/json", "X-API-KEY": "${{ secrets.KEEP_API_KEY }}"}' - data: '{"enrichments":{"status":"${{ inputs.status || ''resolved'' }}","dismissed":false,"dismissUntil":"","note":"${{ github.event.pull_request.title || ''Manual resolution'' }}","ticket_url":"${{ github.event.pull_request.html_url || github.server_url }}//${{ github.repository }}/actions/runs/${{ github.run_id }}"},"fingerprint":"${{ steps.set_ids.outputs.final_alert_fingerprint }}"}' + data: '{"enrichments":{"status":"${{ inputs.status || ''resolved'' }}","dismissed":false,"dismissUntil":"","note":"${{ github.event.pull_request.title || ''Manual resolution'' }}","ticket_url":"${{ github.event.pull_request.html_url || format(''{0}/{1}/actions/runs/{2}'', github.server_url, github.repository, github.run_id) }}"},"fingerprint":"${{ steps.set_ids.outputs.final_alert_fingerprint }}"}' diff --git a/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx b/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx index 1f023a90d5..4543f51164 100644 --- a/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx +++ b/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx @@ -568,8 +568,7 @@ export function IncidentChat({ return ( router.push("/alerts/feed")} /> ); diff --git a/keep-ui/app/(keep)/incidents/[id]/incident-layout-client.tsx b/keep-ui/app/(keep)/incidents/[id]/incident-layout-client.tsx index 9a993ac51a..3ba696f6e9 100644 --- a/keep-ui/app/(keep)/incidents/[id]/incident-layout-client.tsx +++ b/keep-ui/app/(keep)/incidents/[id]/incident-layout-client.tsx @@ -44,7 +44,7 @@ export function IncidentLayoutClient({ /> } - initialLeftWidth={60} + initialLeftWidth={65} /> ) : (
{children}
diff --git a/keep-ui/app/(keep)/incidents/[id]/timeline/incident-timeline.tsx b/keep-ui/app/(keep)/incidents/[id]/timeline/incident-timeline.tsx index 0e048775e5..7ac903814f 100644 --- a/keep-ui/app/(keep)/incidents/[id]/timeline/incident-timeline.tsx +++ b/keep-ui/app/(keep)/incidents/[id]/timeline/incident-timeline.tsx @@ -283,9 +283,9 @@ export default function IncidentTimeline({ // TODO: Load data on server side // Loading state is true if the data is not loaded and there is no error for smoother loading state on initial load - const alertsLoading = _alertsLoading || (!alerts && !alertsError); - const auditEventsLoading = - _auditEventsLoading || (!auditEvents && !auditEventsError); + // const alertsLoading = _alertsLoading || (!alerts && !alertsError); + // const auditEventsLoading = + // _auditEventsLoading || (!auditEvents && !auditEventsError); const [selectedEvent, setSelectedEvent] = useState(null); @@ -358,7 +358,7 @@ export default function IncidentTimeline({ return {}; }, [auditEvents, alerts]); - if (auditEventsLoading || alertsLoading) { + if (_auditEventsLoading || _alertsLoading) { return ( diff --git a/keep-ui/components/ui/EmptyStateCard.tsx b/keep-ui/components/ui/EmptyStateCard.tsx index 43cb90d84e..5559c57da5 100644 --- a/keep-ui/components/ui/EmptyStateCard.tsx +++ b/keep-ui/components/ui/EmptyStateCard.tsx @@ -10,7 +10,7 @@ export function EmptyStateCard({ }: { title: string; description: string; - buttonText: string; + buttonText?: string; onClick: (e: React.MouseEvent) => void; className?: string; }) { @@ -29,9 +29,11 @@ export function EmptyStateCard({

{description}

- + {buttonText && ( + + )}
); diff --git a/keep-ui/components/ui/ResizableColumns.tsx b/keep-ui/components/ui/ResizableColumns.tsx index 128778e09d..8b10b67e1c 100644 --- a/keep-ui/components/ui/ResizableColumns.tsx +++ b/keep-ui/components/ui/ResizableColumns.tsx @@ -62,7 +62,7 @@ const ResizableColumns = ({ onMouseDown={startDragging} /> -
{rightChild}
+
{rightChild}
); }; From 8b0d98dd6f8944af8c6d537c389f7dc56b449b46 Mon Sep 17 00:00:00 2001 From: Ezhil Shanmugham Date: Mon, 27 Jan 2025 19:07:33 +0530 Subject: [PATCH 05/39] feat: checkly provider (#3154) Co-authored-by: Shahar Glazner --- README.md | 6 + docs/images/checkly-provider_1.png | Bin 0 -> 90773 bytes docs/images/checkly-provider_10.png | Bin 0 -> 81375 bytes docs/images/checkly-provider_11.png | Bin 0 -> 90677 bytes docs/images/checkly-provider_12.png | Bin 0 -> 89452 bytes docs/images/checkly-provider_2.png | Bin 0 -> 100975 bytes docs/images/checkly-provider_3.png | Bin 0 -> 106438 bytes docs/images/checkly-provider_4.png | Bin 0 -> 67112 bytes docs/images/checkly-provider_5.png | Bin 0 -> 103104 bytes docs/images/checkly-provider_6.png | Bin 0 -> 141681 bytes docs/images/checkly-provider_7.png | Bin 0 -> 128493 bytes docs/images/checkly-provider_8.png | Bin 0 -> 111161 bytes docs/images/checkly-provider_9.png | Bin 0 -> 118433 bytes docs/mint.json | 1 + .../documentation/checkly-provider.mdx | 124 +++++++++ docs/providers/overview.mdx | 6 + keep-ui/public/icons/checkly-icon.png | Bin 0 -> 8684 bytes keep/providers/checkly_provider/__init__.py | 0 .../providers/checkly_provider/alerts_mock.py | 21 ++ .../checkly_provider/checkly_provider.py | 258 ++++++++++++++++++ 20 files changed, 416 insertions(+) create mode 100644 docs/images/checkly-provider_1.png create mode 100644 docs/images/checkly-provider_10.png create mode 100644 docs/images/checkly-provider_11.png create mode 100644 docs/images/checkly-provider_12.png create mode 100644 docs/images/checkly-provider_2.png create mode 100644 docs/images/checkly-provider_3.png create mode 100644 docs/images/checkly-provider_4.png create mode 100644 docs/images/checkly-provider_5.png create mode 100644 docs/images/checkly-provider_6.png create mode 100644 docs/images/checkly-provider_7.png create mode 100644 docs/images/checkly-provider_8.png create mode 100644 docs/images/checkly-provider_9.png create mode 100644 docs/providers/documentation/checkly-provider.mdx create mode 100644 keep-ui/public/icons/checkly-icon.png create mode 100644 keep/providers/checkly_provider/__init__.py create mode 100644 keep/providers/checkly_provider/alerts_mock.py create mode 100644 keep/providers/checkly_provider/checkly_provider.py diff --git a/README.md b/README.md index 184900f418..07e6c3b31a 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,12 @@ Cilium + + + Checkly
+ Checkly +
+ CloudWatch
diff --git a/docs/images/checkly-provider_1.png b/docs/images/checkly-provider_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f797b2e039e86ea0289cf52a29425ce8600fe7fb GIT binary patch literal 90773 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
MDo5l=&zQwUv_f|Z=>3)OnEcz>igYk*L6II?RC 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 literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_10.png b/docs/images/checkly-provider_10.png new file mode 100644 index 0000000000000000000000000000000000000000..0628ccd7bc1c909d270d46305fb8eb66a3005b29 GIT binary patch literal 81375 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

G6d-%-Cw=j5m0ofZF87aM-`|-5`)XK=|`YR{6 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 Y{>;LAdHbvnlRqR$aoGzgqStQyH+|%AVE_OC literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_11.png b/docs/images/checkly-provider_11.png new file mode 100644 index 0000000000000000000000000000000000000000..4dfa318c6fdb5a81074c4e793a095856d3467205 GIT binary patch literal 90677 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≦%I}fUy`F88uuS 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

lbT_Vz_ahWEzsFKb-<3gxxMjsG89 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�?WNW=~LL`*-BwRfcEm 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

geBUceadIfafbyykS~fvz_qW0MqNGw?fll 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 k1XZM5*IQA?guUH(2s>;2k?kxeg+akx~^ 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%0D&DwtI!AhJVzCG~U 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 Z^D>7Z#QP6Vl`r0xkx&#bdi&w){{!Q|nJ@qV literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_4.png b/docs/images/checkly-provider_4.png new file mode 100644 index 0000000000000000000000000000000000000000..58ae31ad1d64ffd0394384b9a96da02874e31bef GIT binary patch literal 67112 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 IR38QX3+=ea*#H0l literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_5.png b/docs/images/checkly-provider_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3946e92c887816fc3300f5046a75a9a9d2dfef GIT binary patch literal 103104 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


FVNAP<#*&=Nf({{ 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 literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_6.png b/docs/images/checkly-provider_6.png new file mode 100644 index 0000000000000000000000000000000000000000..71cc7483a085baf4190e82025aed7d6bb1ab6a16 GIT binary patch literal 141681 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�^z=pCqNh(;(s{H%WPblq?SsiLwQQdIYS^v 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 literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_7.png b/docs/images/checkly-provider_7.png new file mode 100644 index 0000000000000000000000000000000000000000..894a5f3c33a4428a6c58fc18ca50888c49bb7cd2 GIT binary patch literal 128493 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

;RD4L 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_9.png b/docs/images/checkly-provider_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c9205b53f0cccb89583f5def8f1dd119e9337723 GIT binary patch literal 118433 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 (lCop`XD!mPp^t7?YWr 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

N)np;`1zB~&>Pmjyj)9qa3 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 literal 0 HcmV?d00001 diff --git a/docs/mint.json b/docs/mint.json index 53b41543ee..f90c61e298 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -137,6 +137,7 @@ "providers/documentation/bigquery-provider", "providers/documentation/centreon-provider", "providers/documentation/checkmk-provider", + "providers/documentation/checkly-provider", "providers/documentation/cilium-provider", "providers/documentation/clickhouse-provider", "providers/documentation/cloudwatch-provider", diff --git a/docs/providers/documentation/checkly-provider.mdx b/docs/providers/documentation/checkly-provider.mdx new file mode 100644 index 0000000000..19a502f3c8 --- /dev/null +++ b/docs/providers/documentation/checkly-provider.mdx @@ -0,0 +1,124 @@ +--- +title: 'Checkly' +sidebarTitle: 'Checkly Provider' +description: 'StatusCake allows you to receive alerts from Checkly using API endpoints as well as webhooks' +--- + +## Authentication Parameters + +The Checkly provider offers two ways to authenticate: + +- `Checkly API Key` - This is the API key created in the User Settings of your Checkly account and is used to authenticate requests to the Checkly API. +- `Checkly Account ID` - This is the account ID of your Checkly account. + +## Connecting Checkly to Keep + +1. Open Checkly dashboard and click on your profile picture in the top right corner. + +2. Click on `User Settings`. + + + + + +3. Open the `API Keys` tab and click on `Create API Key` to generate a new API key. + + + + + +4. Copy the API key. + +5. Open `General` tab under Account Settings and copy the `Account ID`. + + + + + +6. Go to Keep, add Checkly as a provider and enter the API key and Account ID in the respective fields and click on `Connect`. + +## Webhooks Integration + +1. Open Checkly dashboard and open `Alerts` tab in the left sidebar. + + + + + +2. Click on `Add more channels` + + + + + +3. Select `Webhook` from the list of available channels. + + + + + +4. Enter a name for the webhook, select the method as `POST` + +5. Enter [https://api.keephq.dev/alerts/event/checkly](https://api.keephq.dev/alerts/event/checkly) as the URL. + +6. Copy the below snippet and paste in the `Body` of Webhook. Refer the screenshot below for reference. + +```json +{ + "event": "{{ALERT_TITLE}}", + "alert_type": "{{ALERT_TYPE}}", + "check_name": "{{CHECK_NAME}}", + "group_name": "{{GROUP_NAME}}", + "check_id": "{{CHECK_ID}}", + "check_type": "{{CHECK_TYPE}}", + "check_result_id": "{{CHECK_RESULT_ID}}", + "check_error_message": "{{CHECK_ERROR_MESSAGE}}", + "response_time": "{{RESPONSE_TIME}}", + "api_check_response_status_code": "{{API_CHECK_RESPONSE_STATUS_CODE}}", + "api_check_response_status_text": "{{API_CHECK_RESPONSE_STATUS_TEXT}}", + "run_location": "{{RUN_LOCATION}}", + "ssl_days_remaining": "{{SSL_DAYS_REMAINING}}", + "ssl_check_domain": "{{SSL_CHECK_DOMAIN}}", + "started_at": "{{STARTED_AT}}", + "tags": "{{TAGS}}", + "link": "{{RESULT_LINK}}", + "region": "{{REGION}}", + "uuid": "{{$UUID}}" +} +``` + + + + + +8. Go to Headers tab and add a new header with key as `X-API-KEY` and create a new API key in Keep and paste it as the value and save the webhook. + + + + + +9. Follow the below steps to create a new API key in Keep. + +7. Go to Keep dashboard and click on the profile icon in the botton left corner and click `Settings`. + + + + + +8. Select `Users and Access` tab and then select `API Keys` tab and create a new API key. + + + + + +9. Give name and select the role as `webhook` and click on `Create API Key`. + + + + + +10. Use the generated API key in the `X-API-KEY` header of the webhook created in Checkly. + +## Useful Links + +- [Checkly Website](https://www.checklyhq.com/) diff --git a/docs/providers/overview.mdx b/docs/providers/overview.mdx index 5f8b471463..53a16c3c79 100644 --- a/docs/providers/overview.mdx +++ b/docs/providers/overview.mdx @@ -84,6 +84,12 @@ By leveraging Keep Providers, users are able to deeply integrate Keep with the t icon={ } > + } +> + $2Yal9z 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 Bp#A^= literal 0 HcmV?d00001 diff --git a/keep/providers/checkly_provider/__init__.py b/keep/providers/checkly_provider/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keep/providers/checkly_provider/alerts_mock.py b/keep/providers/checkly_provider/alerts_mock.py new file mode 100644 index 0000000000..a5d70e8dbe --- /dev/null +++ b/keep/providers/checkly_provider/alerts_mock.py @@ -0,0 +1,21 @@ +ALERTS = { + "event": "API Check #1 has recovered", + "alert_type": "ALERT_RECOVERY", + "check_name": "API Check #1", + "group_name": "", + "check_id": "927a2982-1007-4b81-b383-eae8bf717e61", + "check_type": "API", + "check_result_id": "a34867c0-9239-421f-92f2-4408bbd05417", + "check_error_message": "", + "response_time": "258", + "api_check_response_status_code": "200", + "api_check_response_status_text": "OK", + "run_location": "Singapore", + "ssl_days_remaining": "", + "ssl_check_domain": "", + "started_at": "2025-01-26T11:19:40.544Z", + "tags": "", + "link": "https://app.checklyhq.com/checks/927a2982-1007-4b81-b383-eae8bf717e61/check-sessions/478cacb1-c40f-4675-89d7-a4e3ecaafb7b", + "region": "", + "uuid": "4583208e-0bca-48c6-8dc8-d14faf6102b3" +} diff --git a/keep/providers/checkly_provider/checkly_provider.py b/keep/providers/checkly_provider/checkly_provider.py new file mode 100644 index 0000000000..64f1736a23 --- /dev/null +++ b/keep/providers/checkly_provider/checkly_provider.py @@ -0,0 +1,258 @@ +""" +ChecklyProvider is a class that allows you to receive alerts from Checkly using API endpoints as well as webhooks. +""" + +import dataclasses + +import pydantic +import requests + +from keep.api.models.alert import AlertDto, AlertSeverity, AlertStatus +from keep.contextmanager.contextmanager import ContextManager +from keep.providers.base.base_provider import BaseProvider +from keep.providers.models.provider_config import ProviderConfig, ProviderScope + +@pydantic.dataclasses.dataclass +class ChecklyProviderAuthConfig: + """ + ChecklyProviderAuthConfig is a class that allows you to authenticate in Checkly. + """ + + checklyApiKey: str = dataclasses.field( + metadata={ + "required": True, + "description": "Checkly API Key", + "sensitive": True, + }, + ) + + accountId: str = dataclasses.field( + metadata={ + "required": True, + "description": "Checkly Account ID", + "sensitive": True, + }, + ) + +class ChecklyProvider(BaseProvider): + """ + Get alerts from Checkly into Keep. + """ + + webhook_description = "" + webhook_template = "" + webhook_markdown = """ +💡 For more details on how to configure Checkly to send alerts to Keep, see the [Keep documentation](https://docs.keephq.dev/providers/documentation/checkly-provider). + +To send alerts from Checkly to Keep, Use the following webhook url to configure Checkly send alerts to Keep: + +1. In Checkly dashboard open "Alerts" tab. +2. Click on "Add more channels". +3. Select "Webhook" from the list. +4. Enter a name for the webhook, select the method as "POST" and enter the webhook URL as {keep_webhook_api_url}. +5. Copy the Body template from the [Keep documentation](https://docs.keephq.dev/providers/documentation/checkly-provider) and paste it in the Body field of the webhook. +6. Add a request header with the key "X-API-KEY" and the value as {api_key}. +7. Save the webhook. + """ + + PROVIDER_DISPLAY_NAME = "Checkly" + PROVIDER_TAGS = ["alert"] + PROVIDER_CATEGORY = ["Monitoring"] + + PROVIDER_SCOPES = [ + ProviderScope( + name="read_alerts", + description="Read alerts from Checkly", + ), + ] + + # Based on the Alert states in Checkly, we map them to the AlertStatus and AlertSeverity in Keep. + STATUS_MAP = { + "NO_ALERT": AlertStatus.RESOLVED, + "ALERT_DEGRADED": AlertStatus.FIRING, + "ALERT_FAILURE": AlertStatus.FIRING, + "ALERT_DEGRADED_REMAIN": AlertStatus.ACKNOWLEDGED, + "ALERT_DEGRADED_RECOVERY": AlertStatus.RESOLVED, + "ALERT_DEGRADED_FAILURE": AlertStatus.FIRING, + "ALERT_FAILURE_REMAIN": AlertStatus.ACKNOWLEDGED, + "ALERT_FAILURE_DEGRADED": AlertStatus.ACKNOWLEDGED, + "ALERT_RECOVERY": AlertStatus.RESOLVED + } + + SEVERITY_MAP = { + "NO_ALERT": AlertSeverity.INFO, + "ALERT_DEGRADED": AlertSeverity.WARNING, + "ALERT_FAILURE": AlertSeverity.CRITICAL, + "ALERT_DEGRADED_REMAIN": AlertSeverity.WARNING, + "ALERT_DEGRADED_RECOVERY": AlertSeverity.INFO, + "ALERT_DEGRADED_FAILURE": AlertSeverity.HIGH, + "ALERT_FAILURE_REMAIN": AlertSeverity.CRITICAL, + "ALERT_FAILURE_DEGRADED": AlertSeverity.WARNING, + "ALERT_RECOVERY": AlertSeverity.INFO + } + + def __init__( + self, context_manager: ContextManager, provider_id: str, config: ProviderConfig + ): + super().__init__(context_manager, provider_id, config) + + def dispose(self): + """ + Dispose the provider. + """ + pass + + def validate_config(self): + """ + Validates required configuration for ilert provider. + """ + self.authentication_config = ChecklyProviderAuthConfig( + **self.config.authentication + ) + + def validate_scopes(self): + """ + Validate scopes for the provider + """ + self.logger.info("Validating Checkly provider scopes") + try: + response = requests.get( + self.__get_url(), + headers=self.__get_auth_headers(), + ) + + if response.status_code != 200: + response.raise_for_status() + + self.logger.info("Successfully validated scopes", extra={"response": response.json()}) + + return {"read_alerts": True} + + except Exception as e: + self.logger.exception("Failed to validate scopes", extra={"error": e}) + return {"read_alerts": str(e)} + + def _get_alerts(self) -> list[AlertDto]: + """ + Get alerts from Checkly. + """ + self.logger.info("Getting alerts from Checkly") + alerts = self.__get_paginated_data() + return [ + AlertDto( + id=alert["id"], + name=alert["name"], + status=ChecklyProvider.STATUS_MAP[alert["alertType"]], + severity=ChecklyProvider.SEVERITY_MAP[alert["alertType"]], + lastReceivedAt=alert["created_at"], + alertType=alert["alertType"], + checkId=alert["checkId"], + checkType=alert["checkType"], + runLocation=alert["runLocation"], + responseTime=alert["responseTime"], + error=alert["error"], + statusCode=alert["statusCode"], + created_at=alert["created_at"], + startedAt=alert["startedAt"], + source=["checkly"] + ) for alert in alerts + ] + + @staticmethod + def _format_alert( + event: dict, provider_instance: "BaseProvider" = None + ) -> AlertDto | list[AlertDto]: + alert = AlertDto( + id=event["uuid"], + name=event["check_name"], + description=event["event"], + status=ChecklyProvider.STATUS_MAP[event["alert_type"]], + severity=ChecklyProvider.SEVERITY_MAP[event["alert_type"]], + lastReceived=event["started_at"], + alertType=event["alert_type"], + groupName=event["group_name"], + checkId=event["check_id"], + checkType=event["check_type"], + checkResultId=event["check_result_id"], + checkErrorMessage=event["check_error_message"], + responseTime=event["response_time"], + apiCheckResponseStatus=event["api_check_response_status_code"], + apiCheckResponseStatusText=event["api_check_response_status_text"], + runLocation=event["run_location"], + sslDaysRemaining=event["ssl_days_remaining"], + sslCheckDomain=event["ssl_check_domain"], + startedAt=event["started_at"], + tags=event["tags"], + url=event["link"], + region=event["region"], + source=["checkly"] + ) + + return alert + + + def __get_auth_headers(self): + return { + "Authorization": f"Bearer {self.authentication_config.checklyApiKey}", + "X-Checkly-Account": self.authentication_config.accountId, + "accept": "application/json" + } + + def __get_paginated_data(self, query_params: dict = {}) -> list: + data = [] + page = 1 + + while True: + self.logger.info(f"Getting data from page {page}") + query_params["page"] = page + try: + url = self.__get_url(query_params) + headers = self.__get_auth_headers() + response = requests.get(url, headers=headers) + response.raise_for_status() + page_data = response.json() + if not page_data: + break + self.logger.info(f"Got {len(page_data)} data from page {page}") + data.extend(page_data) + page += 1 + except Exception as e: + self.logger.error(f"Error getting data from page {page}: {e}") + break + return data + + def __get_url(self, query_params: dict = {}): + url = "https://api.checklyhq.com/v1/check-alerts" + if query_params: + url += "?" + for key, value in query_params.items(): + url += f"{key}={value}&" + url = url[:-1] + return url + +if __name__ == "__main__": + import logging + + logging.basicConfig(level=logging.DEBUG, handlers=[logging.StreamHandler()]) + context_manager = ContextManager( + tenant_id="singletenant", + workflow_id="test", + ) + + import os + + checkly_api_key = os.getenv("CHECKLY_API_KEY") + checkly_account_id = os.getenv("CHECKLY_ACCOUNT_ID") + + config = ProviderConfig( + description="Checkly Provider", + authentication={ + "checklyApiKey": checkly_api_key, + "accountId": checkly_account_id, + } + ) + + provider = ChecklyProvider(context_manager, "checkly", config) + + alerts = provider.get_alerts() + print(alerts) From 7956b869c6d14a9b5f9d458121cca079bb191d91 Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Mon, 27 Jan 2025 15:52:02 +0200 Subject: [PATCH 06/39] feat(ui): add alert rule (#3156) --- keep-ui/app/(keep)/workflows/workflow-tile.tsx | 5 +++++ keep-ui/shared/api/workflows.ts | 1 + keep/api/models/workflow.py | 1 + keep/api/routes/workflows.py | 2 ++ keep/workflowmanager/workflowstore.py | 14 ++++++++++++++ 5 files changed, 23 insertions(+) diff --git a/keep-ui/app/(keep)/workflows/workflow-tile.tsx b/keep-ui/app/(keep)/workflows/workflow-tile.tsx index cce2c75044..a5f9d4a84e 100644 --- a/keep-ui/app/(keep)/workflows/workflow-tile.tsx +++ b/keep-ui/app/(keep)/workflows/workflow-tile.tsx @@ -417,6 +417,11 @@ function WorkflowTile({ workflow }: { workflow: Workflow }) { Provisioned )} + {workflow.alertRule && ( + + Alert Rule + + )} {workflow.disabled && ( Disabled diff --git a/keep-ui/shared/api/workflows.ts b/keep-ui/shared/api/workflows.ts index 4b77f9a11d..531f64b261 100644 --- a/keep-ui/shared/api/workflows.ts +++ b/keep-ui/shared/api/workflows.ts @@ -46,6 +46,7 @@ export type Workflow = { last_execution_started?: string; last_executions?: LastWorkflowExecution[]; provisioned?: boolean; + alertRule?: boolean; }; export type MockProvider = { diff --git a/keep/api/models/workflow.py b/keep/api/models/workflow.py index bd9eb1f350..e514aeba4d 100644 --- a/keep/api/models/workflow.py +++ b/keep/api/models/workflow.py @@ -42,6 +42,7 @@ class WorkflowDTO(BaseModel): last_execution_started: datetime = None provisioned: bool = False provisioned_file: str = None + alertRule: bool = False @property def workflow_raw_id(self): diff --git a/keep/api/routes/workflows.py b/keep/api/routes/workflows.py index a6b7c58e4f..b7f4444b26 100644 --- a/keep/api/routes/workflows.py +++ b/keep/api/routes/workflows.py @@ -119,6 +119,7 @@ def get_workflows( # create the workflow DTO try: workflow_raw = cyaml.safe_load(workflow.workflow_raw) + is_alert_rule_worfklow = WorkflowStore.is_alert_rule_workflow(workflow_raw) # very big width to avoid line breaks workflow_raw = cyaml.dump(workflow_raw, width=99999) workflow_dto = WorkflowDTO( @@ -140,6 +141,7 @@ def get_workflows( last_execution_started=last_execution_started, disabled=workflow.is_disabled, provisioned=workflow.provisioned, + alertRule=is_alert_rule_worfklow, ) except Exception as e: logger.error(f"Error creating workflow DTO: {e}") diff --git a/keep/workflowmanager/workflowstore.py b/keep/workflowmanager/workflowstore.py index fd7926f3a5..5870ae92c9 100644 --- a/keep/workflowmanager/workflowstore.py +++ b/keep/workflowmanager/workflowstore.py @@ -526,3 +526,17 @@ def get_workflow_meta_data( triggers = self.parser.get_triggers_from_workflow(workflow_yaml) return providers_dto, triggers + + @staticmethod + def is_alert_rule_workflow(workflow_raw: dict): + # checks if the workflow is an alert rule + actions = workflow_raw.get("actions", []) + for action in actions: + # check if the action is a keep action + is_keep_action = action.get("provider", {}).get("type") == "keep" + if is_keep_action: + # check if the keep action is an alert + if "alert" in action.get("provider", {}).get("with", {}): + return True + # if no keep action is found, return False + return False From 45153880ededca3558c0bd1f018a825d667b9b31 Mon Sep 17 00:00:00 2001 From: Ezhil Shanmugham Date: Mon, 27 Jan 2025 19:29:51 +0530 Subject: [PATCH 07/39] fix(docs): readme broken (#3158) Co-authored-by: Shahar Glazner --- README.md | 16 ++++++++-------- .../providers/documentation/checkly-provider.mdx | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 07e6c3b31a..4d9f5067a4 100644 --- a/README.md +++ b/README.md @@ -140,14 +140,14 @@ Dynatrace + + Elastic
Elastic
- - GCP Monitoring
@@ -178,14 +178,14 @@ Netdata
+ + New Relic
New Relic
- - Parseable
@@ -216,14 +216,14 @@ Sentry
+ + SignalFX
SignalFX
- - OpenObserve
@@ -254,14 +254,14 @@ SumoLogic
+ + UptimeKuma
UptimeKuma
- - VictoriaMetrics
diff --git a/docs/providers/documentation/checkly-provider.mdx b/docs/providers/documentation/checkly-provider.mdx index 19a502f3c8..b343619ba0 100644 --- a/docs/providers/documentation/checkly-provider.mdx +++ b/docs/providers/documentation/checkly-provider.mdx @@ -1,7 +1,7 @@ --- title: 'Checkly' sidebarTitle: 'Checkly Provider' -description: 'StatusCake allows you to receive alerts from Checkly using API endpoints as well as webhooks' +description: 'Checkly allows you to receive alerts from Checkly using API endpoints as well as webhooks' --- ## Authentication Parameters From d56ff6149e50ee0801a2c46dd8ddd4c841fec102 Mon Sep 17 00:00:00 2001 From: Tal Date: Mon, 27 Jan 2025 16:56:25 +0200 Subject: [PATCH 08/39] fix(ui): RCA and Group By Value (#3161) --- examples/workflows/slack-message-reaction.yml | 2 +- keep-ui/app/(keep)/incidents/[id]/incident-overview.tsx | 2 +- keep-ui/components/ui/RootCauseAnalysis.tsx | 6 +++--- keep/api/routes/workflows.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/workflows/slack-message-reaction.yml b/examples/workflows/slack-message-reaction.yml index 07a546a89d..941620328c 100644 --- a/examples/workflows/slack-message-reaction.yml +++ b/examples/workflows/slack-message-reaction.yml @@ -47,7 +47,7 @@ actions: blocks: - text: emoji: true - text: Provider installation failed + text: "{{alert.gcp.policy_name}}" type: plain_text type: header - elements: diff --git a/keep-ui/app/(keep)/incidents/[id]/incident-overview.tsx b/keep-ui/app/(keep)/incidents/[id]/incident-overview.tsx index cb198ebbfb..1a667f05fb 100644 --- a/keep-ui/app/(keep)/incidents/[id]/incident-overview.tsx +++ b/keep-ui/app/(keep)/incidents/[id]/incident-overview.tsx @@ -219,7 +219,7 @@ export function IncidentOverview({ incident: initialIncidentData }: Props) { return ( // Adding padding bottom to visually separate from the tabs -

+
diff --git a/keep-ui/components/ui/RootCauseAnalysis.tsx b/keep-ui/components/ui/RootCauseAnalysis.tsx index d524f33130..51bd7a30e0 100644 --- a/keep-ui/components/ui/RootCauseAnalysis.tsx +++ b/keep-ui/components/ui/RootCauseAnalysis.tsx @@ -38,7 +38,7 @@ export function RootCauseAnalysis({
@@ -54,8 +54,8 @@ export function RootCauseAnalysis({
diff --git a/keep/api/routes/workflows.py b/keep/api/routes/workflows.py index b7f4444b26..6e4bed6ce6 100644 --- a/keep/api/routes/workflows.py +++ b/keep/api/routes/workflows.py @@ -463,7 +463,7 @@ def get_random_workflow_templates( f"Neither {default_directory} nor {fallback_directory} exist" ) workflows = workflowstore.get_random_workflow_templates( - tenant_id=tenant_id, workflows_dir=default_directory, limit=6 + tenant_id=tenant_id, workflows_dir=default_directory, limit=8 ) return workflows From 627080921f8a5e383260934a5a8b737b3ca41d61 Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Mon, 27 Jan 2025 19:26:49 +0200 Subject: [PATCH 09/39] fix(api): checkmk service (#3167) --- keep/providers/checkmk_provider/checkmk_provider.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keep/providers/checkmk_provider/checkmk_provider.py b/keep/providers/checkmk_provider/checkmk_provider.py index faf772e4bf..4f149e7b9f 100644 --- a/keep/providers/checkmk_provider/checkmk_provider.py +++ b/keep/providers/checkmk_provider/checkmk_provider.py @@ -95,7 +95,7 @@ def _set_severity(status): host=_check_values("host"), alias=_check_values("alias"), address=_check_values("address"), - service_name=_check_values("service"), + service=_check_values("service"), source=["checkmk"], current_event=_check_values("event"), output=_check_values("output"), From ed62afe84c83649e98b98b7595ffc354f8c653dc Mon Sep 17 00:00:00 2001 From: Tal Date: Tue, 28 Jan 2025 06:47:45 +0200 Subject: [PATCH 10/39] feat(clickhouse): optional SSL verification (#3171) --- .../clickhouse_provider.py | 29 +++++++++++++++---- pyproject.toml | 2 +- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/keep/providers/clickhouse_provider/clickhouse_provider.py b/keep/providers/clickhouse_provider/clickhouse_provider.py index 06e9aba4d9..756ca2d605 100644 --- a/keep/providers/clickhouse_provider/clickhouse_provider.py +++ b/keep/providers/clickhouse_provider/clickhouse_provider.py @@ -4,12 +4,14 @@ import dataclasses import os +import typing import pydantic from clickhouse_driver import connect from clickhouse_driver.dbapi.extras import DictCursor from keep.contextmanager.contextmanager import ContextManager +from keep.exceptions.provider_exception import ProviderException from keep.providers.base.base_provider import BaseProvider from keep.providers.models.provider_config import ProviderConfig, ProviderScope from keep.validation.fields import NoSchemeUrl, UrlPort @@ -45,11 +47,22 @@ class ClickhouseProviderAuthConfig: metadata={"required": False, "description": "Clickhouse database name"}, default=None, ) - protocol: str = dataclasses.field( - metadata={"required": True, - "description": "Protocol (Use clickhouses for SSL wrapped TCP socket connection, \ - and clickhouse for plain TCP socket connection.)"}, + protocol: typing.Literal["clickhouse", "clickhouses"] = dataclasses.field( default="clickhouse", + metadata={ + "required": True, + "description": "Protocol (Type clickhouses for SSL or clickhouse for no SSL)", + "type": "select", + "options": ["clickhouse", "clickhouses"], + }, + ) + verify: bool = dataclasses.field( + metadata={ + "description": "Enable SSL verification", + "hint": "SSL verification is enabled by default", + "type": "switch", + }, + default=True, ) @@ -116,9 +129,13 @@ def __generate_client(self): protocol = self.authentication_config.protocol if protocol is None: protocol = "clickhouse" + + if protocol not in ["clickhouse", "clickhouses"]: + raise ProviderException("Invalid Clickhouse protocol") + dsn = f"{protocol}://{user}:{password}@{host}:{port}/{database}" - return connect(dsn) + return connect(dsn, verify=self.authentication_config.verify) def dispose(self): try: @@ -173,7 +190,7 @@ def _notify(self, query="", single_row=False, **kwargs: dict) -> list | tuple: "password": os.environ.get("CLICKHOUSE_PASSWORD"), "host": os.environ.get("CLICKHOUSE_HOST"), "database": os.environ.get("CLICKHOUSE_DATABASE"), - "port": os.environ.get("CLICKHOUSE_PORT") + "port": os.environ.get("CLICKHOUSE_PORT"), } ) context_manager = ContextManager( diff --git a/pyproject.toml b/pyproject.toml index 75967b2285..a895e89ba5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.0" +version = "0.35.1" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] From 7b356290ec99f4b045f2a44c637043165d8faaf7 Mon Sep 17 00:00:00 2001 From: Tal Date: Tue, 28 Jan 2025 10:43:02 +0200 Subject: [PATCH 11/39] fix: no proper exception when tenant was deleted (#3175) --- keep/api/core/tenant_configuration.py | 6 +- keep/providers/clickhouse_provider/README.md | 69 ++++++++++++++++++- .../clickhouse-secure/certs/server.crt | 21 ++++++ .../clickhouse-secure/certs/server.key | 28 ++++++++ .../clickhouse-secure/config.xml | 46 +++++++++++++ .../clickhouse-secure/docker-compose.yml | 13 ++++ .../clickhouse-secure/users.xml | 36 ++++++++++ .../clickhouse_provider.py | 2 + pyproject.toml | 2 +- 9 files changed, 220 insertions(+), 3 deletions(-) create mode 100644 keep/providers/clickhouse_provider/clickhouse-secure/certs/server.crt create mode 100644 keep/providers/clickhouse_provider/clickhouse-secure/certs/server.key create mode 100644 keep/providers/clickhouse_provider/clickhouse-secure/config.xml create mode 100644 keep/providers/clickhouse_provider/clickhouse-secure/docker-compose.yml create mode 100644 keep/providers/clickhouse_provider/clickhouse-secure/users.xml diff --git a/keep/api/core/tenant_configuration.py b/keep/api/core/tenant_configuration.py index b948e597f7..8433bebcf6 100644 --- a/keep/api/core/tenant_configuration.py +++ b/keep/api/core/tenant_configuration.py @@ -1,6 +1,8 @@ import logging from datetime import datetime, timedelta +from fastapi import HTTPException + from keep.api.core.config import config from keep.api.core.db import get_tenants_configurations @@ -52,7 +54,9 @@ def get_configuration(self, tenant_id, config_name): "tenant_id": tenant_id, }, ) - raise ValueError(f"Tenant not found [id: {tenant_id}]") + raise HTTPException( + status_code=401, detail=f"Tenant not found [id: {tenant_id}]" + ) return tenant_config.get(config_name, None) diff --git a/keep/providers/clickhouse_provider/README.md b/keep/providers/clickhouse_provider/README.md index eeae4d1180..76d8e36a5e 100644 --- a/keep/providers/clickhouse_provider/README.md +++ b/keep/providers/clickhouse_provider/README.md @@ -81,4 +81,71 @@ Retrieve Logs with a Specific User ID and Level ```sql SELECT * FROM logs_table WHERE user_id = 5 AND level = 'DEBUG'; -``` \ No newline at end of file +``` + +## ClickHouse Setup with Self-Signed Certificate + +This guide will help you set up a ClickHouse server with a self-signed SSL certificate using Docker. + +### Prerequisites + +- Docker and Docker Compose installed on your machine. + +### Steps + +1. **Clone the Repository** + + Clone the repository containing the ClickHouse setup files. + + ```bash + git clone + cd /keep/providers/clickhouse_provider/clickhouse-secure + ``` + +2. **Review Configuration Files** + + Ensure the following files are correctly configured: + + - `config.xml`: Contains ClickHouse server configuration, including SSL settings. + - `users.xml`: Defines users and their permissions. + - `certs/server.crt` and `certs/server.key`: Your self-signed certificate and private key. + +3. **Start ClickHouse with Docker Compose** + + Use Docker Compose to start the ClickHouse server. + + ```bash + docker-compose up -d + ``` + + This command will start the ClickHouse server with SSL enabled on ports 8123 (HTTPS) and 9440 (Native SSL). + +4. **Connect to ClickHouse** + + You can connect to the ClickHouse server using the ClickHouse client or any compatible client library. Ensure you specify the SSL port and provide the necessary credentials. + + Example connection string for Python using `clickhouse-driver`: + + ```python + from clickhouse_driver import connect + + connection = connect( + 'clickhouses://secure_user:strong_password@localhost:9440/default', + verify='/path/to/your/ca-cert.pem' # Optional: Path to CA certificate if needed + ) + ``` + + If you encounter SSL verification issues, you can disable verification (not recommended for production) by setting `verify=False`. + +5. **Stop ClickHouse** + + To stop the ClickHouse server, run: + + ```bash + docker-compose down + ``` + +### Notes + +- The provided setup uses a self-signed certificate. For production environments, consider using a certificate from a trusted Certificate Authority (CA). +- Ensure that the certificate and key files are correctly mounted in the Docker container as specified in the `docker-compose.yml` file. diff --git a/keep/providers/clickhouse_provider/clickhouse-secure/certs/server.crt b/keep/providers/clickhouse_provider/clickhouse-secure/certs/server.crt new file mode 100644 index 0000000000..b408acdf5d --- /dev/null +++ b/keep/providers/clickhouse_provider/clickhouse-secure/certs/server.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIUH2I41CG75eMKCuXoLIza75/eX4swDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxDTALBgNVBAgMBFRlc3QxDTALBgNVBAcMBFRlc3Qx +DTALBgNVBAoMBFRlc3QxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yNTAxMjgwNzQ4 +MjVaFw0yNjAxMjgwNzQ4MjVaME4xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARUZXN0 +MQ0wCwYDVQQHDARUZXN0MQ0wCwYDVQQKDARUZXN0MRIwEAYDVQQDDAlsb2NhbGhv +c3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrGl0k3J93ug+iJxZz +JwCLFt+QyJfEVAod/jb5coio9fDdODGOJFD2aiX9v+B1hSiHHSakKXYtNnCYJtKK +HEur760qkWEDdg8PplmlaXXD14n6EUbcqEKfZNaeD4WQa/+cbCg6eOQRvM+YaBp9 +ebQFbZL74H3YrQlExF3c9ImkTP7XzoPXSKpfb2HYPIxKBacbr2TsCHPKd5mFze3t ++k/ttC4WVH4OAPkVZdJnR+lSSE0uTfK21+ZWpIcFlTi6zkNFjk4zuntpMcaTWo/L +xPJG0MIb5RitFTR0U00Ukq5ah4IrTQNxVj+d4VF+rRs/kEV6+UYom+TJPLOPeDch +JZmbAgMBAAGjUzBRMB0GA1UdDgQWBBT+4lIGAu+FMy72bHLGWPsgRcQzCDAfBgNV +HSMEGDAWgBT+4lIGAu+FMy72bHLGWPsgRcQzCDAPBgNVHRMBAf8EBTADAQH/MA0G +CSqGSIb3DQEBCwUAA4IBAQCQIWMIfMx8Rxa09yj6L0l0bTlifiWGcYKw+41WbXIM +sNHYHbPv0hZrezD5A0lFZHknTNveBqh4KGq69QpilaRri09MR7YdzBOJtvttPz0N +d42ZqJJAbjg5vhWSWO3nFjg3kxxK28/YIcrCxnWNIUuua+MwrT+io539VfJ5CmUP +t+7+juizAzu+Tt1O/YHJopnjoZTFWQiaE2bj0bXm2MAPZF8ItujCOyM9RImUcAr1 +0crgNapA0mZmIGgatb4V8OSAkS4+T4no3ScRbTTPjqCf8z9Hkq3M2EoZhADv+FLD +3qKobCwv0W/RmzGHM4vGHMKnZO48DZ85EC+puD6h8dbP +-----END CERTIFICATE----- diff --git a/keep/providers/clickhouse_provider/clickhouse-secure/certs/server.key b/keep/providers/clickhouse_provider/clickhouse-secure/certs/server.key new file mode 100644 index 0000000000..dbfdf546ef --- /dev/null +++ b/keep/providers/clickhouse_provider/clickhouse-secure/certs/server.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrGl0k3J93ug+i +JxZzJwCLFt+QyJfEVAod/jb5coio9fDdODGOJFD2aiX9v+B1hSiHHSakKXYtNnCY +JtKKHEur760qkWEDdg8PplmlaXXD14n6EUbcqEKfZNaeD4WQa/+cbCg6eOQRvM+Y +aBp9ebQFbZL74H3YrQlExF3c9ImkTP7XzoPXSKpfb2HYPIxKBacbr2TsCHPKd5mF +ze3t+k/ttC4WVH4OAPkVZdJnR+lSSE0uTfK21+ZWpIcFlTi6zkNFjk4zuntpMcaT +Wo/LxPJG0MIb5RitFTR0U00Ukq5ah4IrTQNxVj+d4VF+rRs/kEV6+UYom+TJPLOP +eDchJZmbAgMBAAECggEAC4nA/QReDvfRqBChhFOXLZbCreoo+dWxw1xqODlCzlbP +aEuRMLgLazwbPCWDrS+Bw4klGu4Roj9I9nZ5Vu2zi9bWXMfmIxKdNcpbXAeX9NEe +SwOxPWrUG0v0gQu9tdB8MZmSWOcTRVlWWNbkVAPJ+14fpEz69fD6CAe2s98cDQoC +JIhzbNf2HSgzAA85KcOx6iHpiQZOwhawHEfL31Vq5oHOPkAbIhGGtRNGZ3qivksS +mFiumzHXg4LMbrs/QPbklsnIsGfxiRe0TIA2YOGJg6K52QEE+tI4XWNirnJQDuaH +LNBNuqWgeBtPVjvIrc89z6OZLrarL83+EIfhvzpToQKBgQDqvDLENZj1kIQ1Kpcj +HQuI9FKn0T9UzVDIVO2vOBJG2n6hH93Y++pozd4tmfuKF4BvPU9vCgITu2WTDXYy +bCFbjYnnrO7LrI/UmrxdVSDl4CJcyBp/jVEhfuUvozXSTDUjUcV7Jginx5+tkox9 +Vj/Pg+OjGT+zd12oe468TiYj0QKBgQC6mnS+SzbuopkwHaDMcGld3wimFpzJAMxe +80VUTEosIu+UEqdE6g67vFhk9UbeIJjZSHJwfz6PFxMSO+nlOBZShNLJr4EjeMOC +HW32hwEOLNtUjk4FxL2HeK7EuIsFWFo+ftLc/EVWcR47sV8W+lxhgDsFe2nA0oza +b4Ucqg0dqwKBgQClDm7YHyQOUG9WfztFOpA43iwcyvswYyrRoz56vf/ECLGQFLtH +b2RWC6SWBjek03/BOKhZWP066MO00ntxWy1dljoJSUWkvBNrGN8o9corOh6PhTl0 +xWbuGa+IfshCtsmKq14kiQr/B1SVlX3qSDKYdZIkxoVPabjW1wL4EC+rcQKBgBYx +1t7nbVI27seFTqHiYPX0WEABAob53FUS1FUxecUEJsDS8yhEOppjzZO8hMBY2jVF +466zw8obMX6Ct9A2upj4CWZJxK9mZsKsI28mIZ8BANluz6LqAq0BUrA9TvPEzX8P +cJ8uNkUQ0UrCTxAZmTFTojGFu09e+7fjec6t/z9fAoGAQoSl3YkzIMKyMk0cDmAN +cvIjqQkZpknKKNtVBMVrrj2ppONDX4lRbcynImDKZKg9+pc54im/IH5NkA8c+uZY +wS4XNzVSXK4ZAH9CX/W4b7jQW1fQW3CRmtwNgqGF1HGPYG4U1Nl9U0NRFLYe8sQE +6IOZgHHz94uQ2/doDFVYzJU= +-----END PRIVATE KEY----- diff --git a/keep/providers/clickhouse_provider/clickhouse-secure/config.xml b/keep/providers/clickhouse_provider/clickhouse-secure/config.xml new file mode 100644 index 0000000000..f0d56424a7 --- /dev/null +++ b/keep/providers/clickhouse_provider/clickhouse-secure/config.xml @@ -0,0 +1,46 @@ + + + + trace + 1 + + + 8123 + 9440 + 0 + + + + /certs/server.crt + /certs/server.key + none + false + true + sslv2,sslv3 + true + + + + 4096 + 3 + 100 + 8589934592 + 5368709120 + + /var/lib/clickhouse/ + /var/lib/clickhouse/tmp/ + /var/lib/clickhouse/user_files/ + + users.xml + default + default + UTC + false + + + + + + /clickhouse/task_queue/ddl + + diff --git a/keep/providers/clickhouse_provider/clickhouse-secure/docker-compose.yml b/keep/providers/clickhouse_provider/clickhouse-secure/docker-compose.yml new file mode 100644 index 0000000000..96e6481efb --- /dev/null +++ b/keep/providers/clickhouse_provider/clickhouse-secure/docker-compose.yml @@ -0,0 +1,13 @@ +services: + clickhouse: + image: clickhouse/clickhouse-server:latest + ports: + - "8123:8123" # HTTPS port + - "9440:9440" # Native SSL port + volumes: + - ./certs:/certs + - ./users.xml:/etc/clickhouse-server/users.xml:ro + - ./config.xml:/etc/clickhouse-server/config.xml:ro + environment: + - CLICKHOUSE_USER=secure_user + - CLICKHOUSE_PASSWORD=strong_password diff --git a/keep/providers/clickhouse_provider/clickhouse-secure/users.xml b/keep/providers/clickhouse_provider/clickhouse-secure/users.xml new file mode 100644 index 0000000000..043a7f8a57 --- /dev/null +++ b/keep/providers/clickhouse_provider/clickhouse-secure/users.xml @@ -0,0 +1,36 @@ + + + + + 10000000000 + 0 + random + 100 + + + + + + + 3600 + 0 + 0 + 0 + 0 + 0 + + + + + + + strong_password + default + default + + ::/0 + + 1 + + + diff --git a/keep/providers/clickhouse_provider/clickhouse_provider.py b/keep/providers/clickhouse_provider/clickhouse_provider.py index 756ca2d605..7974314d74 100644 --- a/keep/providers/clickhouse_provider/clickhouse_provider.py +++ b/keep/providers/clickhouse_provider/clickhouse_provider.py @@ -134,6 +134,8 @@ def __generate_client(self): raise ProviderException("Invalid Clickhouse protocol") dsn = f"{protocol}://{user}:{password}@{host}:{port}/{database}" + if self.authentication_config.verify is False: + dsn += "?verify=false" return connect(dsn, verify=self.authentication_config.verify) diff --git a/pyproject.toml b/pyproject.toml index a895e89ba5..69d87d45d1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.1" +version = "0.35.2" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] From ab6779ddf7e7d0de1600e08bbd1384b549a4f47f Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Tue, 28 Jan 2025 10:43:38 +0200 Subject: [PATCH 12/39] feat(ui): workflow yaml editor (#3174) --- .../[workflow_id]/workflow-detail-page.tsx | 36 ++- .../workflows/model/useWorkflowActions.ts | 14 +- keep-ui/package-lock.json | 40 ++++ keep-ui/package.json | 1 + .../ui/YAMLCodeblock/ui/MonacoYAMLEditor.tsx | 218 ++++++++++++++++++ keep-ui/utils/hooks/useWorkflowExecutions.ts | 10 +- 6 files changed, 310 insertions(+), 9 deletions(-) create mode 100644 keep-ui/shared/ui/YAMLCodeblock/ui/MonacoYAMLEditor.tsx diff --git a/keep-ui/app/(keep)/workflows/[workflow_id]/workflow-detail-page.tsx b/keep-ui/app/(keep)/workflows/[workflow_id]/workflow-detail-page.tsx index 6a38fb3a9a..a6ca752ee2 100644 --- a/keep-ui/app/(keep)/workflows/[workflow_id]/workflow-detail-page.tsx +++ b/keep-ui/app/(keep)/workflows/[workflow_id]/workflow-detail-page.tsx @@ -8,7 +8,7 @@ import { TabPanel, TabPanels, } from "@tremor/react"; -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { ArrowUpRightIcon, CodeBracketIcon, @@ -22,7 +22,9 @@ import { useApi } from "@/shared/lib/hooks/useApi"; import { useConfig } from "utils/hooks/useConfig"; import { AiOutlineSwap } from "react-icons/ai"; import { ErrorComponent, TabNavigationLink, YAMLCodeblock } from "@/shared/ui"; +import MonacoYAMLEditor from "@/shared/ui/YAMLCodeblock/ui/MonacoYAMLEditor"; import Skeleton from "react-loading-skeleton"; +import { usePathname, useRouter, useSearchParams } from "next/navigation"; export default function WorkflowDetailPage({ params, @@ -34,6 +36,20 @@ export default function WorkflowDetailPage({ const api = useApi(); const { data: configData } = useConfig(); const [tabIndex, setTabIndex] = useState(0); + const searchParams = useSearchParams(); + const router = useRouter(); + + // Set initial tab based on URL query param + useEffect(() => { + const tab = searchParams.get("tab"); + if (tab === "yaml") { + setTabIndex(2); + } else if (tab === "builder") { + setTabIndex(1); + } else { + setTabIndex(0); + } + }, [searchParams]); const { data: workflow, @@ -53,9 +69,20 @@ export default function WorkflowDetailPage({ return ; } - // TODO: change url to /workflows/[workflow_id]/[tab] or use the file-based routing const handleTabChange = (index: number) => { setTabIndex(index); + const basePath = `/workflows/${params.workflow_id}`; + switch (index) { + case 0: + router.push(basePath); + break; + case 1: + router.push(`${basePath}?tab=builder`); + break; + case 2: + router.push(`${basePath}?tab=yaml`); + break; + } }; return ( @@ -100,10 +127,11 @@ export default function WorkflowDetailPage({ {!workflow ? ( ) : ( - - + )} diff --git a/keep-ui/entities/workflows/model/useWorkflowActions.ts b/keep-ui/entities/workflows/model/useWorkflowActions.ts index 03eef00d30..2227438f30 100644 --- a/keep-ui/entities/workflows/model/useWorkflowActions.ts +++ b/keep-ui/entities/workflows/model/useWorkflowActions.ts @@ -13,7 +13,7 @@ type UseWorkflowActionsReturn = { ) => Promise; updateWorkflow: ( workflowId: string, - definition: Definition + definition: Definition | Record ) => Promise; deleteWorkflow: (workflowId: string) => void; }; @@ -56,10 +56,16 @@ export function useWorkflowActions(): UseWorkflowActionsReturn { ); const updateWorkflow = useCallback( - async (workflowId: string, definition: Definition) => { + async ( + workflowId: string, + definition: Definition | Record + ) => { try { - const workflow = getWorkflowFromDefinition(definition); - const body = stringify(workflow); + const body = stringify( + "workflow" in definition + ? definition + : getWorkflowFromDefinition(definition as Definition) + ); const response = await api.request( `/workflows/${workflowId}`, { diff --git a/keep-ui/package-lock.json b/keep-ui/package-lock.json index 0dfe2fd4d1..5b0c73d0fb 100644 --- a/keep-ui/package-lock.json +++ b/keep-ui/package-lock.json @@ -24,6 +24,7 @@ "@headlessui/react": "^1.7.14", "@headlessui/tailwindcss": "^0.2.1", "@heroicons/react": "^2.1.5", + "@monaco-editor/react": "^4.6.0", "@radix-ui/react-hover-card": "^1.0.0", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-label": "^1.0.0", @@ -4458,6 +4459,32 @@ "node": ">=8" } }, + "node_modules/@monaco-editor/loader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz", + "integrity": "sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + }, + "peerDependencies": { + "monaco-editor": ">= 0.21.0 < 1" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.6.0.tgz", + "integrity": "sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.4.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@mui/core-downloads-tracker": { "version": "5.16.13", "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.13.tgz", @@ -16719,6 +16746,13 @@ "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, + "node_modules/monaco-editor": { + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", + "license": "MIT", + "peer": true + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -20234,6 +20268,12 @@ "node": ">=6" } }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", diff --git a/keep-ui/package.json b/keep-ui/package.json index 50b9dbf475..e008ec4b41 100644 --- a/keep-ui/package.json +++ b/keep-ui/package.json @@ -25,6 +25,7 @@ "@headlessui/react": "^1.7.14", "@headlessui/tailwindcss": "^0.2.1", "@heroicons/react": "^2.1.5", + "@monaco-editor/react": "^4.6.0", "@radix-ui/react-hover-card": "^1.0.0", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-label": "^1.0.0", diff --git a/keep-ui/shared/ui/YAMLCodeblock/ui/MonacoYAMLEditor.tsx b/keep-ui/shared/ui/YAMLCodeblock/ui/MonacoYAMLEditor.tsx new file mode 100644 index 0000000000..7d556aeaf1 --- /dev/null +++ b/keep-ui/shared/ui/YAMLCodeblock/ui/MonacoYAMLEditor.tsx @@ -0,0 +1,218 @@ +import React, { useRef, useState, useEffect } from "react"; +import { Download, Copy, Check, Save } from "lucide-react"; +import { Card } from "@tremor/react"; +import { Button } from "@tremor/react"; +import Editor, { type EditorProps } from "@monaco-editor/react"; +import { type editor } from "monaco-editor"; +import yaml from "js-yaml"; +import { useWorkflowActions } from "@/entities/workflows/model/useWorkflowActions"; + +const MonacoYAMLEditor = ({ + yamlString, + filename, + workflowId, +}: { + yamlString: string; + filename: string; + workflowId: string; +}) => { + const editorRef = useRef(null); + const [isCopied, setIsCopied] = React.useState(false); + const [hasChanges, setHasChanges] = useState(false); + const [originalContent, setOriginalContent] = useState(""); + const { updateWorkflow } = useWorkflowActions(); + + // Sort YAML keys in desired order + const sortYamlKeys = (yamlStr: string) => { + try { + const parsed = yaml.load(yamlStr) as Record; + const keyOrder = ["workflow"]; + const workflowKeyOrder = [ + "id", + "name", + "description", + "triggers", + "steps", + "actions", + ]; + + const sorted: Record = {}; + + if ("workflow" in parsed) { + const workflowObj = parsed.workflow as Record; + const sortedWorkflow: Record = {}; + + workflowKeyOrder.forEach((key) => { + if (key in workflowObj) { + sortedWorkflow[key] = workflowObj[key]; + } + }); + + Object.keys(workflowObj).forEach((key) => { + if (!workflowKeyOrder.includes(key)) { + sortedWorkflow[key] = workflowObj[key]; + } + }); + + sorted.workflow = sortedWorkflow; + } + + Object.keys(parsed).forEach((key) => { + if (!keyOrder.includes(key)) { + sorted[key] = parsed[key]; + } + }); + + return yaml.dump(sorted, { indent: 2, lineWidth: 9999 }); + } catch (err) { + console.error("Failed to sort YAML:", err); + return yamlStr; + } + }; + + const sortedYaml = sortYamlKeys(yamlString); + + useEffect(() => { + setOriginalContent(sortedYaml); + }, []); + + const handleEditorDidMount = (editor: editor.IStandaloneCodeEditor) => { + editorRef.current = editor; + editor.onDidChangeModelContent(() => { + const currentContent = editor.getValue(); + setHasChanges(currentContent !== originalContent); + }); + }; + + const handleSaveWorkflow = async () => { + if (!editorRef.current) return; + + const content = editorRef.current.getValue(); + try { + const parsedYaml = yaml.load(content) as { + workflow: Record; + }; + // update workflow + await updateWorkflow(workflowId!, parsedYaml); + + setOriginalContent(content); + setHasChanges(false); + } catch (err) { + console.error("Failed to save workflow:", err); + } + }; + + const downloadYaml = () => { + if (!editorRef.current) return; + const content = editorRef.current.getValue(); + const blob = new Blob([content], { type: "text/yaml" }); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = url; + link.download = `${filename}.yaml`; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + URL.revokeObjectURL(url); + }; + + const copyToClipboard = async () => { + if (!editorRef.current) return; + const content = editorRef.current.getValue(); + try { + await navigator.clipboard.writeText(content); + setIsCopied(true); + setTimeout(() => setIsCopied(false), 2000); + } catch (err) { + console.error("Failed to copy text:", err); + } + }; + + const getLineCount = () => { + if (editorRef.current) { + return editorRef.current.getModel()?.getLineCount() ?? 0; + } + return 0; + }; + + const getCharacterCount = () => { + if (editorRef.current) { + return editorRef.current.getModel()?.getValue().length ?? 0; + } + return 0; + }; + + const editorOptions: editor.IStandaloneEditorConstructionOptions = { + minimap: { enabled: false }, + lineNumbers: "on" as const, + scrollBeyondLastLine: false, + automaticLayout: true, + tabSize: 2, + insertSpaces: true, + fontSize: 14, + renderWhitespace: "all", + wordWrap: "off", + // : 120, + theme: "vs-light", + }; + + return ( +
+
+
+ + + +
+ +
+
+ {filename}.yaml +
+ {getLineCount()} lines + · + + {getCharacterCount()} characters + +
+
+
+ ); +}; + +export default MonacoYAMLEditor; diff --git a/keep-ui/utils/hooks/useWorkflowExecutions.ts b/keep-ui/utils/hooks/useWorkflowExecutions.ts index a29c444010..57712424a3 100644 --- a/keep-ui/utils/hooks/useWorkflowExecutions.ts +++ b/keep-ui/utils/hooks/useWorkflowExecutions.ts @@ -38,10 +38,18 @@ export const useWorkflowExecutionsV2 = ( limit = limit <= 0 ? 25 : limit; offset = offset < 0 ? 0 : offset; + // Create new URLSearchParams without 'tab' param + const filteredParams = new URLSearchParams(); + searchParams?.forEach((value, key) => { + if (key !== "tab") { + filteredParams.append(key, value); + } + }); + return useSWR( api.isReady() ? `/workflows/${workflowId}/runs?v2=true&limit=${limit}&offset=${offset}${ - searchParams ? `&${searchParams.toString()}` : "" + filteredParams.toString() ? `&${filteredParams.toString()}` : "" }` : null, (url: string) => api.get(url), From 4844befcc3f17e4f75df245cd024165ba58914ba Mon Sep 17 00:00:00 2001 From: Tal Date: Tue, 28 Jan 2025 12:30:14 +0200 Subject: [PATCH 13/39] feat: recursive render (#3177) --- keep/iohandler/iohandler.py | 56 +++++++++++++++++------- tests/test_iohandler.py | 85 +++++++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 15 deletions(-) diff --git a/keep/iohandler/iohandler.py b/keep/iohandler/iohandler.py index cb242d79c7..f2749a2437 100644 --- a/keep/iohandler/iohandler.py +++ b/keep/iohandler/iohandler.py @@ -406,12 +406,6 @@ def _render(self, key: str, safe=False, default="", additional_context=None): ) safe = False - # allow {{ const. }} to be rendered - const_rendering = False - if key.startswith("{{ consts.") and key.endswith("}}"): - self.logger.debug("Rendering const key") - const_rendering = True - context = self.context_manager.get_full_context() if additional_context: @@ -420,7 +414,7 @@ def _render(self, key: str, safe=False, default="", additional_context=None): # TODO: protect from multithreaded where another thread will print to stderr, but thats a very rare case and we shouldn't care much original_stderr = sys.stderr sys.stderr = io.StringIO() - rendered = chevron.render(key, context, warn=True) + rendered = self.render_recursively(key, context) # chevron.render will escape the quotes, we need to unescape them rendered = rendered.replace(""", '"') stderr_output = sys.stderr.getvalue() @@ -442,10 +436,6 @@ def _render(self, key: str, safe=False, default="", additional_context=None): if not rendered: return default - if const_rendering: - # https://github.com/keephq/keep/issues/2326 - rendered = html.unescape(rendered) - return self._render(rendered, safe, default) return rendered def _encode_single_quotes_in_double_quotes(self, s): @@ -592,15 +582,51 @@ def __get_short_urls(self, urls: list) -> dict: except Exception: self.logger.exception("Failed to request short URLs from API") + def render_recursively( + self, template: str, context: dict, max_iterations: int = 10 + ) -> str: + """ + Recursively render a template until there are no more mustache tags or max iterations reached. + + Args: + template: The template string containing mustache tags + context: The context dictionary for rendering + max_iterations: Maximum number of rendering iterations to prevent infinite loops + + Returns: + The fully rendered string + """ + current = template + iterations = 0 + + while iterations < max_iterations: + rendered = chevron.render( + current, context, warn=True if iterations == 0 else False + ) + + # https://github.com/keephq/keep/issues/2326 + rendered = html.unescape(rendered) + + # If no more changes or no more mustache tags, we're done + if rendered == current or "{{" not in rendered: + return rendered + + current = rendered + iterations += 1 + + # Return the last rendered version even if we hit max iterations + return current + if __name__ == "__main__": # debug & test context_manager = ContextManager("keep") - context_manager.event_context = {"tags": {"k1": "v1", "k2": "v2"}} + context_manager.event_context = { + "header": "HTTP API Error {{ alert.labels.statusCode }}", + "labels": {"statusCode": "404"}, + } iohandler = IOHandler(context_manager) - res = iohandler.render( - 'https://www.keephq.dev?keep.join("{{alert.tags}}", "&", "prefix_")' - ) + res = iohandler.render("{{ alert.header }}") from asteval import Interpreter aeval = Interpreter() diff --git a/tests/test_iohandler.py b/tests/test_iohandler.py index 47385b853b..71c6d7b72c 100644 --- a/tests/test_iohandler.py +++ b/tests/test_iohandler.py @@ -827,3 +827,88 @@ def test_add_time_to_date_function(context_manager): # s = iohandler.render(template) # # the alert is not really added to the DB so the firing time is 0.00 # assert s == "0.00 >= 30 and 0.00 < 90" + + +def test_recursive_rendering_basic(context_manager): + iohandler = IOHandler(context_manager) + + context_manager.steps_context = { + "name": "World", + "greeting": "Hello {{ steps.name }}", + } + template = "{{ steps.greeting }}!" + result = iohandler.render(template) + assert result == "Hello World!", f"Expected 'Hello World!', but got {result}" + + +def test_recursive_rendering_nested(context_manager): + iohandler = IOHandler(context_manager) + context_manager.steps_context = { + "name": "World", + "greeting": "Hello {{ steps.name }}", + "message": "{{ steps.greeting }}! How are you?", + } + template = "{{ steps.message }}" + result = iohandler.render(template) + assert ( + result == "Hello World! How are you?" + ), f"Expected 'Hello World! How are you?', but got {result}" + + +def test_recursive_rendering_with_functions(context_manager): + iohandler = IOHandler(context_manager) + context_manager.steps_context = { + "name": "world", + "greeting": "Hello keep.uppercase({{ steps.name }})", + } + template = "{{ steps.greeting }}!" + result = iohandler.render(template) + assert result == "Hello WORLD!", f"Expected 'Hello WORLD!', but got {result}" + + +def test_recursive_rendering_max_iterations(context_manager): + iohandler = IOHandler(context_manager) + context_manager.steps_context = {"loop": "{{ steps.loop }}"} + template = "{{ steps.loop }}" + result = iohandler.render(template) + assert ( + result == "{{ steps.loop }}" + ), "Expected no change due to max iterations limit" + + +def test_render_with_consts(context_manager): + iohandler = IOHandler(context_manager) + context_manager.alert = AlertDto( + **{ + "id": "test", + "name": "test", + "lastReceived": "2024-03-20T00:00:00.000Z", + "source": ["sentry"], + "date": "2024-08-16T14:21:00.000-0500", + "host": "example.com", + } + ) + context_manager.event_context = context_manager.alert + context_manager.current_step_vars = {"alert_tier": "critical"} + consts = { + "email_template": ( + "Hi,
" + "This {{ vars.alert_tier }} is triggered because the pipelines for {{ alert.host }} are down for more than 0 minutes.
" + "Please visit monitoring.keeohq.dev for more!
" + "Regards,
" + "KeepHQ dev Monitoring
" + ) + } + context_manager.consts_context = consts + template = "{{ consts.email_template }}" + result = iohandler.render(template) + expected_result = ( + "Hi,
" + "This critical is triggered because the pipelines for example.com are down for more than 0 minutes.
" + "Please visit monitoring.keeohq.dev for more!
" + "Regards,
" + "KeepHQ dev Monitoring
" + ) + assert ( + result == expected_result + ), f"Expected '{expected_result}', but got '{result}'" From 52fc04ff7f88c0e5959d96ef7a4c176a6d0213c5 Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Tue, 28 Jan 2025 14:31:00 +0200 Subject: [PATCH 14/39] feat(api): workflows cache (#3178) --- keep/api/observability.py | 8 +++-- keep/parser/parser.py | 43 +++++++++++++++++++++---- keep/workflowmanager/workflowmanager.py | 5 +-- pyproject.toml | 2 +- 4 files changed, 46 insertions(+), 12 deletions(-) diff --git a/keep/api/observability.py b/keep/api/observability.py index 1987a7702f..6dc8adb78a 100644 --- a/keep/api/observability.py +++ b/keep/api/observability.py @@ -23,6 +23,8 @@ from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor +from keep.api.core.config import config + def get_protocol_from_endpoint(endpoint): parsed_url = urlparse(endpoint) @@ -46,7 +48,9 @@ def setup(app: FastAPI): otlp_traces_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", None) otlp_logs_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT", None) otlp_metrics_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT", None) - enable_cloud_trace_exporeter = os.environ.get("CLOUD_TRACE_ENABLED", False) + enable_cloud_trace_exporter = config( + "CLOUD_TRACE_ENABLED", default=False, cast=bool + ) metrics_enabled = os.environ.get("METRIC_OTEL_ENABLED", "") resource = Resource.create({"service.name": service_name}) @@ -75,7 +79,7 @@ def setup(app: FastAPI): if otlp_logs_endpoint: logger.info(f"OTLP Logs endpoint set to {otlp_logs_endpoint}") - if enable_cloud_trace_exporeter: + if enable_cloud_trace_exporter: logger.info("Cloud Trace exporter enabled.") processor = BatchSpanProcessor(CloudTraceSpanExporter()) provider.add_span_processor(processor) diff --git a/keep/parser/parser.py b/keep/parser/parser.py index f9c931dc6f..ccc36077bf 100644 --- a/keep/parser/parser.py +++ b/keep/parser/parser.py @@ -6,7 +6,8 @@ import typing from keep.actions.actions_factory import ActionsCRUD -from keep.api.core.db import get_workflow_id +from keep.api.core.config import config +from keep.api.core.db import get_installed_providers, get_workflow_id from keep.contextmanager.contextmanager import ContextManager from keep.functions import cyaml from keep.providers.providers_factory import ProvidersFactory @@ -18,6 +19,10 @@ class Parser: def __init__(self): self.logger = logging.getLogger(__name__) + self._loaded_providers_cache = {} + self._use_loaded_provider_cache = config( + "KEEP_USE_PROVIDER_CACHE", default=False + ) def _get_workflow_id(self, tenant_id, workflow: dict) -> str: """Support both CLI and API workflows @@ -221,13 +226,38 @@ def _load_providers_from_db( _type_: _description_ """ # If there is no tenant id, e.g. running from CLI, no db here + self.logger.debug("Loading installed providers to context") if not tenant_id: return # Load installed providers all_providers = ProvidersFactory.get_all_providers() - installed_providers = ProvidersFactory.get_installed_providers( - tenant_id=tenant_id, all_providers=all_providers, override_readonly=True - ) + # _use_loaded_provider_cache is a flag to control whether to use the loaded providers cache + if not self._loaded_providers_cache or not self._use_loaded_provider_cache: + # this should print once when the providers are loaded for the first time + self.logger.info("Loading installed providers to workfloe") + installed_providers = ProvidersFactory.get_installed_providers( + tenant_id=tenant_id, all_providers=all_providers, override_readonly=True + ) + self._loaded_providers_cache = installed_providers + self.logger.info("Installed providers loaded successfully") + else: + self.logger.debug("Using cached loaded providers") + # before we can use cache, we need to check if new providers are added or deleted + _installed_providers = get_installed_providers(tenant_id=tenant_id) + _installed_providers_ids = set([p.id for p in _installed_providers]) + _cached_provider_ids = set([p.id for p in self._loaded_providers_cache]) + if _installed_providers_ids != _cached_provider_ids: + # this should print only when provider deleted/added + self.logger.info("Providers cache is outdated, reloading providers") + installed_providers = ProvidersFactory.get_installed_providers( + tenant_id=tenant_id, + all_providers=all_providers, + override_readonly=True, + ) + self._loaded_providers_cache = installed_providers + self.logger.info("Providers cache reloaded") + else: + installed_providers = self._loaded_providers_cache for provider in installed_providers: self.logger.debug("Loading provider", extra={"provider_id": provider.id}) try: @@ -241,6 +271,7 @@ def _load_providers_from_db( self.logger.error( f"Error loading provider {provider.id}", extra={"exception": e} ) + self.logger.debug("Installed providers loaded successfully") return installed_providers def _parse_providers_from_env(self, context_manager: ContextManager): @@ -257,9 +288,7 @@ def _parse_providers_from_env(self, context_manager: ContextManager): if providers_json and re.compile(r"^(\/|\.\/|\.\.\/).*\.json$").match( providers_json ): - with open( - file=providers_json, mode="r", encoding="utf8" - ) as file: + with open(file=providers_json, mode="r", encoding="utf8") as file: providers_json = file.read() if providers_json: diff --git a/keep/workflowmanager/workflowmanager.py b/keep/workflowmanager/workflowmanager.py index 83d045a58d..9954eaf0fe 100644 --- a/keep/workflowmanager/workflowmanager.py +++ b/keep/workflowmanager/workflowmanager.py @@ -193,8 +193,8 @@ def insert_events(self, tenant_id, events: typing.List[AlertDto | IncidentDto]): }, ) if event_val is None: - self.logger.warning( - "Failed to run filter, skipping the event. Probably misconfigured workflow.", + self.logger.debug( + "Failed to run filter, skipping the event. This may happen if the event does not have the filter_key as attribute.", extra={ "tenant_id": tenant_id, "filter_key": filter_key, @@ -321,6 +321,7 @@ def insert_events(self, tenant_id, events: typing.List[AlertDto | IncidentDto]): } ) self.logger.info("Workflow added to run") + self.logger.info("All workflows added to run") def _get_event_value(self, event, filter_key): # if the filter key is a nested key, get the value diff --git a/pyproject.toml b/pyproject.toml index 69d87d45d1..b8805402fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.2" +version = "0.35.3" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] From aee3b3fd3a5281abe314c2ff7f6a01fe86ae74bc Mon Sep 17 00:00:00 2001 From: Tal Date: Tue, 28 Jan 2025 16:29:18 +0200 Subject: [PATCH 15/39] fix(ui): missing columns in history (#3188) --- .../(keep)/alerts/alert-history-charts.tsx | 8 ++++-- keep-ui/app/(keep)/alerts/alert-history.tsx | 28 +++++++++++++++++-- keep-ui/app/(keep)/alerts/alert-menu.tsx | 7 ++++- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/keep-ui/app/(keep)/alerts/alert-history-charts.tsx b/keep-ui/app/(keep)/alerts/alert-history-charts.tsx index 798996039f..17e4580248 100644 --- a/keep-ui/app/(keep)/alerts/alert-history-charts.tsx +++ b/keep-ui/app/(keep)/alerts/alert-history-charts.tsx @@ -10,10 +10,14 @@ interface Props { } const getDateKey = (date: Date, timeUnit: string) => { + const hours = date.getHours().toString().padStart(2, "0"); + const minutes = date.getMinutes().toString().padStart(2, "0"); + const seconds = date.getSeconds().toString().padStart(2, "0"); + if (timeUnit === "Minutes") { - return `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; + return `${hours}:${minutes}:${seconds}`; } else if (timeUnit === "Hours") { - return `${date.getHours()}:${date.getMinutes()}`; + return `${hours}:${minutes}`; } else { return `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}`; } diff --git a/keep-ui/app/(keep)/alerts/alert-history.tsx b/keep-ui/app/(keep)/alerts/alert-history.tsx index 948d243063..0cc38a22ec 100644 --- a/keep-ui/app/(keep)/alerts/alert-history.tsx +++ b/keep-ui/app/(keep)/alerts/alert-history.tsx @@ -1,5 +1,5 @@ import { Fragment } from "react"; -import { AlertDto } from "@/entities/alerts/model"; +import { AlertDto, AlertKnownKeys } from "@/entities/alerts/model"; import { AlertTable } from "./alert-table"; import { useAlertTableCols } from "./alert-table-utils"; import { Button, Flex, Subtitle, Title, Divider } from "@tremor/react"; @@ -23,7 +23,31 @@ const AlertHistoryPanel = ({ }: AlertHistoryPanelProps) => { const router = useRouter(); - const alertTableColumns = useAlertTableCols(); + const additionalColsToGenerate = [ + ...new Set( + alertsHistoryWithDate.flatMap((alert) => { + const keys = Object.keys(alert).filter( + (key) => !AlertKnownKeys.includes(key) + ); + return keys.flatMap((key) => { + if ( + typeof alert[key as keyof AlertDto] === "object" && + alert[key as keyof AlertDto] !== null + ) { + return Object.keys(alert[key as keyof AlertDto] as object).map( + (subKey) => `${key}.${subKey}` + ); + } + return key; + }); + }) + ), + ]; + + const alertTableColumns = useAlertTableCols({ + additionalColsToGenerate: additionalColsToGenerate, + presetName: alertsHistoryWithDate.at(0)?.fingerprint ?? "", + }); const sortedHistoryAlert = alertsHistoryWithDate.map((alert) => alert.lastReceived.getTime() diff --git a/keep-ui/app/(keep)/alerts/alert-menu.tsx b/keep-ui/app/(keep)/alerts/alert-menu.tsx index ed174e85b5..4c3d250733 100644 --- a/keep-ui/app/(keep)/alerts/alert-menu.tsx +++ b/keep-ui/app/(keep)/alerts/alert-menu.tsx @@ -171,7 +171,12 @@ export default function AlertMenu({ }, ...(provider?.methods?.map((method) => ({ icon: (props: any) => ( - + ), label: method.name, onClick: () => openMethodModal(method), From 46fd49c7bdf6c481a3a3961fd03920b3d1181c36 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Tue, 28 Jan 2025 17:22:23 +0100 Subject: [PATCH 16/39] feat: deepseek provider (#3180) --- README.md | 51 +++++++ docs/mint.json | 1 + .../documentation/deepseek-provider.mdx | 39 ++++++ docs/providers/overview.mdx | 6 + ...using_structured_output_from_deepseek.yaml | 38 ++++++ keep-ui/public/icons/deepseek-icon.png | Bin 0 -> 8803 bytes keep/providers/deepseek_provider/__init__.py | 0 .../deepseek_provider/deepseek_provider.py | 128 ++++++++++++++++++ 8 files changed, 263 insertions(+) create mode 100644 docs/providers/documentation/deepseek-provider.mdx create mode 100644 examples/workflows/enrich_using_structured_output_from_deepseek.yaml create mode 100644 keep-ui/public/icons/deepseek-icon.png create mode 100644 keep/providers/deepseek_provider/__init__.py create mode 100644 keep/providers/deepseek_provider/deepseek_provider.py diff --git a/README.md b/README.md index 4d9f5067a4..4c6e0588cd 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,57 @@ > Missing a provider? [Submit a new provider request](https://github.com/keephq/keep/issues/new?assignees=&labels=provider&projects=&template=new_provider_request.md&title=) and we'll add it quickly! +### AI Backends for Enrichments, Correlations and Incident Context Gathering + + + + + + + + + + + + + +
+ + Anthropic
+ Anthropic +
+
+ + OpenAI
+ OpenAI +
+
+ + DeepSeek
+ DeepSeek +
+
+ + Ollama
+ Ollama +
+
+ + LlamaCPP
+ LlamaCPP +
+
+ + Grok
+ Grok +
+
+ + Gemini
+ Gemini +
+
+ ### Observability Tools diff --git a/docs/mint.json b/docs/mint.json index f90c61e298..b484bad281 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -144,6 +144,7 @@ "providers/documentation/console-provider", "providers/documentation/coralogix-provider", "providers/documentation/datadog-provider", + "providers/documentation/deepseek-provider", "providers/documentation/discord-provider", "providers/documentation/dynatrace-provider", "providers/documentation/elastic-provider", diff --git a/docs/providers/documentation/deepseek-provider.mdx b/docs/providers/documentation/deepseek-provider.mdx new file mode 100644 index 0000000000..c2040029fa --- /dev/null +++ b/docs/providers/documentation/deepseek-provider.mdx @@ -0,0 +1,39 @@ +--- +title: "DeepSeek Provider" +description: "The DeepSeek Provider enables integration of DeepSeek's language models into Keep." +--- + + + The DeepSeek Provider supports querying DeepSeek language models for prompt-based + interactions. + + +## Inputs + +The DeepSeek Provider supports the following functions: + +- `prompt`: Interact with DeepSeek's models by sending prompts and receiving responses +- `model`: The model to be used, defaults to `deepseek-reasoner` +- `max_tokens`: Limit amount of tokens returned by the model, default 1024 +- `system_prompt`: Optional system prompt to guide the model's behavior +- `structured_output_format`: Optional JSON format for the structured output (check examples at the GitHub) + +## Outputs + +Currently, the DeepSeek Provider outputs the response from the model based on the prompt provided. + +## Authentication Parameters + +To use the DeepSeek Provider, you'll need an API Key from DeepSeek. The required parameters for authentication are: + +- **api_key** (required): Your DeepSeek API Key. + +## Connecting with the Provider + +To connect to DeepSeek, you'll need to obtain an API Key: + +1. Sign up for an account at [DeepSeek](https://platform.deepseek.com) +2. Navigate to your account settings +3. Generate an API key for Keep + +Use the generated API key in the `authentication` section of your DeepSeek Provider configuration. \ No newline at end of file diff --git a/docs/providers/overview.mdx b/docs/providers/overview.mdx index 53a16c3c79..867ea6f642 100644 --- a/docs/providers/overview.mdx +++ b/docs/providers/overview.mdx @@ -126,6 +126,12 @@ By leveraging Keep Providers, users are able to deeply integrate Keep with the t icon={ } > + } +> + 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 F{tpizLT&&6 literal 0 HcmV?d00001 diff --git a/keep/providers/deepseek_provider/__init__.py b/keep/providers/deepseek_provider/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keep/providers/deepseek_provider/deepseek_provider.py b/keep/providers/deepseek_provider/deepseek_provider.py new file mode 100644 index 0000000000..82dabf7a68 --- /dev/null +++ b/keep/providers/deepseek_provider/deepseek_provider.py @@ -0,0 +1,128 @@ +import json +import dataclasses +import pydantic + +from openai import OpenAI + +from keep.contextmanager.contextmanager import ContextManager +from keep.providers.base.base_provider import BaseProvider +from keep.providers.models.provider_config import ProviderConfig + + +@pydantic.dataclasses.dataclass +class DeepseekProviderAuthConfig: + api_key: str = dataclasses.field( + metadata={ + "required": True, + "description": "DeepSeek API Key", + "sensitive": True, + }, + ) + + +class DeepseekProvider(BaseProvider): + PROVIDER_DISPLAY_NAME = "DeepSeek" + PROVIDER_CATEGORY = ["AI"] + BASE_URL = "https://api.deepseek.com" + + def __init__( + self, context_manager: ContextManager, provider_id: str, config: ProviderConfig + ): + super().__init__(context_manager, provider_id, config) + + def validate_config(self): + self.authentication_config = DeepseekProviderAuthConfig( + **self.config.authentication + ) + + def dispose(self): + pass + + def validate_scopes(self) -> dict[str, bool | str]: + scopes = {} + return scopes + + def _query( + self, + prompt, + model="deepseek-reasoner", + max_tokens=1024, + system_prompt=None, + structured_output_format=None, + ): + client = OpenAI( + api_key=self.authentication_config.api_key, + base_url=self.BASE_URL, + ) + + messages = [] + if system_prompt: + messages.append({"role": "system", "content": system_prompt}) + messages.append({"role": "user", "content": prompt}) + + response = client.chat.completions.create( + model=model, + messages=messages, + max_tokens=max_tokens, + response_format=structured_output_format, + ) + response = response.choices[0].message.content + try: + response = json.loads(response) + except Exception: + pass + + return { + "response": response, + } + + +if __name__ == "__main__": + import os + import logging + + logging.basicConfig(level=logging.DEBUG, handlers=[logging.StreamHandler()]) + context_manager = ContextManager( + tenant_id="singletenant", + workflow_id="test", + ) + + api_key = os.environ.get("DEEPSEEK_API_KEY") + + config = ProviderConfig( + description="DeepSeek Provider", + authentication={ + "api_key": api_key, + }, + ) + + provider = DeepseekProvider( + context_manager=context_manager, + provider_id="deepseek_provider", + config=config, + ) + + # Example usage with system prompt + print( + provider.query( + prompt="Which is the longest river in the world? The Nile River.", + model="deepseek-chat", + system_prompt=""" + The user will provide some exam text. Please parse the "question" and "answer" + and output them in JSON format. + + EXAMPLE INPUT: + Which is the highest mountain in the world? Mount Everest. + + EXAMPLE JSON OUTPUT: + { + "question": "Which is the highest mountain in the world?", + "answer": "Mount Everest" + } + """, + structured_output_format={ + "type": "json_object" + }, + max_tokens=100, + ) + ) \ No newline at end of file From 5006c4f524a4e1511541aab55d93d71952169e5f Mon Sep 17 00:00:00 2001 From: Tal Date: Tue, 28 Jan 2025 23:36:30 +0200 Subject: [PATCH 17/39] fix: don't render providers (#3194) --- keep/iohandler/iohandler.py | 5 +++-- pyproject.toml | 2 +- tests/test_alert_evaluation.py | 38 +++++++++++++++++----------------- tests/test_iohandler.py | 10 +++++++++ 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/keep/iohandler/iohandler.py b/keep/iohandler/iohandler.py index f2749a2437..35c0cc3241 100644 --- a/keep/iohandler/iohandler.py +++ b/keep/iohandler/iohandler.py @@ -406,7 +406,7 @@ def _render(self, key: str, safe=False, default="", additional_context=None): ) safe = False - context = self.context_manager.get_full_context() + context = self.context_manager.get_full_context(exclude_providers=True) if additional_context: context.update(additional_context) @@ -608,7 +608,8 @@ def render_recursively( rendered = html.unescape(rendered) # If no more changes or no more mustache tags, we're done - if rendered == current or "{{" not in rendered: + # we don't want to render providers. ever, so this is a hack for it for now + if rendered == current or "{{" not in rendered or "providers." in rendered: return rendered current = rendered diff --git a/pyproject.toml b/pyproject.toml index b8805402fc..1296aaeab2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.3" +version = "0.35.4" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] diff --git a/tests/test_alert_evaluation.py b/tests/test_alert_evaluation.py index c899223225..a3ae29c281 100644 --- a/tests/test_alert_evaluation.py +++ b/tests/test_alert_evaluation.py @@ -112,7 +112,7 @@ def test_stateless_alerts_firing(db_session, context, severity, if_condition, va context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context["steps"]["this"]["results"][0]["value"] = value context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context keep_provider = KeepProvider(context_manager, "test", {}) result = keep_provider._notify(**kwargs) @@ -204,7 +204,7 @@ def test_stateless_alerts_resolved( context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context["steps"]["this"]["results"][0]["value"] = firing_value context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context keep_provider = KeepProvider(context_manager, "test", {}) # First trigger the alert with firing value result = keep_provider._notify(**kwargs) @@ -221,7 +221,7 @@ def test_stateless_alerts_resolved( # Now update with resolved value context["steps"]["this"]["results"][0]["value"] = resolved_value - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context result = keep_provider._notify(**kwargs) # Verify alert is resolved assert len(result) == 1 @@ -255,7 +255,7 @@ def test_statless_alerts_multiple_alerts(db_session, context): } context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -308,7 +308,7 @@ def test_stateless_alerts_multiple_alerts_resolved(db_session, context): # First create firing alerts context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -371,7 +371,7 @@ def test_stateful_alerts_firing(db_session, context): # First create pending alerts context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context provider = KeepProvider(context_manager, "test", {}) # Get initial state @@ -429,7 +429,7 @@ def test_stateful_alerts_resolved(db_session, context): # First create pending alerts context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context provider = KeepProvider(context_manager, "test", {}) # Get initial state @@ -502,7 +502,7 @@ def test_stateful_alerts_multiple_alerts(db_session, context): with freeze_time("2024-01-26 10:00:00") as frozen_time: context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -514,7 +514,7 @@ def test_stateful_alerts_multiple_alerts(db_session, context): # now create few more alerts more_alerts = genereate_multi_dict("6") context["steps"] = more_alerts - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context result = provider._notify(**kwargs) assert len(result) == 6 @@ -570,7 +570,7 @@ def test_stateful_alerts_multiple_alerts_2(db_session, context): with freeze_time("2024-01-26 10:00:00") as frozen_time: context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda: context + context_manager.get_full_context = lambda exclude_providers: context provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -643,14 +643,14 @@ def test_state_alerts_multiple_firing_transitions(db_session): tenant_id="test", workflow_id="test-workflow-1" ) context_manager1.context = context1 - context_manager1.get_full_context = lambda: context1 + context_manager1.get_full_context = lambda exclude_providers: context1 provider1 = KeepProvider(context_manager1, "test", {}) context_manager2 = ContextManager( tenant_id="test", workflow_id="test-workflow-2" ) context_manager2.context = context2 - context_manager2.get_full_context = lambda: context2 + context_manager2.get_full_context = lambda exclude_providers: context2 provider2 = KeepProvider(context_manager2, "test", {}) # create 3 alerts @@ -737,12 +737,12 @@ def test_make_sure_two_different_workflows_have_different_fingerprints( context_manager1 = ContextManager(tenant_id="test", workflow_id="test-workflow-1") context_manager1.context = context - context_manager1.get_full_context = lambda: context + context_manager1.get_full_context = lambda exclude_providers: context provider1 = KeepProvider(context_manager1, "test", {}) context_manager2 = ContextManager(tenant_id="test", workflow_id="test-workflow-2") context_manager2.context = context - context_manager2.get_full_context = lambda: context + context_manager2.get_full_context = lambda exclude_providers: context provider2 = KeepProvider(context_manager2, "test", {}) result1 = provider1._notify(**kwargs1) @@ -787,7 +787,7 @@ def test_state_alerts_staggered_resolution(db_session): tenant_id="test", workflow_id="test-workflow-1" ) context_manager1.context = context1 - context_manager1.get_full_context = lambda: context1 + context_manager1.get_full_context = lambda exclude_providers: context1 provider1 = KeepProvider(context_manager1, "test", {}) result1 = provider1._notify(**kwargs1) @@ -805,7 +805,7 @@ def test_state_alerts_staggered_resolution(db_session): if alert["metric"]["job"] != "vmagentstaggered" ] context_manager1.context = context1 - context_manager1.get_full_context = lambda: context1 + context_manager1.get_full_context = lambda exclude_providers: context1 result1 = provider1._notify(**kwargs1) assert len(result1) == 3 for alert in result1: @@ -845,7 +845,7 @@ def test_state_alerts_flapping(db_session): tenant_id="test", workflow_id="test-workflow-1" ) context_manager1.context = context1 - context_manager1.get_full_context = lambda: context1 + context_manager1.get_full_context = lambda exclude_providers: context1 provider1 = KeepProvider(context_manager1, "test", {}) result1 = provider1._notify(**kwargs1) @@ -867,7 +867,7 @@ def test_state_alerts_flapping(db_session): if alert["metric"]["job"] != "vmagentflapping" ] context_manager1.context = context1 - context_manager1.get_full_context = lambda: context1 + context_manager1.get_full_context = lambda exclude_providers: context1 result1 = provider1._notify(**kwargs1) # so now we have 2 alerts pending and 1 alert resolved assert len(result1) == 3 @@ -881,7 +881,7 @@ def test_state_alerts_flapping(db_session): frozen_time.tick(delta=timedelta(minutes=1)) context1["steps"]["this"]["results"].append(removed_alert) context_manager1.context = context1 - context_manager1.get_full_context = lambda: context1 + context_manager1.get_full_context = lambda exclude_providers: context1 # it should be 2 firing and 1 pending result1 = provider1._notify(**kwargs1) assert len(result1) == 3 diff --git a/tests/test_iohandler.py b/tests/test_iohandler.py index 71c6d7b72c..3423d78cc5 100644 --- a/tests/test_iohandler.py +++ b/tests/test_iohandler.py @@ -876,6 +876,16 @@ def test_recursive_rendering_max_iterations(context_manager): ), "Expected no change due to max iterations limit" +def test_dont_render_providers(context_manager): + context_manager.providers_context = { + "keephq": '{"auth": "bla"}', + } + iohandler = IOHandler(context_manager) + template = "{{ providers.keephq }}" + result = iohandler.render(template) + assert result == "", "Expected empty string, but got {result}" + + def test_render_with_consts(context_manager): iohandler = IOHandler(context_manager) context_manager.alert = AlertDto( From 075c6b529ca4b72a644fb53855933fe98361df82 Mon Sep 17 00:00:00 2001 From: Tal Date: Wed, 29 Jan 2025 00:53:11 +0200 Subject: [PATCH 18/39] fix: iohandler tests (#3195) --- keep/api/routes/incidents.py | 44 ++++++++++---------- tests/test_alert_evaluation.py | 76 +++++++++++++++++++++++++--------- tests/test_iohandler.py | 4 +- 3 files changed, 80 insertions(+), 44 deletions(-) diff --git a/keep/api/routes/incidents.py b/keep/api/routes/incidents.py index 4e386254e5..e18a8cf843 100644 --- a/keep/api/routes/incidents.py +++ b/keep/api/routes/incidents.py @@ -39,7 +39,11 @@ ) from keep.api.core.dependencies import extract_generic_body, get_pusher_client from keep.api.core.facets import create_facet, delete_facet -from keep.api.core.incidents import get_incident_facets, get_incident_facets_data, get_last_incidents_by_cel +from keep.api.core.incidents import ( + get_incident_facets, + get_incident_facets_data, + get_last_incidents_by_cel, +) from keep.api.models.alert import ( AlertDto, EnrichAlertRequestBody, @@ -58,8 +62,8 @@ SplitIncidentRequestDto, SplitIncidentResponseDto, ) -from keep.api.models.facet import CreateFacetDto, FacetDto from keep.api.models.db.alert import ActionType, AlertAudit +from keep.api.models.facet import CreateFacetDto, FacetDto from keep.api.models.workflow import WorkflowExecutionDTO from keep.api.routes.alerts import _enrich_alert from keep.api.tasks.process_incident_task import process_incident @@ -179,7 +183,9 @@ def get_all_incidents( ) except CelToSqlException as e: logger.exception(f'Error parsing CEL expression "{cel}". {str(e)}') - raise HTTPException(status_code=400, detail=f'Error parsing CEL expression: {cel}') + raise HTTPException( + status_code=400, detail=f"Error parsing CEL expression: {cel}" + ) incidents_dto = [] for incident in incidents: @@ -200,6 +206,7 @@ def get_all_incidents( limit=limit, offset=offset, count=total_count, items=incidents_dto ) + @router.post( "/facets/options", description="Query incident facet options. Accepts dictionary where key is facet id and value is cel to query facet", @@ -230,10 +237,10 @@ def fetch_inicident_facet_options( ) facet_options = get_incident_facets_data( - tenant_id = tenant_id, - allowed_incident_ids=allowed_incident_ids, - facets_query = facets_query - ) + tenant_id=tenant_id, + allowed_incident_ids=allowed_incident_ids, + facets_query=facets_query, + ) logger.info( "Fetched incident facets from DB", @@ -252,7 +259,7 @@ def fetch_inicident_facet_options( def fetch_inicident_facets( authenticated_entity: AuthenticatedEntity = Depends( IdentityManagerFactory.get_auth_verifier(["read:alert"]) - ) + ), ) -> list: tenant_id = authenticated_entity.tenant_id @@ -263,9 +270,7 @@ def fetch_inicident_facets( }, ) - facets = get_incident_facets( - tenant_id = tenant_id - ) + facets = get_incident_facets(tenant_id=tenant_id) logger.info( "Fetched incident facets from DB", @@ -285,7 +290,7 @@ async def add_incidents_facet( create_facet_dto: CreateFacetDto, authenticated_entity: AuthenticatedEntity = Depends( IdentityManagerFactory.get_auth_verifier(["write:incident"]) - ) + ), ) -> FacetDto: tenant_id = authenticated_entity.tenant_id logger.info( @@ -294,12 +299,10 @@ async def add_incidents_facet( "tenant_id": tenant_id, }, ) - created_facet = create_facet( - tenant_id=tenant_id, - facet=create_facet_dto - ) + created_facet = create_facet(tenant_id=tenant_id, facet=create_facet_dto) return created_facet + @router.delete( "/facets/{facet_id}", description="Delete facet for incidents", @@ -308,7 +311,7 @@ async def delete_incidents_facet( facet_id: str, authenticated_entity: AuthenticatedEntity = Depends( IdentityManagerFactory.get_auth_verifier(["write:incident"]) - ) + ), ): tenant_id = authenticated_entity.tenant_id logger.info( @@ -318,11 +321,8 @@ async def delete_incidents_facet( "facet_id": facet_id, }, ) - is_deleted = delete_facet( - tenant_id=tenant_id, - facet_id=facet_id - ) - + is_deleted = delete_facet(tenant_id=tenant_id, facet_id=facet_id) + if not is_deleted: raise HTTPException(status_code=404, detail="Facet not found") diff --git a/tests/test_alert_evaluation.py b/tests/test_alert_evaluation.py index a3ae29c281..3f5456ac75 100644 --- a/tests/test_alert_evaluation.py +++ b/tests/test_alert_evaluation.py @@ -112,7 +112,9 @@ def test_stateless_alerts_firing(db_session, context, severity, if_condition, va context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context["steps"]["this"]["results"][0]["value"] = value context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) keep_provider = KeepProvider(context_manager, "test", {}) result = keep_provider._notify(**kwargs) @@ -204,7 +206,9 @@ def test_stateless_alerts_resolved( context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context["steps"]["this"]["results"][0]["value"] = firing_value context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) keep_provider = KeepProvider(context_manager, "test", {}) # First trigger the alert with firing value result = keep_provider._notify(**kwargs) @@ -221,7 +225,9 @@ def test_stateless_alerts_resolved( # Now update with resolved value context["steps"]["this"]["results"][0]["value"] = resolved_value - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) result = keep_provider._notify(**kwargs) # Verify alert is resolved assert len(result) == 1 @@ -255,7 +261,9 @@ def test_statless_alerts_multiple_alerts(db_session, context): } context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -308,7 +316,9 @@ def test_stateless_alerts_multiple_alerts_resolved(db_session, context): # First create firing alerts context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -371,7 +381,9 @@ def test_stateful_alerts_firing(db_session, context): # First create pending alerts context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider = KeepProvider(context_manager, "test", {}) # Get initial state @@ -429,7 +441,9 @@ def test_stateful_alerts_resolved(db_session, context): # First create pending alerts context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider = KeepProvider(context_manager, "test", {}) # Get initial state @@ -502,7 +516,9 @@ def test_stateful_alerts_multiple_alerts(db_session, context): with freeze_time("2024-01-26 10:00:00") as frozen_time: context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -514,7 +530,9 @@ def test_stateful_alerts_multiple_alerts(db_session, context): # now create few more alerts more_alerts = genereate_multi_dict("6") context["steps"] = more_alerts - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) result = provider._notify(**kwargs) assert len(result) == 6 @@ -570,7 +588,9 @@ def test_stateful_alerts_multiple_alerts_2(db_session, context): with freeze_time("2024-01-26 10:00:00") as frozen_time: context_manager = ContextManager(tenant_id="test", workflow_id="test-workflow") context_manager.context = context - context_manager.get_full_context = lambda exclude_providers: context + context_manager.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider = KeepProvider(context_manager, "test", {}) result = provider._notify(**kwargs) assert len(result) == 3 @@ -643,14 +663,18 @@ def test_state_alerts_multiple_firing_transitions(db_session): tenant_id="test", workflow_id="test-workflow-1" ) context_manager1.context = context1 - context_manager1.get_full_context = lambda exclude_providers: context1 + context_manager1.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context1 + ) provider1 = KeepProvider(context_manager1, "test", {}) context_manager2 = ContextManager( tenant_id="test", workflow_id="test-workflow-2" ) context_manager2.context = context2 - context_manager2.get_full_context = lambda exclude_providers: context2 + context_manager2.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context2 + ) provider2 = KeepProvider(context_manager2, "test", {}) # create 3 alerts @@ -737,12 +761,16 @@ def test_make_sure_two_different_workflows_have_different_fingerprints( context_manager1 = ContextManager(tenant_id="test", workflow_id="test-workflow-1") context_manager1.context = context - context_manager1.get_full_context = lambda exclude_providers: context + context_manager1.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider1 = KeepProvider(context_manager1, "test", {}) context_manager2 = ContextManager(tenant_id="test", workflow_id="test-workflow-2") context_manager2.context = context - context_manager2.get_full_context = lambda exclude_providers: context + context_manager2.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context + ) provider2 = KeepProvider(context_manager2, "test", {}) result1 = provider1._notify(**kwargs1) @@ -787,7 +815,9 @@ def test_state_alerts_staggered_resolution(db_session): tenant_id="test", workflow_id="test-workflow-1" ) context_manager1.context = context1 - context_manager1.get_full_context = lambda exclude_providers: context1 + context_manager1.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context1 + ) provider1 = KeepProvider(context_manager1, "test", {}) result1 = provider1._notify(**kwargs1) @@ -805,7 +835,9 @@ def test_state_alerts_staggered_resolution(db_session): if alert["metric"]["job"] != "vmagentstaggered" ] context_manager1.context = context1 - context_manager1.get_full_context = lambda exclude_providers: context1 + context_manager1.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context1 + ) result1 = provider1._notify(**kwargs1) assert len(result1) == 3 for alert in result1: @@ -845,7 +877,9 @@ def test_state_alerts_flapping(db_session): tenant_id="test", workflow_id="test-workflow-1" ) context_manager1.context = context1 - context_manager1.get_full_context = lambda exclude_providers: context1 + context_manager1.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context1 + ) provider1 = KeepProvider(context_manager1, "test", {}) result1 = provider1._notify(**kwargs1) @@ -867,7 +901,9 @@ def test_state_alerts_flapping(db_session): if alert["metric"]["job"] != "vmagentflapping" ] context_manager1.context = context1 - context_manager1.get_full_context = lambda exclude_providers: context1 + context_manager1.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context1 + ) result1 = provider1._notify(**kwargs1) # so now we have 2 alerts pending and 1 alert resolved assert len(result1) == 3 @@ -881,7 +917,9 @@ def test_state_alerts_flapping(db_session): frozen_time.tick(delta=timedelta(minutes=1)) context1["steps"]["this"]["results"].append(removed_alert) context_manager1.context = context1 - context_manager1.get_full_context = lambda exclude_providers: context1 + context_manager1.get_full_context = ( + lambda exclude_providers=False, exclude_env=False: context1 + ) # it should be 2 firing and 1 pending result1 = provider1._notify(**kwargs1) assert len(result1) == 3 diff --git a/tests/test_iohandler.py b/tests/test_iohandler.py index 3423d78cc5..5780266f36 100644 --- a/tests/test_iohandler.py +++ b/tests/test_iohandler.py @@ -25,9 +25,7 @@ def test_with_basic_context(context_manager): "name": "s2", } s = iohandler.render("hello {{ steps.name }}") - s2 = iohandler.render("hello {{ providers.name }}") assert s == "hello s" - assert s2 == "hello s2" def test_with_function(context_manager): @@ -883,7 +881,7 @@ def test_dont_render_providers(context_manager): iohandler = IOHandler(context_manager) template = "{{ providers.keephq }}" result = iohandler.render(template) - assert result == "", "Expected empty string, but got {result}" + assert "bla" not in result, "Expected empty string, but got {result}" def test_render_with_consts(context_manager): From d90d774f047774cb6df588d1078b1b90982f604a Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Wed, 29 Jan 2025 09:51:09 +0200 Subject: [PATCH 19/39] feat(ui): allow nested labels on grouped by (#3198) --- .../CorrelationSidebar/CorrelationForm.tsx | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/keep-ui/app/(keep)/rules/CorrelationSidebar/CorrelationForm.tsx b/keep-ui/app/(keep)/rules/CorrelationSidebar/CorrelationForm.tsx index 5490c7e712..fd1c6bb6cb 100644 --- a/keep-ui/app/(keep)/rules/CorrelationSidebar/CorrelationForm.tsx +++ b/keep-ui/app/(keep)/rules/CorrelationSidebar/CorrelationForm.tsx @@ -28,10 +28,19 @@ export const CorrelationForm = ({ useFormContext(); const { errors } = formState; + const getNestedKeys = (obj: any, prefix = ""): string[] => { + return Object.entries(obj).reduce((acc, [key, value]) => { + const newKey = prefix ? `${prefix}.${key}` : key; + if (value && typeof value === "object" && !Array.isArray(value)) { + return [...acc, ...getNestedKeys(value, newKey)]; + } + return [...acc, newKey]; + }, []); + }; + const keys = [ ...alertsFound.reduce>((acc, alert) => { - const alertKeys: any = Object.keys(alert); - + const alertKeys = getNestedKeys(alert); return new Set([...acc, ...alertKeys]); }, new Set()), ]; @@ -109,7 +118,7 @@ export const CorrelationForm = ({ ( + render={({ field: { value, onChange } }) => ( ( + render={({ field: { value, onChange } }) => ( Any condition met All conditions met @@ -173,7 +182,7 @@ export const CorrelationForm = ({ ( + render={({ field: { value, onChange } }) => ( Date: Wed, 29 Jan 2025 13:00:40 +0400 Subject: [PATCH 20/39] fix: Add incident resolution logic for enriched alerts (#3185) --- keep/api/routes/alerts.py | 29 +++++++++++++++--- tests/test_incidents.py | 64 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 88 insertions(+), 5 deletions(-) diff --git a/keep/api/routes/alerts.py b/keep/api/routes/alerts.py index 20ffac2790..e25119493d 100644 --- a/keep/api/routes/alerts.py +++ b/keep/api/routes/alerts.py @@ -14,12 +14,14 @@ from fastapi import APIRouter, Depends, HTTPException, Query, Request from fastapi.responses import JSONResponse from pusher import Pusher +from sqlmodel import Session from keep.api.arq_pool import get_pool from keep.api.bl.enrichments_bl import EnrichmentsBl from keep.api.consts import KEEP_ARQ_QUEUE_BASIC from keep.api.core.config import config -from keep.api.core.db import get_alert_audit as get_alert_audit_db +from keep.api.core.db import get_alert_audit as get_alert_audit_db, enrich_alerts_with_incidents, \ + is_all_alerts_resolved, get_session from keep.api.core.db import ( get_alerts_by_fingerprint, get_alerts_metrics_by_provider, @@ -33,10 +35,11 @@ AlertDto, DeleteRequestBody, EnrichAlertRequestBody, - UnEnrichAlertRequestBody, + UnEnrichAlertRequestBody, IncidentStatus, ) from keep.api.models.alert_audit import AlertAuditDto from keep.api.models.db.alert import ActionType +from keep.api.models.db.rule import ResolveOn from keep.api.models.search_alert import SearchAlertsRequest from keep.api.models.time_stamp import TimeStampFilter from keep.api.tasks.process_event_task import process_event @@ -555,11 +558,13 @@ def enrich_alert( dispose_on_new_alert: Optional[bool] = Query( False, description="Dispose on new alert" ), + session: Session = Depends(get_session), ) -> dict[str, str]: return _enrich_alert( enrich_data, authenticated_entity=authenticated_entity, dispose_on_new_alert=dispose_on_new_alert, + session=session ) @@ -569,6 +574,7 @@ def _enrich_alert( IdentityManagerFactory.get_auth_verifier(["write:alert"]) ), dispose_on_new_alert: Optional[bool] = False, + session: Optional[Session] = None ) -> dict[str, str]: tenant_id = authenticated_entity.tenant_id logger.info( @@ -580,9 +586,10 @@ def _enrich_alert( ) should_run_workflow = False + should_check_incidents_resolution = False try: - enrichement_bl = EnrichmentsBl(tenant_id) + enrichement_bl = EnrichmentsBl(tenant_id, db=session) # Shahar: TODO, change to the specific action type, good enough for now if ( "status" in enrich_data.enrichments @@ -603,6 +610,8 @@ def _enrich_alert( ) action_description = f"Alert status was changed to {enrich_data.enrichments['status']} by API `{authenticated_entity.api_key_name}`" should_run_workflow = True + if enrich_data.enrichments["status"] == "resolved": + should_check_incidents_resolution = True elif "note" in enrich_data.enrichments and enrich_data.enrichments["note"]: action_type = ActionType.COMMENT action_description = f"Comment added by {authenticated_entity.email} - {enrich_data.enrichments['note']}" @@ -630,7 +639,7 @@ def _enrich_alert( ) return {"status": "failed"} - enriched_alerts_dto = convert_db_alerts_to_dto_alerts(alert) + enriched_alerts_dto = convert_db_alerts_to_dto_alerts(alert, session=session) # push the enriched alert to the elasticsearch try: logger.info("Pushing enriched alert to elasticsearch") @@ -666,6 +675,18 @@ def _enrich_alert( workflow_manager.insert_events( tenant_id=tenant_id, events=[enriched_alerts_dto[0]] ) + + if should_check_incidents_resolution: + enrich_alerts_with_incidents(tenant_id=tenant_id, alerts=alert) + for incident in alert[0]._incidents: + if incident.resolve_on == ResolveOn.ALL.value and is_all_alerts_resolved( + incident=incident, + session=session + ): + incident.status = IncidentStatus.RESOLVED.value + session.add(incident) + session.commit() + return {"status": "ok"} except Exception as e: diff --git a/tests/test_incidents.py b/tests/test_incidents.py index 21f80d92b8..2a460d7419 100644 --- a/tests/test_incidents.py +++ b/tests/test_incidents.py @@ -21,7 +21,7 @@ remove_alerts_to_incident_by_incident_id, ) from keep.api.core.db_utils import get_json_extract_field -from keep.api.core.dependencies import SINGLE_TENANT_UUID +from keep.api.core.dependencies import SINGLE_TENANT_UUID, SINGLE_TENANT_EMAIL from keep.api.models.alert import ( AlertSeverity, AlertStatus, @@ -33,6 +33,8 @@ from keep.api.models.db.alert import Alert, LastAlertToIncident, Incident, NULL_FOR_DELETED_AT from keep.api.models.db.tenant import Tenant from keep.api.utils.enrichment_helpers import convert_db_alerts_to_dto_alerts +from keep.identitymanager.authenticatedentity import AuthenticatedEntity +from keep.identitymanager.rbac import Admin from tests.conftest import ElasticClientMock, PusherMock, WorkflowManagerMock from tests.fixtures.client import client, test_app # noqa @@ -451,6 +453,66 @@ def test_incident_status_change( ) +@pytest.mark.parametrize("test_app", ["NO_AUTH"], indirect=True) +def test_incident_status_change_manual_alert_enrichment( + db_session, client, test_app, create_alert +): + # Create an alert and add it to an incident + create_alert( + "alert-test", + AlertStatus.FIRING, + datetime.utcnow(), + {"severity": AlertSeverity.CRITICAL.value}, + ) + alert = db_session.query(Alert).filter_by(fingerprint="alert-test").first() + incident = create_incident_from_dict( + SINGLE_TENANT_UUID, + {"user_generated_name": "Test Incident", "user_summary": "Test Incident Summary"}, + ) + add_alerts_to_incident_by_incident_id( + SINGLE_TENANT_UUID, incident.id, [alert.fingerprint], session=db_session + ) + + # Ensure incident has one firing alert + incident = get_incident_by_id(SINGLE_TENANT_UUID, incident.id, with_alerts=True, session=db_session) + assert incident.status == IncidentStatus.FIRING.value + assert len(incident._alerts) == 1 + assert incident._alerts[0].event["status"] == AlertStatus.FIRING.value + + with patch( + "keep.identitymanager.identity_managers.noauth.noauth_authverifier.NoAuthVerifier._verify_api_key", + return_value=AuthenticatedEntity( + tenant_id=SINGLE_TENANT_UUID, + email=SINGLE_TENANT_EMAIL, + api_key_name=SINGLE_TENANT_UUID, + role=Admin.get_name(), + ) + ): + # Manually enrich the alert to change its status to resolved + client.post( + f"/alerts/enrich?dispose_on_new_alert=true", + headers={"x-api-key": "some-key"}, + json={ + "enrichments": { + "status": AlertStatus.RESOLVED.value, + "dismissed": False, + "dismissUntil": "" + }, + "fingerprint": incident._alerts[0].fingerprint + } + ) + + # Refresh incident data and verify status change + db_session.expire_all() + incident = get_incident_by_id(SINGLE_TENANT_UUID, incident.id, with_alerts=True, session=db_session) + assert len(incident._alerts) == 1 + + alert_dtos = convert_db_alerts_to_dto_alerts(incident._alerts) + + assert alert_dtos[0].status == AlertStatus.RESOLVED.value + assert incident.status == IncidentStatus.RESOLVED.value + + @pytest.mark.parametrize("test_app", ["NO_AUTH"], indirect=True) def test_incident_metadata( db_session, client, test_app, setup_stress_alerts_no_elastic From 69f1420bdacd3cb8ff0fd03489e1dfea0a339fd6 Mon Sep 17 00:00:00 2001 From: Tal Date: Wed, 29 Jan 2025 11:16:48 +0200 Subject: [PATCH 21/39] fix(checkmk): last received (#3200) --- .../checkmk_provider/checkmk_provider.py | 34 ++++++++++++++++--- .../checkmk_provider/webhook-keep.py | 2 ++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/keep/providers/checkmk_provider/checkmk_provider.py b/keep/providers/checkmk_provider/checkmk_provider.py index 4f149e7b9f..3c5c7033b0 100644 --- a/keep/providers/checkmk_provider/checkmk_provider.py +++ b/keep/providers/checkmk_provider/checkmk_provider.py @@ -2,6 +2,8 @@ Checkmk is a monitoring tool for Infrastructure and Application Monitoring. """ +from datetime import datetime, timezone + from keep.api.models.alert import AlertDto, AlertSeverity, AlertStatus from keep.contextmanager.contextmanager import ContextManager from keep.providers.base.base_provider import BaseProvider @@ -57,6 +59,20 @@ def validate_config(): """ pass + @staticmethod + def convert_to_utc_isoformat(self, short_date_time: str) -> str: + try: + # Parse the short_date_time string to a datetime object + local_dt = datetime.strptime(short_date_time, "%Y-%m-%d %H:%M:%S") + + # Convert to UTC + utc_dt = local_dt.replace(tzinfo=timezone.utc) + + # Return the ISO 8601 format + return utc_dt.isoformat() + except Exception: + return short_date_time + @staticmethod def _format_alert( event: dict, provider_instance: BaseProvider = None @@ -70,10 +86,7 @@ def _check_values(value): return None return event.get(value) - """ - Service alerts don't have a status field, so we are mapping the status based on the severity. - """ - + # Service alerts don't have a status field, so we are mapping the status based on the severity. def _set_severity(status): if status == "UP": return AlertSeverity.INFO @@ -82,6 +95,17 @@ def _set_severity(status): elif status == "UNREACH": return AlertSeverity.CRITICAL + # https://forum.checkmk.com/t/convert-notify-shortdatetime-to-utc-timezone/20158/2 + microtime = _check_values("micro_time") + if microtime: + ts = int(int(microtime) / 1000000) + dt_object = datetime.datetime.fromtimestamp(ts) + last_received = dt_object.isoformat() + else: + last_received = CheckmkProvider.convert_to_utc_isoformat( + _check_values("short_date_time") + ) + alert = AlertDto( id=_check_values("id"), name=_check_values("check_command"), @@ -109,7 +133,7 @@ def _set_severity(status): contact_email=_check_values("contact_email"), contact_pager=_check_values("contact_pager"), date=_check_values("date"), - lastReceived=_check_values("short_date_time"), + lastReceived=last_received, long_date=_check_values("long_date_time"), ) diff --git a/keep/providers/checkmk_provider/webhook-keep.py b/keep/providers/checkmk_provider/webhook-keep.py index 0cf30a2537..1f30621826 100644 --- a/keep/providers/checkmk_provider/webhook-keep.py +++ b/keep/providers/checkmk_provider/webhook-keep.py @@ -47,6 +47,7 @@ def GetNotificationDetails(): DATE = env_vars.get("NOTIFY_DATE") LONGDATETIME = env_vars.get("NOTIFY_LONGDATETIME") SHORTDATETIME = env_vars.get("NOTIFY_SHORTDATETIME") + MICROTIME = env_vars.get("NOTIFY_MICROTIME") HOSTNAME = env_vars.get("NOTIFY_HOSTNAME") HOSTALIAS = env_vars.get("NOTIFY_HOSTALIAS") @@ -85,6 +86,7 @@ def GetNotificationDetails(): "date": DATE, "long_date_time": LONGDATETIME, "short_date_time": SHORTDATETIME, + "micro_time": MICROTIME, } # Host related information From 2e2cf4c481bea8f274da977013624f2a25adaf15 Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Wed, 29 Jan 2025 13:20:45 +0200 Subject: [PATCH 22/39] feat(api): eks provider (#3206) --- docs/mint.json | 1 + docs/providers/documentation/eks-provider.mdx | 132 ++++ docs/providers/overview.mdx | 9 +- examples/workflows/eks_advanced.yml | 64 ++ examples/workflows/eks_basic.yml | 20 + keep-ui/public/icons/eks-icon.png | Bin 0 -> 119420 bytes keep/iohandler/iohandler.py | 2 +- keep/providers/eks_provider/eks_provider.py | 683 ++++++++++++++++++ 8 files changed, 909 insertions(+), 2 deletions(-) create mode 100644 docs/providers/documentation/eks-provider.mdx create mode 100644 examples/workflows/eks_advanced.yml create mode 100644 examples/workflows/eks_basic.yml create mode 100644 keep-ui/public/icons/eks-icon.png create mode 100644 keep/providers/eks_provider/eks_provider.py diff --git a/docs/mint.json b/docs/mint.json index b484bad281..ff838d4485 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -147,6 +147,7 @@ "providers/documentation/deepseek-provider", "providers/documentation/discord-provider", "providers/documentation/dynatrace-provider", + "providers/documentation/eks-provider", "providers/documentation/elastic-provider", "providers/documentation/gcpmonitoring-provider", "providers/documentation/gemini-provider", diff --git a/docs/providers/documentation/eks-provider.mdx b/docs/providers/documentation/eks-provider.mdx new file mode 100644 index 0000000000..27a42f0896 --- /dev/null +++ b/docs/providers/documentation/eks-provider.mdx @@ -0,0 +1,132 @@ +--- +title: "EKS Provider" +description: "EKS provider integrates with AWS EKS and let you interatct with kubernetes clusters hosted on EKS." +--- + +## Inputs +- **command_type** (required): The command type to operate on the k8s cluster: + - `get_pods`: List all pods across namespaces or in a specific namespace + - `get_pvc`: List all persistent volume claims + - `get_node_pressure`: Get node pressure metrics + - `get_deployment`: Get deployment information + - `scale_deployment`: Scale a deployment's replicas + - `exec_command`: Execute a command in a pod + - `restart_pod`: Restart a specific pod + - `get_pod_logs`: Get logs from a pod + +### Command-specific Parameters + +#### For get_pods, get_pvc +- **namespace** (optional): Target specific namespace. If not provided, queries all namespaces + +#### For get_deployment, scale_deployment +- **namespace** (optional): Target namespace (defaults to "default") +- **deployment_name** (required): Name of the deployment +- **replicas** (required for scale_deployment): Number of desired replicas + +#### For exec_command +- **namespace** (required): Pod's namespace +- **pod_name** (required): Name of the pod +- **command** (required): Command to execute (string or array) +- **container** (optional): Container name (defaults to first container) +- **use_shell** (optional): Whether to wrap command in shell (defaults to true) + +#### For restart_pod +- **namespace** (required): Pod's namespace +- **pod_name** (required): Name of the pod + +#### For get_pod_logs +- **namespace** (required): Pod's namespace +- **pod_name** (required): Name of the pod +- **container** (optional): Container name (defaults to first container) +- **tail_lines** (optional): Number of lines to get from the end (defaults to 100) + +## Outputs +The Amazon EKS Provider supports the `query` function with different outputs based on command type: +- `get_pods`: Returns list of pod details +- `get_pvc`: Returns list of PVC details +- `get_node_pressure`: Returns node pressure metrics +- `get_deployment`: Returns deployment details +- `scale_deployment`: Returns scaling operation result +- `exec_command`: Returns command output as string +- `restart_pod`: Returns restart operation status +- `get_pod_logs`: Returns pod logs as string + +## Authentication Parameters +The Amazon EKS Provider uses AWS credentials to allow you to query your cluster resources. You need to provide the following authentication parameters: + +- **access_key** (required): AWS access key ID with EKS permissions +- **secret_access_key** (required): AWS secret access key +- **region** (required): AWS region where the EKS cluster is located (e.g., us-east-1) +- **cluster_name** (required): The name of your EKS cluster + +## Connecting with the Provider +To connect to Amazon EKS, follow these steps: + +1. Log in to your [AWS Console](https://aws.amazon.com/) + +2. Create an IAM user with EKS permissions: + ```bash + aws iam create-user --user-name eks-user + ``` + +3. Attach required policies: + +```bash +aws iam attach-user-policy --user-name eks-user --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy +aws iam attach-user-policy --user-name eks-user --policy-arn arn:aws:iam::aws:policy/AmazonEKSServicePolicy +``` + +4. Create access keys + +```bash +aws iam create-access-key --user-name eks-user +``` + +You should get: + +``` +{ + "AccessKey": { + "AccessKeyId": "AKIAXXXXXXXXXXXXXXXX", + "SecretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "Status": "Active" + } +} +``` + +The `AccessKeyId` is your `access_key` and `SecretAccessKey` is your `secret_access_key`. + +5. Note your cluster name and region from the EKS console or using: + +```bash +aws eks list-clusters --region +``` + +## Required Permissions +The AWS IAM user needs these permissions: + +1. eks:DescribeCluster +2. eks:ListClusters + +Additional permissions for specific operations: + +3. eks:AccessKubernetesApi for pod/deployment operations +4. eks:UpdateCluster for scaling operations + +| Command | AWS IAM Permissions | +|---------|-------------------| +| `get_pods` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | +| `get_pvc` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | +| `get_node_pressure` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | +| `get_deployment` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | +| `scale_deployment` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | +| `exec_command` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | +| `restart_pod` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | +| `get_pod_logs` | `eks:DescribeCluster`
`eks:AccessKubernetesApi` | + + +## Usage Examples + +1. Basic - https://github.com/keephq/keep/blob/main/examples/workflows/eks_basic.yml +2. Advanced - https://github.com/keephq/keep/blob/main/examples/workflows/aks_advanced.yml diff --git a/docs/providers/overview.mdx b/docs/providers/overview.mdx index 867ea6f642..f1117c9aed 100644 --- a/docs/providers/overview.mdx +++ b/docs/providers/overview.mdx @@ -144,6 +144,13 @@ By leveraging Keep Providers, users are able to deeply integrate Keep with the t icon={ } >
+ } +> + + } > - \ No newline at end of file + diff --git a/examples/workflows/eks_advanced.yml b/examples/workflows/eks_advanced.yml new file mode 100644 index 0000000000..15a79a6dfe --- /dev/null +++ b/examples/workflows/eks_advanced.yml @@ -0,0 +1,64 @@ +workflow: + id: eks-example-advanced + description: eks-example-advanced + triggers: + - type: manual + steps: + # get all pods + - name: get-pods + provider: + type: eks + config: "{{ providers.eks }}" + with: + command_type: get_pods + + # get specific deployment info + - name: get-deployment-info + provider: + type: eks + config: "{{ providers.eks }}" + with: + command_type: get_deployment + namespace: default + deployment_name: nginx-test + + # scale up deployment + - name: scale-up + provider: + type: eks + config: "{{ providers.eks }}" + with: + command_type: scale_deployment + namespace: default + deployment_name: nginx-test + replicas: 4 + + # get pods after scaling + - name: get-pods-after-scale + provider: + type: eks + config: "{{ providers.eks }}" + with: + command_type: get_pods + namespace: default + + actions: + - name: echo-all-pods + foreach: "{{ steps.get-pods.results }}" + provider: + type: console + with: + message: "Pod name: {{ foreach.value.metadata.name }} || Namespace: {{ foreach.value.metadata.namespace }} || Status: {{ foreach.value.status.phase }}" + + - name: echo-deployment-info + provider: + type: console + with: + message: "Deployment {{ steps.get-deployment-info.results.metadata.name }} has {{ steps.get-deployment-info.results.status.replicas }} replicas" + + - name: echo-scaled-pods + foreach: "{{ steps.get-pods-after-scale.results }}" + provider: + type: console + with: + message: "After scaling - Pod name: {{ foreach.value.metadata.name }} || Status: {{ foreach.value.status.phase }}" diff --git a/examples/workflows/eks_basic.yml b/examples/workflows/eks_basic.yml new file mode 100644 index 0000000000..fd8d4882ea --- /dev/null +++ b/examples/workflows/eks_basic.yml @@ -0,0 +1,20 @@ +workflow: + id: eks-example + description: eks-example + triggers: + - type: manual + steps: + # get all pods + - name: get-pods + provider: + type: eks + config: "{{ providers.eks }}" + with: + command_type: get_pods + actions: + - name: echo-pod-status + foreach: "{{ steps.get-pods.results }}" + provider: + type: console + with: + message: "Pod name: {{ foreach.value.metadata.name }} || Namespace: {{ foreach.value.metadata.namespace }} || Status: {{ foreach.value.status.phase }}" diff --git a/keep-ui/public/icons/eks-icon.png b/keep-ui/public/icons/eks-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fa629213ad5d74a6280af4d0712a84fbdfdf2fb9 GIT binary patch literal 119420 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 btA9C8A2e%D{AyVP0bc}*lejW7_gnu1zx25$ literal 0 HcmV?d00001 diff --git a/keep/iohandler/iohandler.py b/keep/iohandler/iohandler.py index 35c0cc3241..8ec4a76b3f 100644 --- a/keep/iohandler/iohandler.py +++ b/keep/iohandler/iohandler.py @@ -162,7 +162,7 @@ def parse(self, string, safe=False, default="", additional_context=None): # inject the context string = self._render(string, safe, default, additional_context) - # Now, extract the token if exists -תכ + # Now, extract the token if exists parsed_string = copy.copy(string) if string.startswith("raw_render_without_execution(") and string.endswith(")"): diff --git a/keep/providers/eks_provider/eks_provider.py b/keep/providers/eks_provider/eks_provider.py new file mode 100644 index 0000000000..f65772944e --- /dev/null +++ b/keep/providers/eks_provider/eks_provider.py @@ -0,0 +1,683 @@ +""" +EksProvider is a class that provides a way to interact with AWS EKS clusters. +""" + +import dataclasses +import logging + +import boto3 +import pydantic +from kubernetes import client, config +from kubernetes.stream import stream + +from keep.contextmanager.contextmanager import ContextManager +from keep.exceptions.provider_exception import ProviderException +from keep.providers.base.base_provider import BaseProvider +from keep.providers.models.provider_config import ProviderConfig, ProviderScope +from keep.providers.models.provider_method import ProviderMethod + + +@pydantic.dataclasses.dataclass +class EksProviderAuthConfig: + """EKS authentication configuration.""" + + access_key: str = dataclasses.field( + metadata={"required": True, "description": "AWS access key", "sensitive": True} + ) + + secret_access_key: str = dataclasses.field( + metadata={ + "required": True, + "description": "AWS secret access key", + "sensitive": True, + } + ) + + region: str = dataclasses.field( + metadata={ + "required": True, + "description": "AWS region where the EKS cluster is located", + "sensitive": False, + "hint": "e.g. us-east-1", + } + ) + + cluster_name: str = dataclasses.field( + metadata={ + "required": True, + "description": "Name of the EKS cluster", + "sensitive": False, + } + ) + + +class EksProvider(BaseProvider): + """Interact with and query AWS EKS clusters.""" + + PROVIDER_DISPLAY_NAME = "EKS" + PROVIDER_CATEGORY = ["Cloud Infrastructure"] + + PROVIDER_SCOPES = [ + ProviderScope( + name="eks:DescribeCluster", + description="Required to get cluster information", + documentation_url="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html", + mandatory=True, + alias="Describe Cluster", + ), + ProviderScope( + name="eks:ListClusters", + description="Required to list available clusters", + documentation_url="https://docs.aws.amazon.com/eks/latest/APIReference/API_ListClusters.html", + mandatory=True, + alias="List Clusters", + ), + ProviderScope( + name="pods:delete", + description="Required to delete/restart pods", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Delete/Restart Pods", + ), + ProviderScope( + name="deployments:scale", + description="Required to scale deployments", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Scale Deployments", + ), + ProviderScope( + name="pods:list", + description="Required to list pods", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="List Pods", + ), + ProviderScope( + name="pods:get", + description="Required to get pod details", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Get Pod Details", + ), + ProviderScope( + name="pods:logs", + description="Required to get pod logs", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Get Pod Logs", + ), + ] + """ + Shahar: hard to test the following scopes because by default we don't have the pod name that we can test on + ProviderScope( + name="pods:exec", + description="Required to execute commands in pods", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Execute Pod Commands" + ), + """ + + PROVIDER_METHODS = [ + ProviderMethod( + name="List Pods", + func_name="get_pods", + scopes=["pods:list", "pods:get"], + description="List all pods in a namespace or across all namespaces", + type="view", + ), + ProviderMethod( + name="List Persistent Volume Claims", + func_name="get_pvc", + scopes=["pods:list"], + description="List all PVCs in a namespace or across all namespaces", + type="view", + ), + ProviderMethod( + name="Get Node Pressure", + func_name="get_node_pressure", + scopes=["pods:list"], + description="Get pressure metrics for all nodes", + type="view", + ), + ProviderMethod( + name="Execute Command", + func_name="exec_command", + scopes=["pods:exec"], + description="Execute a command in a pod", + type="action", + ), + ProviderMethod( + name="Restart Pod", + func_name="restart_pod", + scopes=["pods:delete"], + description="Restart a pod by deleting it", + type="action", + ), + ProviderMethod( + name="Get Deployment", + func_name="get_deployment", + scopes=["pods:list"], + description="Get deployment information", + type="view", + ), + ProviderMethod( + name="Scale Deployment", + func_name="scale_deployment", + scopes=["deployments:scale"], + description="Scale a deployment to specified replicas", + type="action", + ), + ProviderMethod( + name="Get Pod Logs", + func_name="get_pod_logs", + scopes=["pods:logs"], + description="Get logs from a pod", + type="view", + ), + ] + + def __init__( + self, context_manager: ContextManager, provider_id: str, config: ProviderConfig + ): + super().__init__(context_manager, provider_id, config) + self._client = None + + def dispose(self): + """Clean up any resources.""" + if self._client: + self._client.api_client.rest_client.pool_manager.clear() + + def validate_config(self): + """Validate the provided configuration.""" + self.authentication_config = EksProviderAuthConfig(**self.config.authentication) + + def validate_scopes(self) -> dict[str, bool | str]: + """Validate if the credentials have the required permissions.""" + scopes = {scope.name: False for scope in self.PROVIDER_SCOPES} + + try: + self.logger.info("Starting EKS API permissions validation") + # Test EKS API permissions + eks_client = boto3.client( + "eks", + aws_access_key_id=self.authentication_config.access_key, + aws_secret_access_key=self.authentication_config.secret_access_key, + region_name=self.authentication_config.region, + ) + + try: + self.logger.info("Validating eks:ListClusters permission") + eks_client.list_clusters() + scopes["eks:ListClusters"] = True + self.logger.info("eks:ListClusters permission validated successfully") + except Exception as e: + self.logger.info(f"eks:ListClusters permission validation failed: {e}") + scopes["eks:ListClusters"] = str(e) + + try: + self.logger.info("Validating eks:DescribeCluster permission") + eks_client.describe_cluster( + name=self.authentication_config.cluster_name + ) + scopes["eks:DescribeCluster"] = True + self.logger.info( + "eks:DescribeCluster permission validated successfully" + ) + except Exception as e: + self.logger.info( + f"eks:DescribeCluster permission validation failed: {e}" + ) + scopes["eks:DescribeCluster"] = str(e) + + # Test Kubernetes API permissions using the client + try: + self.logger.info("Starting Kubernetes API permissions validation") + k8s_client = self.client # This will initialize connection to cluster + + # Test pods:list and pods:get + try: + self.logger.info("Validating pods:list and pods:get permissions") + k8s_client.list_pod_for_all_namespaces(limit=1) + scopes["pods:list"] = True + scopes["pods:get"] = True + self.logger.info( + "pods:list and pods:get permissions validated successfully" + ) + except Exception as e: + self.logger.info( + f"pods:list and pods:get permissions validation failed: {e}" + ) + scopes["pods:list"] = str(e) + scopes["pods:get"] = str(e) + + # Test pods:logs + try: + self.logger.info("Validating pods:logs permission") + pods = k8s_client.list_pod_for_all_namespaces(limit=1) + if pods.items: + pod = pods.items[0] + containers = pod.spec.containers + if containers: + k8s_client.read_namespaced_pod_log( + name=pod.metadata.name, + namespace=pod.metadata.namespace, + container=containers[0].name, + limit_bytes=100, + ) + scopes["pods:logs"] = True + self.logger.info("pods:logs permission validated successfully") + except Exception as e: + self.logger.info(f"pods:logs permission validation failed: {e}") + scopes["pods:logs"] = str(e) + + # Test pods:delete + try: + self.logger.info("Validating pods:delete permission") + # We don't actually delete, just check if we can get the delete API + if pods.items: + pod = pods.items[0] + k8s_client.delete_namespaced_pod.__doc__ + scopes["pods:delete"] = True + self.logger.info("pods:delete permission validated successfully") + except Exception as e: + self.logger.info(f"pods:delete permission validation failed: {e}") + scopes["pods:delete"] = str(e) + + # Test deployments:scale + apps_v1 = client.AppsV1Api() + try: + self.logger.info("Validating deployments:scale permission") + deployments = apps_v1.list_deployment_for_all_namespaces(limit=1) + if deployments.items: + apps_v1.patch_namespaced_deployment_scale.__doc__ + scopes["deployments:scale"] = True + self.logger.info( + "deployments:scale permission validated successfully" + ) + except Exception as e: + self.logger.info( + f"deployments:scale permission validation failed: {e}" + ) + scopes["deployments:scale"] = str(e) + + except Exception as e: + self.logger.exception("Error validating Kubernetes API scopes") + for scope in scopes: + if scope not in ["eks:ListClusters", "eks:DescribeCluster"]: + scopes[scope] = str(e) + + except Exception as e: + self.logger.exception("Error validating AWS EKS scopes") + for scope in scopes: + scopes[scope] = str(e) + + self.logger.info("Completed scope validation") + return scopes + + @property + def client(self): + """Get or create the Kubernetes client for EKS.""" + if self._client is None: + self._client = self.__generate_client() + return self._client + + def get_pods(self, namespace: str = None) -> list: + """List all pods in a namespace or across all namespaces.""" + if namespace: + self.logger.info(f"Listing pods in namespace {namespace}") + pods = self.client.list_namespaced_pod(namespace=namespace) + else: + self.logger.info("Listing pods across all namespaces") + pods = self.client.list_pod_for_all_namespaces() + return [pod.to_dict() for pod in pods.items] + + def get_pvc(self, namespace: str = None) -> list: + """List all PVCs in a namespace or across all namespaces.""" + if namespace: + self.logger.info(f"Listing PVCs in namespace {namespace}") + pvcs = self.client.list_namespaced_persistent_volume_claim( + namespace=namespace + ) + else: + self.logger.info("Listing PVCs across all namespaces") + pvcs = self.client.list_persistent_volume_claim_for_all_namespaces() + return [pvc.to_dict() for pvc in pvcs.items] + + def get_node_pressure(self) -> list: + """Get pressure metrics for all nodes.""" + self.logger.info("Listing all nodes") + nodes = self.client.list_node() + node_pressures = [] + for node in nodes.items: + pressures = { + "name": node.metadata.name, + "conditions": [], + } + for condition in node.status.conditions: + if condition.type in [ + "MemoryPressure", + "DiskPressure", + "PIDPressure", + ]: + pressures["conditions"].append(condition.to_dict()) + node_pressures.append(pressures) + return node_pressures + + def __check_pod_shell_access(self, pod, container_name: str) -> str: + """ + Check if pod has shell access and return appropriate shell. + + Args: + pod: The Kubernetes pod object + container_name: Name of the container to check + + Returns: + str: Path to available shell (/bin/bash or /bin/sh) + + Raises: + ProviderException: If no shell access is available + """ + # Get the container object + container = next( + (c for c in pod.spec.containers if c.name == container_name), + pod.spec.containers[0], + ) + + # Try different shells in order of preference + for shell in ["/bin/bash", "/bin/sh"]: + try: + result = self.client.connect_get_namespaced_pod_exec( + name=pod.metadata.name, + namespace=pod.metadata.namespace, + container=container.name, + command=[shell, "-c", "exit 0"], + stderr=True, + stdin=False, + stdout=True, + tty=False, + _preload_content=True, + ) + if result == "": # Success + return shell + except Exception: + continue + + raise ProviderException( + f"No shell access available in pod {pod.metadata.name} container {container_name}" + ) + + def exec_command( + self, namespace: str, pod_name: str, command: str, container: str = None + ) -> str: + """Execute a command in a pod.""" + if not all([namespace, pod_name]): + raise ProviderException( + "namespace and pod_name are required for exec_command" + ) + + # Get the pod + self.logger.info(f"Reading pod {pod_name} in namespace {namespace}") + pod = self.client.read_namespaced_pod(name=pod_name, namespace=namespace) + + # If container not specified, use first container + if not container: + container = pod.spec.containers[0].name + + try: + # First try direct command execution + if isinstance(command, list): + exec_command = command + else: + # Try to find a shell + shell = self.__check_pod_shell_access(pod, container) + exec_command = [shell, "-c", command] + + # Execute the command + self.logger.info( + f"Executing command in pod {pod_name} container {container}" + ) + ws_client = stream( + self.client.connect_get_namespaced_pod_exec, + pod_name, + namespace, + container=container, + command=exec_command, + stderr=True, + stdin=False, + stdout=True, + tty=False, + _preload_content=False, + ) + + # Read output + result = "" + error = "" + + while ws_client.is_open(): + ws_client.update(timeout=1) + if ws_client.peek_stdout(): + result += ws_client.read_stdout() + if ws_client.peek_stderr(): + error += ws_client.read_stderr() + + ws_client.close() + + if error: + raise ProviderException(f"Command execution failed: {error}") + + return result.strip() + + except Exception as e: + container_info = next( + (c for c in pod.spec.containers if c.name == container), None + ) + image = container_info.image if container_info else "unknown" + raise ProviderException( + f"Failed to execute command in pod {pod_name} (container: {container}, " + f"image: {image}): {str(e)}" + ) + + def restart_pod(self, namespace: str, pod_name: str): + """Restart a pod by deleting it.""" + if not all([namespace, pod_name]): + raise ProviderException( + "namespace and pod_name are required for restart_pod" + ) + + self.logger.info(f"Deleting pod {pod_name} in namespace {namespace}") + return self.client.delete_namespaced_pod(name=pod_name, namespace=namespace) + + def get_deployment(self, deployment_name: str, namespace: str = "default"): + """Get deployment information.""" + if not deployment_name: + raise ProviderException("deployment_name is required for get_deployment") + + apps_v1 = client.AppsV1Api() + try: + deployment = apps_v1.read_namespaced_deployment( + name=deployment_name, namespace=namespace + ) + return deployment.to_dict() + except Exception as e: + raise ProviderException(f"Failed to get deployment info: {str(e)}") + + def scale_deployment(self, namespace: str, deployment_name: str, replicas: int): + """Scale a deployment to specified replicas.""" + if not all([namespace, deployment_name, replicas is not None]): + raise ProviderException( + "namespace, deployment_name and replicas are required for scale_deployment" + ) + + apps_v1 = client.AppsV1Api() + self.logger.info( + f"Scaling deployment {deployment_name} in namespace {namespace} to {replicas} replicas" + ) + return apps_v1.patch_namespaced_deployment_scale( + name=deployment_name, + namespace=namespace, + body={"spec": {"replicas": replicas}}, + ) + + def get_pod_logs( + self, + namespace: str, + pod_name: str, + container: str = None, + tail_lines: int = 100, + ): + """Get logs from a pod.""" + if not all([namespace, pod_name]): + raise ProviderException( + "namespace and pod_name are required for get_pod_logs" + ) + + self.logger.info(f"Getting logs for pod {pod_name} in namespace {namespace}") + return self.client.read_namespaced_pod_log( + name=pod_name, + namespace=namespace, + container=container, + tail_lines=tail_lines, + ) + + def __generate_client(self): + """Generate a Kubernetes client configured for EKS.""" + try: + # Create EKS client + eks_client = boto3.client( + "eks", + aws_access_key_id=self.authentication_config.access_key, + aws_secret_access_key=self.authentication_config.secret_access_key, + region_name=self.authentication_config.region, + ) + + # Get cluster info + cluster_info = eks_client.describe_cluster( + name=self.authentication_config.cluster_name + )["cluster"] + + # Generate kubeconfig + kubeconfig = { + "apiVersion": "v1", + "clusters": [ + { + "cluster": { + "server": cluster_info["endpoint"], + "certificate-authority-data": cluster_info[ + "certificateAuthority" + ]["data"], + }, + "name": "eks_cluster", + } + ], + "contexts": [ + { + "context": {"cluster": "eks_cluster", "user": "aws_user"}, + "name": "eks_context", + } + ], + "current-context": "eks_context", + "kind": "Config", + "users": [{"name": "aws_user", "user": {"token": self.__get_token()}}], + } + + # Load the kubeconfig + config.load_kube_config_from_dict(kubeconfig) + return client.CoreV1Api() + + except Exception as e: + raise ProviderException(f"Failed to generate EKS client: {e}") + + def __get_token(self): + """Get a token for EKS authentication using awscli's token generator.""" + + from awscli.customizations.eks.get_token import STSClientFactory, TokenGenerator + from botocore import session + + # Create a botocore session with our credentials + work_session = session.get_session() + work_session.set_credentials( + access_key=self.authentication_config.access_key, + secret_key=self.authentication_config.secret_access_key, + ) + + # Create STS client factory + client_factory = STSClientFactory(work_session) + + # Get STS client and generate token + sts_client = client_factory.get_sts_client( + region_name=self.authentication_config.region + ) + token = TokenGenerator(sts_client).get_token( + self.authentication_config.cluster_name + ) + + return token + + def _query(self, command_type: str, **kwargs: dict): + """Query EKS cluster resources. + + Args: + command_type: Type of query to execute + **kwargs: Additional arguments for the query + + Returns: + Query results based on command type + """ + # Map command types to provider methods + command_map = { + "get_pods": self.get_pods, + "get_pvc": self.get_pvc, + "get_node_pressure": self.get_node_pressure, + "exec_command": self.exec_command, + "restart_pod": self.restart_pod, + "get_deployment": self.get_deployment, + "scale_deployment": self.scale_deployment, + "get_pod_logs": self.get_pod_logs, + } + + if command_type not in command_map: + raise NotImplementedError(f"Command type '{command_type}' not implemented") + + method = command_map[command_type] + return method(**kwargs) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.DEBUG, handlers=[logging.StreamHandler()]) + + import os + + context_manager = ContextManager( + tenant_id="singletenant", + workflow_id="test", + ) + + config = { + "authentication": { + "access_key": os.environ.get("AWS_ACCESS_KEY_ID"), + "secret_access_key": os.environ.get("AWS_SECRET_ACCESS_KEY"), + "region": os.environ.get("AWS_REGION"), + "cluster_name": os.environ.get("EKS_CLUSTER_NAME"), + } + } + + provider = EksProvider(context_manager, "eks-demo", ProviderConfig(**config)) + + # Test the provider + print("Validating scopes...") + scopes = provider.validate_scopes() + print(f"Scopes: {scopes}") + + print("\nQuerying pods...") + pods = provider.query(command_type="get_pods") + print(f"Found {len(pods)} pods") + + print("\nQuerying PVCs...") + pvcs = provider.query(command_type="get_pvc") + print(f"Found {len(pvcs)} PVCs") + + print("\nQuerying node pressures...") + pressures = provider.query(command_type="get_node_pressure") + print(f"Found pressure info for {len(pressures)} nodes") From 8c3d2d616398752ee854d16b714fede8021022ec Mon Sep 17 00:00:00 2001 From: Tal Date: Wed, 29 Jan 2025 14:43:29 +0200 Subject: [PATCH 23/39] fix(api): preset tabs (#3209) --- keep/api/routes/preset.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keep/api/routes/preset.py b/keep/api/routes/preset.py index 9c6025630c..2af9f9c468 100644 --- a/keep/api/routes/preset.py +++ b/keep/api/routes/preset.py @@ -491,7 +491,7 @@ class CreatePresetTab(BaseModel): description="Create a tab for a preset", ) def create_preset_tab( - preset_id: str, + preset_id: uuid.UUID, body: CreatePresetTab, authenticated_entity: AuthenticatedEntity = Depends( IdentityManagerFactory.get_auth_verifier(["write:presets"]) @@ -542,7 +542,7 @@ def create_preset_tab( description="Delete a tab from a preset", ) def delete_tab( - preset_id: str, + preset_id: uuid.UUID, tab_id: str, authenticated_entity: AuthenticatedEntity = Depends( IdentityManagerFactory.get_auth_verifier(["delete:presets"]) From c217e4d6bbe694e07669212e3e6a3179ab1a2848 Mon Sep 17 00:00:00 2001 From: Tal Date: Wed, 29 Jan 2025 16:09:10 +0200 Subject: [PATCH 24/39] fix(checkmk): long_date_time (#3211) --- .../checkmk_provider/checkmk_provider.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/keep/providers/checkmk_provider/checkmk_provider.py b/keep/providers/checkmk_provider/checkmk_provider.py index 3c5c7033b0..fc7dc2eb76 100644 --- a/keep/providers/checkmk_provider/checkmk_provider.py +++ b/keep/providers/checkmk_provider/checkmk_provider.py @@ -2,6 +2,7 @@ Checkmk is a monitoring tool for Infrastructure and Application Monitoring. """ +import logging from datetime import datetime, timezone from keep.api.models.alert import AlertDto, AlertSeverity, AlertStatus @@ -9,6 +10,8 @@ from keep.providers.base.base_provider import BaseProvider from keep.providers.models.provider_config import ProviderConfig +logger = logging.getLogger(__name__) + class CheckmkProvider(BaseProvider): """Get alerts from Checkmk into Keep""" @@ -60,18 +63,22 @@ def validate_config(): pass @staticmethod - def convert_to_utc_isoformat(self, short_date_time: str) -> str: + def convert_to_utc_isoformat(long_date_time: str, default: str) -> str: + logger.info(f"Converting {long_date_time} to UTC ISO format") try: # Parse the short_date_time string to a datetime object - local_dt = datetime.strptime(short_date_time, "%Y-%m-%d %H:%M:%S") + local_dt = datetime.strptime(long_date_time, "%a %b %d %H:%M:%S %Z %Y") # Convert to UTC - utc_dt = local_dt.replace(tzinfo=timezone.utc) + # Note: The original code assumes the input is in local time, but your input includes a timezone (CEST). + # You might need to handle timezone conversion if necessary. + utc_dt = local_dt.astimezone(timezone.utc) # Return the ISO 8601 format return utc_dt.isoformat() except Exception: - return short_date_time + logger.exception(f"Error converting {long_date_time} to UTC ISO format") + return default @staticmethod def _format_alert( @@ -97,13 +104,14 @@ def _set_severity(status): # https://forum.checkmk.com/t/convert-notify-shortdatetime-to-utc-timezone/20158/2 microtime = _check_values("micro_time") + logger.info(f"Microtime: {microtime}") if microtime: ts = int(int(microtime) / 1000000) dt_object = datetime.datetime.fromtimestamp(ts) last_received = dt_object.isoformat() else: last_received = CheckmkProvider.convert_to_utc_isoformat( - _check_values("short_date_time") + _check_values("long_date_time"), _check_values("short_date_time") ) alert = AlertDto( From c5d6f237dab1383f15f2b88a5b3e1c2637b7b3a1 Mon Sep 17 00:00:00 2001 From: Tal Date: Wed, 29 Jan 2025 16:11:41 +0200 Subject: [PATCH 25/39] feat(pagerduty): flexibility in events (#3204) --- .github/workflows/test-pr.yml | 6 +- keep/parser/parser.py | 98 ++++++++++++++----- .../pagerduty_provider/pagerduty_provider.py | 67 ++++++++++--- 3 files changed, 132 insertions(+), 39 deletions(-) diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml index e07f3ebc0d..154c9ed6ff 100644 --- a/.github/workflows/test-pr.yml +++ b/.github/workflows/test-pr.yml @@ -92,7 +92,7 @@ jobs: - name: Run unit tests and report coverage env: - LOG_LEVEL: DEBUG + # LOG_LEVEL: DEBUG SQLALCHEMY_WARN_20: 1 run: | poetry run coverage run --branch -m pytest --timeout 20 -n auto --non-integration --ignore=tests/e2e_tests/ @@ -108,8 +108,8 @@ jobs: poetry run coverage run --branch -m pytest --integration --ignore=tests/e2e_tests/ - name: Convert coverage results to JSON (for CodeCov support) - env: - LOG_LEVEL: DEBUG + # env: + # LOG_LEVEL: DEBUG run: poetry run coverage json --omit="keep/providers/*" - name: Upload coverage reports to Codecov diff --git a/keep/parser/parser.py b/keep/parser/parser.py index ccc36077bf..9f68096949 100644 --- a/keep/parser/parser.py +++ b/keep/parser/parser.py @@ -153,11 +153,16 @@ def _parse_workflow( tenant_id, context_manager, workflow, actions_file, workflow_actions ) workflow_id = self._parse_id(workflow) + workflow_description = workflow.get("description") workflow_disabled = self.__class__.parse_disabled(workflow) workflow_owners = self._parse_owners(workflow) workflow_tags = self._parse_tags(workflow) - workflow_steps = self._parse_steps(context_manager, workflow) - workflow_actions = self._parse_actions(context_manager, workflow) + workflow_steps = self._parse_steps( + context_manager, workflow, workflow_id, workflow_description + ) + workflow_actions = self._parse_actions( + context_manager, workflow, workflow_id, workflow_description + ) workflow_interval = self.parse_interval(workflow) on_failure_action = self._get_on_failure_action(context_manager, workflow) workflow_triggers = self.get_triggers_from_workflow(workflow) @@ -173,7 +178,7 @@ def _parse_workflow( workflow = Workflow( workflow_id=workflow_id, - workflow_description=workflow.get("description"), + workflow_description=workflow_description, workflow_disabled=workflow_disabled, workflow_owners=workflow_owners, workflow_tags=workflow_tags, @@ -421,13 +426,19 @@ def parse_provider_parameters(provider_parameters: dict) -> dict: return parsed_provider_parameters def _parse_steps( - self, context_manager: ContextManager, workflow + self, + context_manager: ContextManager, + workflow: dict, + workflow_id: str | None = None, + workflow_description: str | None = None, ) -> typing.List[Step]: self.logger.debug("Parsing steps") workflow_steps = workflow.get("steps", []) workflow_steps_parsed = [] for _step in workflow_steps: - provider = self._get_step_provider(context_manager, _step) + provider = self._get_step_provider( + context_manager, _step, workflow_id, workflow_description + ) provider_parameters = _step.get("provider", {}).get("with") parsed_provider_parameters = Parser.parse_provider_parameters( provider_parameters @@ -445,7 +456,13 @@ def _parse_steps( self.logger.debug("Steps parsed successfully") return workflow_steps_parsed - def _get_step_provider(self, context_manager: ContextManager, _step: dict) -> dict: + def _get_step_provider( + self, + context_manager: ContextManager, + _step: dict, + workflow_id: str | None = None, + workflow_description: str | None = None, + ) -> dict: step_provider = _step.get("provider") try: step_provider_type = step_provider.pop("type") @@ -458,9 +475,22 @@ def _get_step_provider(self, context_manager: ContextManager, _step: dict) -> di provider_id, provider_config = self._parse_provider_config( context_manager, step_provider_type, step_provider_config ) - provider = ProvidersFactory.get_provider( - context_manager, provider_id, step_provider_type, provider_config - ) + try: + provider = ProvidersFactory.get_provider( + context_manager, provider_id, step_provider_type, provider_config + ) + except Exception: + self.logger.exception( + f"Error getting provider {provider_id} for step {_step.get('name')}", + extra={ + "workflow_id": workflow_id, + "workflow_description": workflow_description, + "provider_id": provider_id, + "provider_type": step_provider_type, + "provider_config_name": step_provider_config, + }, + ) + raise return provider def _load_actions_config( @@ -526,25 +556,40 @@ def _get_action( context_manager: ContextManager, action: dict, action_name: str | None = None, + workflow_id: str | None = None, + workflow_description: str | None = None, ) -> Step: name = action_name or action.get("name") provider = action.get("provider", {}) - provider_config = provider.get("config") + provider_config_name = provider.get("config") provider_parameters = provider.get("with", {}) parsed_provider_parameters = Parser.parse_provider_parameters( provider_parameters ) provider_type = provider.get("type") provider_id, provider_config = self._parse_provider_config( - context_manager, provider_type, provider_config - ) - provider = ProvidersFactory.get_provider( - context_manager, - provider_id, - provider_type, - provider_config, - **parsed_provider_parameters, + context_manager, provider_type, provider_config_name ) + try: + provider = ProvidersFactory.get_provider( + context_manager, + provider_id, + provider_type, + provider_config, + **parsed_provider_parameters, + ) + except Exception: + self.logger.exception( + f"Error getting provider {provider_id} for action {name}", + extra={ + "workflow_id": workflow_id, + "workflow_description": workflow_description, + "provider_id": provider_id, + "provider_type": provider_type, + "provider_config_name": provider_config_name, + }, + ) + raise action = Step( context_manager=context_manager, step_id=name, @@ -556,7 +601,11 @@ def _get_action( return action def _parse_actions( - self, context_manager: ContextManager, workflow: dict + self, + context_manager: ContextManager, + workflow: dict, + workflow_id: str | None = None, + workflow_description: str | None = None, ) -> typing.List[Step]: self.logger.debug("Parsing actions") workflow_actions_raw = workflow.get("actions", []) @@ -566,7 +615,9 @@ def _parse_actions( ) workflow_actions_parsed = [] for _action in workflow_actions: - parsed_action = self._get_action(context_manager, _action) + parsed_action = self._get_action( + context_manager, _action, None, workflow_id, workflow_description + ) workflow_actions_parsed.append(parsed_action) self.logger.debug("Actions parsed successfully") return workflow_actions_parsed @@ -635,7 +686,7 @@ def _get_on_failure_action( return parsed_action self.logger.debug("No on-failure action") - def _extract_provider_id(self, provider_type: str): + def _extract_provider_id(self, context_manager: ContextManager, provider_type: str): """ Translate {{ . }} to a provider id @@ -652,7 +703,7 @@ def _extract_provider_id(self, provider_type: str): provider_type = provider_type.split(".") if len(provider_type) != 2: raise ValueError( - "Provider config is not valid, should be in the format: {{ . }}" + f"Provider config ({provider_type}) is not valid, should be in the format: {{{{ . }}}} (workflow_id: {context_manager.workflow_id})" ) provider_id = provider_type[1].replace("}}", "").strip() @@ -688,7 +739,7 @@ def _parse_provider_config( return provider_type, {"authentication": {}} # extract config when using {{ . }} elif isinstance(provider_config, str): - config_id = self._extract_provider_id(provider_config) + config_id = self._extract_provider_id(context_manager, provider_config) provider_config = context_manager.providers_context.get(config_id) if not provider_config: self.logger.warning( @@ -749,7 +800,6 @@ def get_triggers_from_workflow(self, workflow: dict): class ParserUtils: - @staticmethod def deep_merge(source: dict, dest: dict) -> dict: """Perform deep merge on two objects. diff --git a/keep/providers/pagerduty_provider/pagerduty_provider.py b/keep/providers/pagerduty_provider/pagerduty_provider.py index 34f60ec2e4..5d119a79c1 100644 --- a/keep/providers/pagerduty_provider/pagerduty_provider.py +++ b/keep/providers/pagerduty_provider/pagerduty_provider.py @@ -335,11 +335,11 @@ def validate_scopes(self): def _build_alert( self, title: str, - alert_body: str, dedup: str | None = None, severity: typing.Literal["critical", "error", "warning", "info"] | None = None, event_type: typing.Literal["trigger", "acknowledge", "resolve"] | None = None, - source: str = "custom_event", + source: str | None = None, + **kwargs, ) -> typing.Dict[str, typing.Any]: """ Builds the payload for an event alert. @@ -376,7 +376,12 @@ def _build_alert( if self.context_manager.event_context: dedup = self.context_manager.event_context.fingerprint - return { + if not source: + source = "custom_event" + if self.context_manager.event_context: + source = self.context_manager.event_context.service or "custom_event" + + payload = { "routing_key": self.authentication_config.routing_key, "event_action": event_type, "dedup_key": dedup, @@ -384,20 +389,52 @@ def _build_alert( "summary": title, "source": source, "severity": severity, - "custom_details": { - "alert_body": alert_body, - }, }, } + custom_details = kwargs.get("custom_details", {}) + if isinstance(custom_details, str): + custom_details = json.loads(custom_details) + if not custom_details and kwargs.get("alert_body"): + custom_details = {"alert_body": kwargs.get("alert_body")} + + if custom_details: + payload["payload"]["custom_details"] = custom_details + + if kwargs.get("timestamp"): + payload["payload"]["timestamp"] = kwargs.get("timestamp") + + if kwargs.get("component"): + payload["payload"]["component"] = kwargs.get("component") + + if kwargs.get("group"): + payload["payload"]["group"] = kwargs.get("group") + + if kwargs.get("class"): + payload["payload"]["class"] = kwargs.get("class") + + if kwargs.get("images"): + images = kwargs.get("images", []) + if isinstance(images, str): + images = json.loads(images) + payload["payload"]["images"] = images + + if kwargs.get("links"): + links = kwargs.get("links", []) + if isinstance(links, str): + links = json.loads(links) + payload["payload"]["links"] = links + + return payload + def _send_alert( self, title: str, - body: str, dedup: str | None = None, severity: typing.Literal["critical", "error", "warning", "info"] | None = None, event_type: typing.Literal["trigger", "acknowledge", "resolve"] | None = None, - source: str = "custom_event", + source: str | None = None, + **kwargs, ): """ Sends PagerDuty Alert @@ -410,7 +447,9 @@ def _send_alert( """ url = "https://events.pagerduty.com/v2/enqueue" - payload = self._build_alert(title, body, dedup, severity, event_type, source) + payload = self._build_alert( + title, dedup, severity, event_type, source, **kwargs + ) result = requests.post(url, json=payload) result.raise_for_status() @@ -604,7 +643,6 @@ def setup_incident_webhook( def _notify( self, title: str = "", - alert_body: str = "", dedup: str = "", service_id: str = "", requester: str = "", @@ -626,15 +664,20 @@ def _notify( if self.authentication_config.routing_key: return self._send_alert( title, - alert_body, dedup=dedup, event_type=event_type, source=source, severity=severity, + **kwargs, ) else: return self._trigger_incident( - service_id, title, alert_body, requester, incident_id, priority + service_id, + title, + kwargs.get("alert_body"), + requester, + incident_id, + priority, ) def _query(self, incident_id: str = None): From 90e1b1639635e68a7858d1fde7db28e0034aed76 Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Wed, 29 Jan 2025 17:03:33 +0200 Subject: [PATCH 26/39] feat(api): gke improvements (#3214) --- keep/providers/gke_provider/gke_provider.py | 549 ++++++++++++++++---- pyproject.toml | 2 +- 2 files changed, 440 insertions(+), 111 deletions(-) diff --git a/keep/providers/gke_provider/gke_provider.py b/keep/providers/gke_provider/gke_provider.py index f61f149738..da98fe974d 100644 --- a/keep/providers/gke_provider/gke_provider.py +++ b/keep/providers/gke_provider/gke_provider.py @@ -7,10 +7,13 @@ from google.cloud.container_v1 import ClusterManagerClient from google.oauth2 import service_account from kubernetes import client, config +from kubernetes.stream import stream from keep.contextmanager.contextmanager import ContextManager +from keep.exceptions.provider_exception import ProviderException from keep.providers.base.base_provider import BaseProvider from keep.providers.models.provider_config import ProviderConfig, ProviderScope +from keep.providers.models.provider_method import ProviderMethod from keep.providers.providers_factory import ProvidersFactory @@ -54,6 +57,100 @@ class GkeProvider(BaseProvider): mandatory=True, alias="Kubernetes Engine Viewer", ), + ProviderScope( + name="pods:delete", + description="Required to delete/restart pods", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Delete/Restart Pods", + ), + ProviderScope( + name="deployments:scale", + description="Required to scale deployments", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Scale Deployments", + ), + ProviderScope( + name="pods:list", + description="Required to list pods", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="List Pods", + ), + ProviderScope( + name="pods:get", + description="Required to get pod details", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Get Pod Details", + ), + ProviderScope( + name="pods:logs", + description="Required to get pod logs", + documentation_url="https://kubernetes.io/docs/reference/access-authn-authz/rbac/", + mandatory=False, + alias="Get Pod Logs", + ), + ] + + PROVIDER_METHODS = [ + ProviderMethod( + name="List Pods", + func_name="get_pods", + scopes=["pods:list", "pods:get"], + description="List all pods in a namespace or across all namespaces", + type="view", + ), + ProviderMethod( + name="List Persistent Volume Claims", + func_name="get_pvc", + scopes=["pods:list"], + description="List all PVCs in a namespace or across all namespaces", + type="view", + ), + ProviderMethod( + name="Get Node Pressure", + func_name="get_node_pressure", + scopes=["pods:list"], + description="Get pressure metrics for all nodes", + type="view", + ), + ProviderMethod( + name="Execute Command", + func_name="exec_command", + scopes=["pods:exec"], + description="Execute a command in a pod", + type="action", + ), + ProviderMethod( + name="Restart Pod", + func_name="restart_pod", + scopes=["pods:delete"], + description="Restart a pod by deleting it", + type="action", + ), + ProviderMethod( + name="Get Deployment", + func_name="get_deployment", + scopes=["pods:list"], + description="Get deployment information", + type="view", + ), + ProviderMethod( + name="Scale Deployment", + func_name="scale_deployment", + scopes=["deployments:scale"], + description="Scale a deployment to specified replicas", + type="action", + ), + ProviderMethod( + name="Get Pod Logs", + func_name="get_pod_logs", + scopes=["pods:logs"], + description="Get logs from a pod", + type="view", + ), ] def __init__( @@ -65,7 +162,6 @@ def __init__( self.authentication_config.service_account_json ) self._project_id = self._service_account_data.get("project_id") - # in case the user didn't provide a service account JSON, we'll later fail it in validate_scopes except Exception: self._service_account_data = None self._project_id = None @@ -74,124 +170,349 @@ def __init__( self._client = None def dispose(self): - pass + """Clean up any resources.""" + if self._client: + self._client.api_client.rest_client.pool_manager.clear() + + def validate_config(self): + """Validate the provided configuration.""" + self.authentication_config = GkeProviderAuthConfig(**self.config.authentication) - def validate_scopes(self): + def validate_scopes(self) -> dict[str, bool | str]: """Validate if the service account has the required permissions.""" if not self._service_account_data or not self._project_id: return {"roles/container.viewer": "Service account JSON is invalid"} - scopes = {} - # try initializing the client to validate the scopes + scopes = {scope.name: False for scope in self.PROVIDER_SCOPES} + try: - self.client - scopes["roles/container.viewer"] = True + # Test GKE API permissions + credentials = service_account.Credentials.from_service_account_info( + self._service_account_data, + scopes=["https://www.googleapis.com/auth/cloud-platform"], + ) + auth_request = requests.Request() + credentials.refresh(auth_request) + gke_client = ClusterManagerClient(credentials=credentials) + + try: + cluster_name = f"projects/{self._project_id}/locations/{self._region}/clusters/{self._cluster_name}" + gke_client.get_cluster(name=cluster_name) + scopes["roles/container.viewer"] = True + except Exception as e: + if "404" in str(e): + scopes["roles/container.viewer"] = ( + "Cluster not found (404 from GKE), please check the cluster name and region" + ) + elif "403" in str(e): + scopes["roles/container.viewer"] = ( + "Permission denied (403 from GKE)" + ) + else: + scopes["roles/container.viewer"] = str(e) + + # Test Kubernetes API permissions + try: + k8s_client = self.client + + # Test pods:list and pods:get + try: + k8s_client.list_pod_for_all_namespaces(limit=1) + scopes["pods:list"] = True + scopes["pods:get"] = True + except Exception as e: + scopes["pods:list"] = str(e) + scopes["pods:get"] = str(e) + + # Test pods:logs + try: + pods = k8s_client.list_pod_for_all_namespaces(limit=1) + if pods.items: + pod = pods.items[0] + k8s_client.read_namespaced_pod_log( + name=pod.metadata.name, + namespace=pod.metadata.namespace, + container=pod.spec.containers[0].name, + limit_bytes=100, + ) + scopes["pods:logs"] = True + except Exception as e: + scopes["pods:logs"] = str(e) + + # Test pods:delete + try: + if pods.items: + pod = pods.items[0] + k8s_client.delete_namespaced_pod.__doc__ + scopes["pods:delete"] = True + except Exception as e: + scopes["pods:delete"] = str(e) + + # Test deployments:scale + apps_v1 = client.AppsV1Api() + try: + deployments = apps_v1.list_deployment_for_all_namespaces(limit=1) + if deployments.items: + apps_v1.patch_namespaced_deployment_scale.__doc__ + scopes["deployments:scale"] = True + except Exception as e: + scopes["deployments:scale"] = str(e) + + except Exception as e: + for scope in scopes: + if scope != "roles/container.viewer": + scopes[scope] = str(e) + except Exception as e: - if "404" in str(e): - scopes["roles/container.viewer"] = ( - "Cluster not found (404 from GKE), please check the cluster name and region" - ) - elif "403" in str(e): - scopes["roles/container.viewer"] = "Permission denied (403 from GKE)" - else: - scopes["roles/container.viewer"] = str(e) + for scope in scopes: + scopes[scope] = str(e) return scopes - def validate_config(self): - self.authentication_config = GkeProviderAuthConfig(**self.config.authentication) - @property def client(self): + """Get or create the Kubernetes client for GKE.""" if self._client is None: self._client = self.__generate_client() return self._client - def __generate_client(self): - # Load service account credentials and create a GKE client - credentials = service_account.Credentials.from_service_account_info( - self._service_account_data, - scopes=["https://www.googleapis.com/auth/cloud-platform"], + def get_pods(self, namespace: str = None) -> list: + """List all pods in a namespace or across all namespaces.""" + if namespace: + self.logger.info(f"Listing pods in namespace {namespace}") + pods = self.client.list_namespaced_pod(namespace=namespace) + else: + self.logger.info("Listing pods across all namespaces") + pods = self.client.list_pod_for_all_namespaces() + return [pod.to_dict() for pod in pods.items] + + def get_pvc(self, namespace: str = None) -> list: + """List all PVCs in a namespace or across all namespaces.""" + if namespace: + self.logger.info(f"Listing PVCs in namespace {namespace}") + pvcs = self.client.list_namespaced_persistent_volume_claim( + namespace=namespace + ) + else: + self.logger.info("Listing PVCs across all namespaces") + pvcs = self.client.list_persistent_volume_claim_for_all_namespaces() + return [pvc.to_dict() for pvc in pvcs.items] + + def get_node_pressure(self) -> list: + """Get pressure metrics for all nodes.""" + self.logger.info("Getting node pressure metrics") + nodes = self.client.list_node() + node_pressures = [] + for node in nodes.items: + pressures = { + "name": node.metadata.name, + "conditions": [], + } + for condition in node.status.conditions: + if condition.type in [ + "MemoryPressure", + "DiskPressure", + "PIDPressure", + ]: + pressures["conditions"].append(condition.to_dict()) + node_pressures.append(pressures) + return node_pressures + + def exec_command( + self, namespace: str, pod_name: str, command: str, container: str = None + ) -> str: + """Execute a command in a pod.""" + if not all([namespace, pod_name]): + raise ProviderException( + "namespace and pod_name are required for exec_command" + ) + + # Get the pod + self.logger.info(f"Reading pod {pod_name} in namespace {namespace}") + pod = self.client.read_namespaced_pod(name=pod_name, namespace=namespace) + + # If container not specified, use first container + if not container: + container = pod.spec.containers[0].name + + try: + # Execute the command + self.logger.info( + f"Executing command in pod {pod_name} container {container}" + ) + exec_command = ( + ["/bin/sh", "-c", command] if isinstance(command, str) else command + ) + result = stream( + self.client.connect_get_namespaced_pod_exec, + pod_name, + namespace, + container=container, + command=exec_command, + stderr=True, + stdin=False, + stdout=True, + tty=False, + ) + return result + + except Exception as e: + raise ProviderException(f"Failed to execute command: {str(e)}") + + def restart_pod(self, namespace: str, pod_name: str): + """Restart a pod by deleting it.""" + if not all([namespace, pod_name]): + raise ProviderException( + "namespace and pod_name are required for restart_pod" + ) + + self.logger.info(f"Deleting pod {pod_name} in namespace {namespace}") + return self.client.delete_namespaced_pod(name=pod_name, namespace=namespace) + + def get_deployment(self, deployment_name: str, namespace: str = "default"): + """Get deployment information.""" + if not deployment_name: + raise ProviderException("deployment_name is required for get_deployment") + + apps_v1 = client.AppsV1Api() + try: + deployment = apps_v1.read_namespaced_deployment( + name=deployment_name, namespace=namespace + ) + return deployment.to_dict() + except Exception as e: + raise ProviderException(f"Failed to get deployment info: {str(e)}") + + def scale_deployment(self, namespace: str, deployment_name: str, replicas: int): + """Scale a deployment to specified replicas.""" + if not all([namespace, deployment_name, replicas is not None]): + raise ProviderException( + "namespace, deployment_name and replicas are required for scale_deployment" + ) + + apps_v1 = client.AppsV1Api() + self.logger.info( + f"Scaling deployment {deployment_name} in namespace {namespace} to {replicas} replicas" + ) + return apps_v1.patch_namespaced_deployment_scale( + name=deployment_name, + namespace=namespace, + body={"spec": {"replicas": replicas}}, ) - auth_request = requests.Request() - credentials.refresh(auth_request) - gke_client = ClusterManagerClient(credentials=credentials) - - # Fetch the GKE cluster details - cluster_name = f"projects/{self._project_id}/locations/{self._region}/clusters/{self._cluster_name}" - cluster = gke_client.get_cluster(name=cluster_name) - - kubeconfig = { - "apiVersion": "v1", - "clusters": [ - { - "cluster": { - "certificate-authority-data": cluster.master_auth.cluster_ca_certificate, - "server": f"https://{cluster.endpoint}", - }, - "name": "gke_cluster", - } - ], - "contexts": [ - { - "context": {"cluster": "gke_cluster", "user": "gke_user"}, - "name": "gke_context", - } - ], - "current-context": "gke_context", - "kind": "Config", - "users": [ - { - "name": "gke_user", - "user": { - "auth-provider": { - "config": { - "access-token": credentials.token, - "cmd-args": "config config-helper --format=json", - "cmd-path": "gcloud", - "expiry-key": "token_expiry", - "token-key": "access_token", - }, - "name": "gcp", - } - }, - } - ], - } - config.load_kube_config_from_dict(config_dict=kubeconfig) - return client.CoreV1Api() - # Implement other methods to query Kubernetes resources as needed. - def _query(self, command_type: str, **kwargs: dict): - if command_type == "get_pods": - pods = self.client.list_pod_for_all_namespaces(watch=False) - return [pod.to_dict() for pod in pods.items] + def get_pod_logs( + self, + namespace: str, + pod_name: str, + container: str = None, + tail_lines: int = 100, + ): + """Get logs from a pod.""" + if not all([namespace, pod_name]): + raise ProviderException( + "namespace and pod_name are required for get_pod_logs" + ) - elif command_type == "get_pvc": - pvcs = self.client.list_persistent_volume_claim_for_all_namespaces( - watch=False + self.logger.info(f"Getting logs for pod {pod_name} in namespace {namespace}") + return self.client.read_namespaced_pod_log( + name=pod_name, + namespace=namespace, + container=container, + tail_lines=tail_lines, + ) + + def __generate_client(self): + """Generate a Kubernetes client configured for GKE.""" + try: + # Create GKE client with credentials + credentials = service_account.Credentials.from_service_account_info( + self._service_account_data, + scopes=["https://www.googleapis.com/auth/cloud-platform"], ) - return [pvc.to_dict() for pvc in pvcs.items] - - elif command_type == "get_node_pressure": - nodes = self.client.list_node(watch=False) - node_pressures = [] - for node in nodes.items: - pressures = { - "name": node.metadata.name, - "conditions": [], - } - for condition in node.status.conditions: - if condition.type in [ - "MemoryPressure", - "DiskPressure", - "PIDPressure", - ]: - pressures["conditions"].append(condition.to_dict()) - node_pressures.append(pressures) - return node_pressures - - raise NotImplementedError("command type not implemented") + auth_request = requests.Request() + credentials.refresh(auth_request) + gke_client = ClusterManagerClient(credentials=credentials) + + # Get cluster details + cluster_name = f"projects/{self._project_id}/locations/{self._region}/clusters/{self._cluster_name}" + cluster = gke_client.get_cluster(name=cluster_name) + + # Generate kubeconfig + kubeconfig = { + "apiVersion": "v1", + "clusters": [ + { + "cluster": { + "certificate-authority-data": cluster.master_auth.cluster_ca_certificate, + "server": f"https://{cluster.endpoint}", + }, + "name": "gke_cluster", + } + ], + "contexts": [ + { + "context": {"cluster": "gke_cluster", "user": "gke_user"}, + "name": "gke_context", + } + ], + "current-context": "gke_context", + "kind": "Config", + "users": [ + { + "name": "gke_user", + "user": { + "auth-provider": { + "config": { + "access-token": credentials.token, + "cmd-args": "config config-helper --format=json", + "cmd-path": "gcloud", + "expiry-key": "token_expiry", + "token-key": "access_token", + }, + "name": "gcp", + } + }, + } + ], + } + + # Load kubeconfig + config.load_kube_config_from_dict(config_dict=kubeconfig) + return client.CoreV1Api() + + except Exception as e: + raise ProviderException(f"Failed to generate GKE client: {e}") + + def _query(self, command_type: str, **kwargs: dict): + """Query GKE cluster resources. + + Args: + command_type: Type of query to execute + **kwargs: Additional arguments for the query + + Returns: + Query results based on command type + + Raises: + NotImplementedError: If command type is not implemented + """ + # Map command types to provider methods + command_map = { + "get_pods": self.get_pods, + "get_pvc": self.get_pvc, + "get_node_pressure": self.get_node_pressure, + "exec_command": self.exec_command, + "restart_pod": self.restart_pod, + "get_deployment": self.get_deployment, + "scale_deployment": self.scale_deployment, + "get_pod_logs": self.get_pod_logs, + } + + if command_type not in command_map: + raise NotImplementedError(f"Command type '{command_type}' not implemented") + + method = command_map[command_type] + return method(**kwargs) if __name__ == "__main__": @@ -201,19 +522,15 @@ def _query(self, command_type: str, **kwargs: dict): workflow_id="test", ) - # Get these from a secure source or environment variables + # Get service account JSON from file with open("sa.json") as f: service_account_data = json.load(f) - project_id = service_account_data.get("project_id") - region = "us-central1" - cluster_name = "autopilot-cluster-1" - config = { "authentication": { "service_account_json": json.dumps(service_account_data), - "cluster_name": cluster_name, - "region": region, + "cluster_name": "my-gke-cluster", + "region": "us-central1", } } @@ -223,8 +540,20 @@ def _query(self, command_type: str, **kwargs: dict): provider_type="gke", provider_config=config, ) - # Query GKE resources using the provider's methods. + + # Test the provider + print("Validating scopes...") + scopes = provider.validate_scopes() + print(f"Scopes: {scopes}") + + print("\nQuerying pods...") pods = provider.query(command_type="get_pods") - pvc = provider.query(command_type="get_pvc") - node_pressure = provider.query(command_type="get_node_pressure") - print(pods) + print(f"Found {len(pods)} pods") + + print("\nQuerying PVCs...") + pvcs = provider.query(command_type="get_pvc") + print(f"Found {len(pvcs)} PVCs") + + print("\nQuerying node pressures...") + pressures = provider.query(command_type="get_node_pressure") + print(f"Found pressure info for {len(pressures)} nodes") diff --git a/pyproject.toml b/pyproject.toml index 1296aaeab2..a235108fd3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.4" +version = "0.35.5" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] From 8ecd2b34ca951494128997bce16abbde7127ab89 Mon Sep 17 00:00:00 2001 From: Tal Date: Wed, 29 Jan 2025 17:43:37 +0200 Subject: [PATCH 27/39] fix: renaming for cloud run (#3215) --- keep/api/logging.py | 20 +++++++++++++++++-- keep/api/observability.py | 7 ++++++- .../checkmk_provider/checkmk_provider.py | 2 +- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/keep/api/logging.py b/keep/api/logging.py index 7dc6b53dd2..790651b31e 100644 --- a/keep/api/logging.py +++ b/keep/api/logging.py @@ -2,6 +2,7 @@ import inspect import logging import logging.config +import logging.handlers import os import uuid from datetime import datetime @@ -9,8 +10,10 @@ # tb: small hack to avoid the InsecureRequestWarning logs import urllib3 +from pythonjsonlogger import jsonlogger from sqlmodel import Session +from keep.api.consts import RUNNING_IN_CLOUD_RUN from keep.api.core.db import get_session, push_logs_to_db from keep.api.models.db.provider import ProviderExecutionLog @@ -222,13 +225,26 @@ def format(self, record): return f"{message} {extra_info}" +class CustomJsonFormatter(jsonlogger.JsonFormatter): + def __init__(self, *args, rename_fields=None, **kwargs): + super().__init__(*args, **kwargs) + self.rename_fields = rename_fields if RUNNING_IN_CLOUD_RUN else {} + + CONFIG = { "version": 1, "disable_existing_loggers": False, "formatters": { "json": { - "format": "%(asctime)s %(message)s %(levelname)s %(name)s %(filename)s %(otelTraceID)s %(otelSpanID)s %(otelServiceName)s %(threadName)s %(process)s %(module)s", - "class": "pythonjsonlogger.jsonlogger.JsonFormatter", + "()": CustomJsonFormatter, + "fmt": "%(asctime)s %(message)s %(levelname)s %(name)s %(filename)s %(otelTraceID)s %(otelSpanID)s %(otelTraceSampled)s %(otelServiceName)s %(threadName)s %(process)s %(module)s", + "rename_fields": { + "levelname": "severity", + "asctime": "timestamp", + "otelTraceID": "logging.googleapis.com/trace", + "otelSpanID": "logging.googleapis.com/spanId", + "otelTraceSampled": "logging.googleapis.com/trace_sampled", + }, }, "dev_terminal": { "()": DevTerminalFormatter, diff --git a/keep/api/observability.py b/keep/api/observability.py index 6dc8adb78a..1573e00e39 100644 --- a/keep/api/observability.py +++ b/keep/api/observability.py @@ -53,7 +53,12 @@ def setup(app: FastAPI): ) metrics_enabled = os.environ.get("METRIC_OTEL_ENABLED", "") - resource = Resource.create({"service.name": service_name}) + resource = Resource.create( + attributes={ + "SERVICE.NAME": service_name, + "SERVICE_INSTANCE_ID": f"worker-{os.getpid()}", + } + ) provider = TracerProvider(resource=resource) if otlp_collector_endpoint: diff --git a/keep/providers/checkmk_provider/checkmk_provider.py b/keep/providers/checkmk_provider/checkmk_provider.py index fc7dc2eb76..715a2daf79 100644 --- a/keep/providers/checkmk_provider/checkmk_provider.py +++ b/keep/providers/checkmk_provider/checkmk_provider.py @@ -107,7 +107,7 @@ def _set_severity(status): logger.info(f"Microtime: {microtime}") if microtime: ts = int(int(microtime) / 1000000) - dt_object = datetime.datetime.fromtimestamp(ts) + dt_object = datetime.fromtimestamp(ts) last_received = dt_object.isoformat() else: last_received = CheckmkProvider.convert_to_utc_isoformat( From c4ff4b2df713e6621e6b287e4d8abad7c10e0170 Mon Sep 17 00:00:00 2001 From: Tal Date: Wed, 29 Jan 2025 18:46:50 +0200 Subject: [PATCH 28/39] chore: more otel improvements (#3219) --- keep/api/observability.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/keep/api/observability.py b/keep/api/observability.py index 1573e00e39..53064a512f 100644 --- a/keep/api/observability.py +++ b/keep/api/observability.py @@ -22,6 +22,7 @@ from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor +from opentelemetry.semconv.resource import ResourceAttributes from keep.api.core.config import config @@ -55,8 +56,8 @@ def setup(app: FastAPI): resource = Resource.create( attributes={ - "SERVICE.NAME": service_name, - "SERVICE_INSTANCE_ID": f"worker-{os.getpid()}", + ResourceAttributes.SERVICE_NAME: service_name, + ResourceAttributes.SERVICE_INSTANCE_ID: f"worker-{os.getpid()}", } ) provider = TracerProvider(resource=resource) @@ -86,7 +87,9 @@ def setup(app: FastAPI): if enable_cloud_trace_exporter: logger.info("Cloud Trace exporter enabled.") - processor = BatchSpanProcessor(CloudTraceSpanExporter()) + processor = BatchSpanProcessor( + CloudTraceSpanExporter(resource_regex="service.*") + ) provider.add_span_processor(processor) trace.set_tracer_provider(provider) From b8db4e4d5dba4834ae934113722c991baafc267b Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Wed, 29 Jan 2025 20:07:39 +0200 Subject: [PATCH 29/39] feat: kibana 8.16.0 (#3222) --- .../kibana_provider/kibana_provider.py | 172 +++++++++++++----- pyproject.toml | 2 +- 2 files changed, 130 insertions(+), 44 deletions(-) diff --git a/keep/providers/kibana_provider/kibana_provider.py b/keep/providers/kibana_provider/kibana_provider.py index f522e4cf9f..ad312f1a82 100644 --- a/keep/providers/kibana_provider/kibana_provider.py +++ b/keep/providers/kibana_provider/kibana_provider.py @@ -6,12 +6,14 @@ import datetime import json import uuid -from typing import Literal +from typing import Literal, Union from urllib.parse import urlparse import pydantic import requests from fastapi import HTTPException +from packaging.version import Version +from starlette.datastructures import FormData from keep.api.models.alert import AlertDto, AlertSeverity, AlertStatus from keep.contextmanager.contextmanager import ContextManager @@ -37,14 +39,14 @@ class KibanaProviderAuthConfig: "required": True, "description": "Kibana Host", "hint": "https://keep.kb.us-central1.gcp.cloud.es.io", - "validation": "any_http_url" + "validation": "any_http_url", } ) kibana_port: UrlPort = dataclasses.field( metadata={ "required": False, "description": "Kibana Port (defaults to 9243)", - "validation": "port" + "validation": "port", }, default=9243, ) @@ -64,6 +66,11 @@ class KibanaProvider(BaseProvider): "id": "{{alert.id}}", "fingerprint": "{{alert.id}}", "url": "{{context.alertDetailsUrl}}", + "context.message": "{{context.message}}", + "context.hits": "{{context.hits}}", + "context.link": "{{context.link}}", + "context.query": "{{context.query}}", + "context.title": "{{context.title}}", "context.cloud": "{{context.cloud}}", "context.container": "{{context.container}}", "context.group": "{{context.group}}", @@ -153,12 +160,58 @@ def __init__( super().__init__(context_manager, provider_id, config) @staticmethod - def parse_event_raw_body(raw_body: bytes | dict) -> dict: - # tb: this is a f**king stupid hack because Kibana doesn't escape {{#toJson}} :( - if b'"payload": "{' in raw_body: - raw_body = raw_body.replace(b'"payload": "{', b'"payload": {') - raw_body = raw_body.replace(b'}",', b"},") - return json.loads(raw_body) + def parse_event_raw_body(raw_body: Union[bytes, dict, FormData]) -> dict: + """ + Parse the raw body from various input types into a dictionary. + + Args: + raw_body: Can be bytes, dict, or FormData + + Returns: + dict: Parsed event data + + Raises: + ValueError: If the input type is not supported or parsing fails + """ + # Handle FormData + if hasattr(raw_body, "_list") and hasattr( + raw_body, "getlist" + ): # Check if it's FormData + # Convert FormData to dict + form_dict = {} + for key, value in raw_body.items(): + # Handle multiple values for the same key + existing_value = form_dict.get(key) + if existing_value is not None: + if isinstance(existing_value, list): + existing_value.append(value) + else: + form_dict[key] = [existing_value, value] + else: + form_dict[key] = value + + # If there's a 'payload' field that's a string, try to parse it as JSON + if "payload" in form_dict and isinstance(form_dict["payload"], str): + try: + form_dict["payload"] = json.loads(form_dict["payload"]) + except json.JSONDecodeError: + pass # Keep the original string if it's not valid JSON + + return form_dict + + # Handle bytes + if isinstance(raw_body, bytes): + # Handle the Kibana escape issue + if b'"payload": "{' in raw_body: + raw_body = raw_body.replace(b'"payload": "{', b'"payload": {') + raw_body = raw_body.replace(b'}",', b"},") + return json.loads(raw_body) + + # Handle dict + if isinstance(raw_body, dict): + return raw_body + + raise ValueError(f"Unsupported raw_body type: {type(raw_body)}") def validate_scopes(self) -> dict[str, bool | str]: """ @@ -244,6 +297,17 @@ def __setup_webhook_alerts(self, tenant_id: str, keep_api_url: str, api_key: str keep_api_url (str): The URL of the Keep API api_key (str): The API key of the Keep API """ + # Check kibana version + kibana_version = ( + self.request("GET", "api/status").get("version", {}).get("number") + ) + rule_types = self.request("GET", "api/alerting/rule_types") + + rule_types = {rule_type["id"]: rule_type for rule_type in rule_types} + # if not version, assume < 8 for backwards compatibility + if not kibana_version: + kibana_version = "7.0.0" + # First get all existing connectors and check if we're already installed: connectors = self.request("GET", "api/actions/connectors") connector_name = f"keep-{tenant_id}" @@ -265,7 +329,10 @@ def __setup_webhook_alerts(self, tenant_id: str, keep_api_url: str, api_key: str # this means we already have a connector installed, so we just need to update it config: dict = connector["config"] config["url"] = keep_api_url - config["headers"] = {"X-API-KEY": api_key} + config["headers"] = { + "X-API-KEY": api_key, + "Content-Type": "application/json", + } self.request( "PUT", f"api/actions/connector/{connector['id']}", @@ -284,7 +351,10 @@ def __setup_webhook_alerts(self, tenant_id: str, keep_api_url: str, api_key: str "method": "post", "url": keep_api_url, "authType": None, - "headers": {"X-API-KEY": api_key}, + "headers": { + "X-API-KEY": api_key, + "Content-Type": "application/json", + }, }, "secrets": {}, "connector_type_id": ".webhook", @@ -305,6 +375,13 @@ def __setup_webhook_alerts(self, tenant_id: str, keep_api_url: str, api_key: str for alert_rule in alert_rules.get("data", []): self.logger.info(f"Updating alert {alert_rule['id']}") alert_actions = alert_rule.get("actions") or [] + + # kibana 8: + # pop any connector_type_id + if Version(kibana_version) > Version("8.0.0"): + for action in alert_actions: + action.pop("connector_type_id", None) + keep_action_exists = any( iter( [ @@ -318,18 +395,14 @@ def __setup_webhook_alerts(self, tenant_id: str, keep_api_url: str, api_key: str # This alert was already modified by us / manually added self.logger.info(f"Alert {alert_rule['id']} already updated, skipping") continue - for status in ["Alert", "Recovered", "No Data"]: + + action_groups = rule_types.get(alert_rule["rule_type_id"], {}).get( + "action_groups", [] + ) + for action_group in action_groups: alert_actions.append( { - "group": ( - "custom_threshold.fired" - if status == "Alert" - else ( - "recovered" - if status == "Recovered" - else "custom_threshold.nodata" - ) - ), + "group": action_group.get("id"), "id": connector_id, "params": {"body": KibanaProvider.WEBHOOK_PAYLOAD}, "frequency": { @@ -340,6 +413,7 @@ def __setup_webhook_alerts(self, tenant_id: str, keep_api_url: str, api_key: str "uuid": str(uuid.uuid4()), } ) + try: self.request( "PUT", @@ -443,10 +517,14 @@ def setup_webhook( def validate_config(self): if self.is_installed or self.is_provisioned: - host = self.config.authentication['kibana_host'] + host = self.config.authentication["kibana_host"] if not (host.startswith("http://") or host.startswith("https://")): - scheme = "http://" if ("localhost" in host or "127.0.0.1" in host) else "https://" - self.config.authentication['kibana_host'] = scheme + host + scheme = ( + "http://" + if ("localhost" in host or "127.0.0.1" in host) + else "https://" + ) + self.config.authentication["kibana_host"] = scheme + host self.authentication_config = KibanaProviderAuthConfig( **self.config.authentication @@ -501,25 +579,22 @@ def _format_alert( # If this is coming from Kibana Watcher if "payload" in event: return KibanaProvider.format_alert_from_watcher(event) - try: - labels = { - v.split("=", 1)[0]: v.split("=", 1)[1] - for v in event.get("ruleTags", "").split(",") - } - except Exception: - # Failed to extract labels from ruleTags - labels = {} - try: - labels.update( - { - v.split("=", 1)[0]: v.split("=", 1)[1] - for v in event.get("contextTags", "").split(",") - } - ) - except Exception: - # Failed to enrich labels with contextTags - pass + labels = {} + tags = event.get("ruleTags", []) + for tag in tags: + # if the tag is a key=value pair + if "=" in tag: + key, value = tag.split("=", 1) + labels[key] = value + + # same with contextTags + context_tags = event.get("contextTags", []) + for tag in context_tags: + # if the tag is a key=value pair + if "=" in tag: + key, value = tag.split("=", 1) + labels[key] = value environment = labels.get("environment", "undefined") @@ -530,8 +605,19 @@ def _format_alert( event["severity"] = KibanaProvider.SEVERITIES_MAP.get( event.get("severity"), AlertSeverity.INFO ) + + if not event.get("url"): + event["url"] = event.get("ruleUrl") + # if still no url, popt it + if not event.get("url"): + event.pop("url", None) + return AlertDto( - environment=environment, labels=labels, source=["kibana"], **event + environment=environment, + labels=labels, + tags=tags, + source=["kibana"], + **event, ) diff --git a/pyproject.toml b/pyproject.toml index a235108fd3..ba26bd8c72 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.5" +version = "0.35.6" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] From ee1a386d0966381e2d74f0e6527a2635361b3b3e Mon Sep 17 00:00:00 2001 From: Jay Kumar <70096901+35C4n0r@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:46:30 +0530 Subject: [PATCH 30/39] feat: add grafana tempo topology (#3217) Signed-off-by: 35C4n0r Co-authored-by: Tal --- .../documentation/grafana-provider.mdx | 12 +- .../argocd_provider/argocd_provider.py | 2 +- keep/providers/grafana_provider/README.md | 4 + .../grafana_provider/grafana_provider.py | 134 +++++++++++++++++- 4 files changed, 146 insertions(+), 6 deletions(-) diff --git a/docs/providers/documentation/grafana-provider.mdx b/docs/providers/documentation/grafana-provider.mdx index 500d6b15c7..886a98e6ce 100644 --- a/docs/providers/documentation/grafana-provider.mdx +++ b/docs/providers/documentation/grafana-provider.mdx @@ -1,8 +1,8 @@ --- title: "Grafana Provider" -description: "Grafana Provider allows either pull/push alerts from Grafana to Keep." +description: "Grafana Provider allows either pull/push alerts and pull Topology Map from Grafana to Keep." --- -Grafana currently supports pulling/pushing alerts. We will add querying and notifying soon. +Grafana currently supports pulling/pushing alerts & Topology Map. We will add querying and notifying soon. ## Legacy vs Unified Alerting @@ -114,6 +114,14 @@ If Keep is not accessible externally and the webhook cannot be created, you can 4. **Network and Connectivity Check:** - Use network monitoring tools to ensure Grafana can reach Keep or any alternative endpoint configured for alerts. + +**Topology Map** is generated from the traces collect by Tempo. +To get the Datasource UID, go to: +1. Connections > Data Sources. +2. Click the Prometheus instance which is scraping data from Tempo > Your URL is in the format `https://host/connections/datasources/edit/` +3. Copy that DATASOURCE_UID and use it while installing the provider. + + ## Webhook Integration Modifications The webhook integration adds Keep as a contact point in the Grafana instance. This integration can be located under the "Contact Points" section. Keep also gains access to the following scopes: diff --git a/keep/providers/argocd_provider/argocd_provider.py b/keep/providers/argocd_provider/argocd_provider.py index 897a1ad590..5fed4a460b 100644 --- a/keep/providers/argocd_provider/argocd_provider.py +++ b/keep/providers/argocd_provider/argocd_provider.py @@ -234,4 +234,4 @@ def pull_topology(self): node["uid"] ] = "unknown" - return list(service_topology.values()) + return list(service_topology.values()), {} diff --git a/keep/providers/grafana_provider/README.md b/keep/providers/grafana_provider/README.md index f82746dd9a..145b33ddd8 100644 --- a/keep/providers/grafana_provider/README.md +++ b/keep/providers/grafana_provider/README.md @@ -56,3 +56,7 @@ curl -X POST -H "Content-Type: application/json" \ # and get {"id":1,"name":"keep-token","key":"glsa_XXXXXX"}% ``` + +### For Topology Quickstart +Follow this guide: +https://grafana.com/docs/tempo/latest/getting-started/docker-example/ \ No newline at end of file diff --git a/keep/providers/grafana_provider/grafana_provider.py b/keep/providers/grafana_provider/grafana_provider.py index dad11c42e5..ccc56116b0 100644 --- a/keep/providers/grafana_provider/grafana_provider.py +++ b/keep/providers/grafana_provider/grafana_provider.py @@ -12,9 +12,10 @@ from packaging.version import Version from keep.api.models.alert import AlertDto, AlertSeverity, AlertStatus +from keep.api.models.db.topology import TopologyServiceInDto from keep.contextmanager.contextmanager import ContextManager from keep.exceptions.provider_exception import ProviderException -from keep.providers.base.base_provider import BaseProvider +from keep.providers.base.base_provider import BaseProvider, BaseTopologyProvider from keep.providers.base.provider_exceptions import GetAlertException from keep.providers.grafana_provider.grafana_alert_format_description import ( GrafanaAlertFormatDescription, @@ -47,11 +48,18 @@ class GrafanaProviderAuthConfig: "validation": "any_http_url", }, ) + datasource_uid: str = dataclasses.field( + metadata={ + "required": False, + "description": "Datasource UID", + "hint": "Provide if you want to pull topology data", + }, + ) -class GrafanaProvider(BaseProvider): +class GrafanaProvider(BaseTopologyProvider): PROVIDER_DISPLAY_NAME = "Grafana" - """Pull/Push alerts from Grafana.""" + """Pull/Push alerts & Topology map from Grafana.""" PROVIDER_CATEGORY = ["Monitoring", "Developer Tools"] KEEP_GRAFANA_WEBHOOK_INTEGRATION_NAME = "keep-grafana-webhook-integration" @@ -856,6 +864,126 @@ def simulate_alert(cls, **kwargs) -> dict: return {"keep_source_type": "grafana", "event": final_payload} return final_payload + def query_datasource_for_topology(self): + self.logger.info("Attempting to query datasource for topology data.") + headers = {"Authorization": f"Bearer {self.authentication_config.token}", "Content-Type": "application/json",} + json_data = { + "queries": [ + { + "format": "table", + "refId": "traces_service_graph_request_total", + "expr": "sum by (client, server) (rate(traces_service_graph_request_total[3600s]))", + "instant": True, + "exemplar": False, + "requestId": "service_map_request", + "utcOffsetSec": 19800, + "interval": "", + "legendFormat": "", + "datasource": { + "uid": self.authentication_config.datasource_uid, + }, + "datasourceId": 1, + "intervalMs": 5000, + "maxDataPoints": 954, + }, + { + "format": "table", + "refId": "traces_service_graph_request_server_seconds_sum", + "expr": "sum by (client, server) (rate(traces_service_graph_request_server_seconds_sum[3600s]))", + "instant": True, + "exemplar": False, + "requestId": "service_map_request_avg", + "utcOffsetSec": 19800, + "interval": "", + "legendFormat": "", + "datasource": { + "uid": self.authentication_config.datasource_uid, + }, + "datasourceId": 1, + "intervalMs": 5000, + "maxDataPoints": 954, + }, + ], + "to": "now", + } + try: + response = requests.post( + f"{self.authentication_config.host}/api/ds/query", + verify=False, + headers=headers, + json=json_data, + timeout=10, + ) + if response.status_code != 200: + raise Exception(response.text) + return response.json() + except Exception as e: + self.logger.error("Error while querying datasource for topology map", extra={"exception": str(e)}) + + @staticmethod + def __extract_schema_value_pair(results, query: str): + client_server_data = {} + for frames in results.get(query, {}).get("frames", []): + value_index = 0 + for fields in frames.get("schema", {}).get("fields", []): + if ( + "labels" in fields + and "client" in fields["labels"] + and "server" in fields["labels"] + ): + client_server_data[ + (fields["labels"]["client"], fields["labels"]["server"]) + ] = float(frames["data"]["values"][value_index][0]) + break + value_index += 1 + return client_server_data + + def pull_topology(self): + self.logger.info("Pulling Topology data from Grafana...") + try: + service_topology = {} + results = self.query_datasource_for_topology().get("results", {}) + + self.logger.info("Scraping traces_service_graph_request_total data from the response") + requests_per_second_data = GrafanaProvider.__extract_schema_value_pair( + results=results, query="traces_service_graph_request_total" + ) + + self.logger.info("Scraping traces_service_graph_request_server_seconds_sum data from the response") + total_response_times_data = GrafanaProvider.__extract_schema_value_pair( + results=results, query="traces_service_graph_request_server_seconds_sum" + ) + + self.logger.info("Building Topology map.") + for client_server in requests_per_second_data: + client, server = client_server + requests_per_second = requests_per_second_data[client_server] + total_response_time = total_response_times_data.get(client_server, None) + + if client not in service_topology: + service_topology[client] = TopologyServiceInDto( + source_provider_id=self.provider_id, + service=client, + display_name=client, + ) + if server not in service_topology: + service_topology[server] = TopologyServiceInDto( + source_provider_id=self.provider_id, + service=server, + display_name=server, + ) + + service_topology[client].dependencies[server] = ( + "unknown" + if total_response_time is None + else f"{round(requests_per_second, 2)}r/sec || {round((total_response_time / requests_per_second) * 1000, 2)}ms/r" + ) + self.logger.info("Successfully pulled Topology data from Grafana...") + return list(service_topology.values()), {} + except Exception as e: + self.logger.error("Error while pulling topology data from Grafana", extra={"exception": str(e)}) + raise e + if __name__ == "__main__": # Output debug messages From 431d115a0f0a7bf5f8809c643897c2925a0ea25f Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Thu, 30 Jan 2025 11:56:48 +0200 Subject: [PATCH 31/39] feat(api): workflow filters exclusion (#3224) --- keep/workflowmanager/workflowmanager.py | 24 +- pyproject.toml | 2 +- tests/test_workflow_filters.py | 994 ++++++++++++++++++++++++ 3 files changed, 1016 insertions(+), 4 deletions(-) create mode 100644 tests/test_workflow_filters.py diff --git a/keep/workflowmanager/workflowmanager.py b/keep/workflowmanager/workflowmanager.py index 9954eaf0fe..0f9e08e28c 100644 --- a/keep/workflowmanager/workflowmanager.py +++ b/keep/workflowmanager/workflowmanager.py @@ -183,6 +183,7 @@ def insert_events(self, tenant_id, events: typing.List[AlertDto | IncidentDto]): self.logger.debug(f"Running filter {filter}") filter_key = filter.get("key") filter_val = filter.get("value") + filter_exclude = filter.get("exclude", False) event_val = self._get_event_value(event, filter_key) self.logger.debug( "Filtering", @@ -217,7 +218,11 @@ def insert_events(self, tenant_id, events: typing.List[AlertDto | IncidentDto]): "event": event, }, ) - should_run = True + # depends on the exclude flag + if filter_exclude: + should_run = False + else: + should_run = True break self.logger.debug( "Filter didn't match, skipping", @@ -227,10 +232,12 @@ def insert_events(self, tenant_id, events: typing.List[AlertDto | IncidentDto]): "event": event, }, ) - should_run = False + if not filter_exclude: + should_run = False # elif the filter is string/int/float, compare them: elif type(event_val) in [int, str, float, bool]: - if not self._apply_filter(filter_val, event_val): + filter_applied = self._apply_filter(filter_val, event_val) + if not filter_applied and not filter_exclude: self.logger.debug( "Filter didn't match, skipping", extra={ @@ -241,6 +248,17 @@ def insert_events(self, tenant_id, events: typing.List[AlertDto | IncidentDto]): ) should_run = False break + # if the filter applies but its exclusion filter, don't run + elif filter_applied and filter_exclude: + self.logger.debug( + "Filter matched but it's exclusion filter, skipping", + extra={ + "filter_key": filter_key, + "filter_val": filter_val, + "event": event, + }, + ) + should_run = False # other types currently does not supported else: self.logger.warning( diff --git a/pyproject.toml b/pyproject.toml index ba26bd8c72..496c30fdb1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.6" +version = "0.35.7" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}] diff --git a/tests/test_workflow_filters.py b/tests/test_workflow_filters.py new file mode 100644 index 0000000000..9c8cd94ac9 --- /dev/null +++ b/tests/test_workflow_filters.py @@ -0,0 +1,994 @@ +from keep.api.core.dependencies import SINGLE_TENANT_UUID +from keep.api.models.alert import AlertDto +from keep.api.models.db.workflow import Workflow as WorkflowDB +from keep.workflowmanager.workflowmanager import WorkflowManager + + +def test_regex_service_filter(db_session): + """Test regex pattern matching for service name""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: service-check +triggers: +- type: alert + filters: + - key: service + value: r"(payments|ftp)" +""" + workflow = WorkflowDB( + id="service-check", + name="service-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle alerts for specific services", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match + payments_alert = AlertDto( + id="alert-1", + source=["grafana"], + name="error-alert", + service="payments", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + ftp_alert = AlertDto( + id="alert-2", + source=["grafana"], + name="error-alert", + service="ftp", + status="firing", + severity="critical", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + # Should not match + other_alert = AlertDto( + id="alert-3", + source=["grafana"], + name="error-alert", + service="email", + status="firing", + severity="critical", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, [payments_alert, ftp_alert, other_alert] + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 2 + + # Validate specific alerts in workflows_to_run + triggered_alerts = [ + w.get("event") for w in workflow_manager.scheduler.workflows_to_run + ] + assert any(a.id == "alert-1" and a.service == "payments" for a in triggered_alerts) + assert any(a.id == "alert-2" and a.service == "ftp" for a in triggered_alerts) + + +def test_multiple_source_regex(db_session): + """Test regex pattern matching for multiple sources""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: source-check +triggers: +- type: alert + filters: + - key: source + value: r"(grafana|prometheus)" +""" + workflow = WorkflowDB( + id="source-check", + name="source-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle alerts from multiple sources", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + grafana_alert = AlertDto( + id="grafana-1", + source=["grafana"], + name="alert1", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + prometheus_alert = AlertDto( + id="prom-1", + source=["prometheus"], + name="alert2", + status="firing", + severity="warning", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + sentry_alert = AlertDto( + id="sentry-1", + source=["sentry"], + name="alert3", + status="firing", + severity="error", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, [grafana_alert, prometheus_alert, sentry_alert] + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 2 + + # Validate triggered alerts + triggered_alerts = [ + w.get("event") for w in workflow_manager.scheduler.workflows_to_run + ] + assert any( + a.id == "grafana-1" and a.source == ["grafana"] for a in triggered_alerts + ) + assert any( + a.id == "prom-1" and a.source == ["prometheus"] for a in triggered_alerts + ) + assert not any(a.id == "sentry-1" for a in triggered_alerts) + + +def test_combined_filters_with_regex(db_session): + """Test combination of regex and exact match filters""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: combined-check +triggers: +- type: alert + filters: + - key: source + value: sentry + - key: severity + value: critical + - key: service + value: r"(payments|ftp)" +""" + workflow = WorkflowDB( + id="combined-check", + name="combined-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle specific alerts with combined conditions", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match + matching_alert = AlertDto( + id="sentry-1", + source=["sentry"], + name="error", + service="payments", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + # Wrong severity + wrong_severity = AlertDto( + id="sentry-2", + source=["sentry"], + name="error", + service="payments", + status="firing", + severity="warning", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events(SINGLE_TENANT_UUID, [matching_alert, wrong_severity]) + assert len(workflow_manager.scheduler.workflows_to_run) == 1 + + # Validate the triggered alert + triggered_alert = workflow_manager.scheduler.workflows_to_run[0].get("event") + assert triggered_alert.id == "sentry-1" + assert triggered_alert.source == ["sentry"] + assert triggered_alert.severity == "critical" + assert triggered_alert.service == "payments" + + +def test_wildcard_source_filter(db_session): + """Test wildcard regex pattern for source""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: wildcard-check +triggers: +- type: alert + filters: + - key: source + value: r".*" +""" + workflow = WorkflowDB( + id="wildcard-check", + name="wildcard-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle all alerts regardless of source", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + test_sources = ["grafana", "prometheus", "sentry", "custom"] + alerts = [ + AlertDto( + id=f"alert-{i}", + source=[source], + name="test-alert", + status="firing", + severity="critical", + fingerprint=f"fp{i}", + lastReceived="2025-01-30T09:19:02.519Z", + ) + for i, source in enumerate(test_sources) + ] + + workflow_manager.insert_events(SINGLE_TENANT_UUID, alerts) + assert len(workflow_manager.scheduler.workflows_to_run) == 4 + + # Validate all alerts are triggered + triggered_alerts = [ + w.get("event") for w in workflow_manager.scheduler.workflows_to_run + ] + for i, source in enumerate(test_sources): + assert any( + a.id == f"alert-{i}" + and a.source == [source] + and a.lastReceived == "2025-01-30T09:19:02.519Z" + for a in triggered_alerts + ) + + +def test_multiple_filters_with_exclusion(db_session): + """Test multiple filters including exclusion""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: complex-check +triggers: +- type: alert + filters: + - key: source + value: r"(grafana|prometheus)" + - key: severity + value: critical + - key: service + value: database + exclude: true +""" + workflow = WorkflowDB( + id="complex-check", + name="complex-check", + tenant_id=SINGLE_TENANT_UUID, + description="Complex filter combination", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match + matching_alert = AlertDto( + id="grafana-1", + source=["grafana"], + name="error", + service="api", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + # Excluded service + excluded_alert = AlertDto( + id="prometheus-1", + source=["prometheus"], + name="error", + service="database", + status="firing", + severity="critical", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events(SINGLE_TENANT_UUID, [matching_alert, excluded_alert]) + assert len(workflow_manager.scheduler.workflows_to_run) == 1 + + # Validate the triggered alert + triggered_alert = workflow_manager.scheduler.workflows_to_run[0].get("event") + assert triggered_alert.id == "grafana-1" + assert triggered_alert.source == ["grafana"] + assert triggered_alert.service == "api" + assert triggered_alert.severity == "critical" + assert triggered_alert.lastReceived == "2025-01-30T09:19:02.519Z" + + +def test_nested_regex_patterns(db_session): + """Test nested regex patterns with special characters""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: nested-regex +triggers: +- type: alert + filters: + - key: name + value: r"error\\.[a-z]+\\.(critical|warning)" +""" + workflow = WorkflowDB( + id="nested-regex", + name="nested-regex", + tenant_id=SINGLE_TENANT_UUID, + description="Handle nested error patterns", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match + matching_alerts = [ + AlertDto( + id="alert-1", + source=["grafana"], + name="error.database.critical", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-2", + source=["grafana"], + name="error.api.warning", + status="firing", + severity="warning", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + # Should not match + non_matching_alerts = [ + AlertDto( + id="alert-3", + source=["grafana"], + name="error.network.info", + status="firing", + severity="info", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-4", + source=["grafana"], + name="warning.system.critical", + status="firing", + severity="critical", + fingerprint="fp4", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, matching_alerts + non_matching_alerts + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 2 + + triggered_alerts = [ + w.get("event") for w in workflow_manager.scheduler.workflows_to_run + ] + assert any( + a.id == "alert-1" and a.name == "error.database.critical" + for a in triggered_alerts + ) + assert any( + a.id == "alert-2" and a.name == "error.api.warning" for a in triggered_alerts + ) + + +def test_time_based_filters(db_session): + """Test filtering alerts based on lastReceived timestamp patterns""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: time-check +triggers: +- type: alert + filters: + - key: lastReceived + value: r"2025-01-30T09:.*" + - key: severity + value: critical +""" + workflow = WorkflowDB( + id="time-check", + name="time-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle time-sensitive alerts", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match (correct time pattern and severity) + matching_alert = AlertDto( + id="alert-1", + source=["grafana"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:15:00.000Z", + ) + + # Wrong time pattern + wrong_time = AlertDto( + id="alert-2", + source=["grafana"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp2", + lastReceived="2025-01-30T10:19:02.519Z", + ) + + # Wrong severity + wrong_severity = AlertDto( + id="alert-3", + source=["grafana"], + name="error-alert", + status="firing", + severity="warning", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, [matching_alert, wrong_time, wrong_severity] + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 1 + + triggered_alert = workflow_manager.scheduler.workflows_to_run[0].get("event") + assert triggered_alert.id == "alert-1" + assert triggered_alert.severity == "critical" + assert triggered_alert.lastReceived.startswith("2025-01-30T09:") + + +def test_empty_string_filters(db_session): + """Test handling of empty string values in filters""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: empty-check +triggers: +- type: alert + filters: + - key: service + value: r"^$" + - key: severity + value: critical +""" + workflow = WorkflowDB( + id="empty-check", + name="empty-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle alerts with empty fields", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match (empty service field) + matching_alert = AlertDto( + id="alert-1", + source=["grafana"], + name="error-alert", + service="", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + # Non-empty service field + non_empty_service = AlertDto( + id="alert-2", + source=["grafana"], + name="error-alert", + service="api", + status="firing", + severity="critical", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, [matching_alert, non_empty_service] + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 1 + + triggered_alert = workflow_manager.scheduler.workflows_to_run[0].get("event") + assert triggered_alert.id == "alert-1" + assert triggered_alert.service == "" + assert triggered_alert.severity == "critical" + + +def test_nested_regex_patterns(db_session): + """Test nested regex patterns with special characters""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: nested-regex +triggers: +- type: alert + filters: + - key: name + value: r"error\\.[a-z]+\\.(critical|warning)" +""" + workflow = WorkflowDB( + id="nested-regex", + name="nested-regex", + tenant_id=SINGLE_TENANT_UUID, + description="Handle nested error patterns", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match + matching_alerts = [ + AlertDto( + id="alert-1", + source=["grafana"], + name="error.database.critical", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-2", + source=["grafana"], + name="error.api.warning", + status="firing", + severity="warning", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + # Should not match + non_matching_alerts = [ + AlertDto( + id="alert-3", + source=["grafana"], + name="error.network.info", + status="firing", + severity="info", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-4", + source=["grafana"], + name="warning.system.critical", + status="firing", + severity="critical", + fingerprint="fp4", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, matching_alerts + non_matching_alerts + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 2 + + triggered_alerts = [ + w.get("event") for w in workflow_manager.scheduler.workflows_to_run + ] + assert any( + a.id == "alert-1" and a.name == "error.database.critical" + for a in triggered_alerts + ) + assert any( + a.id == "alert-2" and a.name == "error.api.warning" for a in triggered_alerts + ) + + +def test_time_based_filters(db_session): + """Test filtering alerts based on lastReceived timestamp patterns""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: time-check +triggers: +- type: alert + filters: + - key: lastReceived + value: r"2025-01-30T09:.*" + - key: severity + value: critical +""" + workflow = WorkflowDB( + id="time-check", + name="time-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle time-sensitive alerts", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match (correct time pattern and severity) + matching_alert = AlertDto( + id="alert-1", + source=["grafana"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:15:00.000Z", + ) + + # Wrong time pattern + wrong_time = AlertDto( + id="alert-2", + source=["grafana"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp2", + lastReceived="2025-01-30T10:19:02.519Z", + ) + + # Wrong severity + wrong_severity = AlertDto( + id="alert-3", + source=["grafana"], + name="error-alert", + status="firing", + severity="warning", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, [matching_alert, wrong_time, wrong_severity] + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 1 + + triggered_alert = workflow_manager.scheduler.workflows_to_run[0].get("event") + assert triggered_alert.id == "alert-1" + assert triggered_alert.severity == "critical" + assert triggered_alert.lastReceived.startswith("2025-01-30T09:") + + +def test_empty_string_filters(db_session): + """Test handling of empty string values in filters""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: empty-check +triggers: +- type: alert + filters: + - key: service + value: r"^$" + - key: severity + value: critical +""" + workflow = WorkflowDB( + id="empty-check", + name="empty-check", + tenant_id=SINGLE_TENANT_UUID, + description="Handle alerts with empty fields", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match (empty service field) + matching_alert = AlertDto( + id="alert-1", + source=["grafana"], + name="error-alert", + service="", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + # Non-empty service field + non_empty_service = AlertDto( + id="alert-2", + source=["grafana"], + name="error-alert", + service="api", + status="firing", + severity="critical", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, [matching_alert, non_empty_service] + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 1 + + triggered_alert = workflow_manager.scheduler.workflows_to_run[0].get("event") + assert triggered_alert.id == "alert-1" + assert triggered_alert.service == "" + assert triggered_alert.severity == "critical" + + +def test_multiple_exclusion_filters(db_session): + """Test multiple exclusion filters in combination""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: multi-exclude +triggers: +- type: alert + filters: + - key: service + value: r"(api|database|cache)" + - key: severity + value: r"(critical|warning)" + exclude: true + - key: status + value: resolved + exclude: true +""" + workflow = WorkflowDB( + id="multi-exclude", + name="multi-exclude", + tenant_id=SINGLE_TENANT_UUID, + description="Handle alerts with multiple exclusions", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match (info severity, firing status) + matching_alert = AlertDto( + id="alert-1", + source=["grafana"], + name="error-alert", + service="api", + status="firing", + severity="info", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + # Should not match (excluded severity) + excluded_severity = AlertDto( + id="alert-2", + source=["grafana"], + name="error-alert", + service="database", + status="firing", + severity="warning", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + # Should not match (excluded status) + excluded_status = AlertDto( + id="alert-3", + source=["grafana"], + name="error-alert", + service="cache", + status="resolved", + severity="info", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ) + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, [matching_alert, excluded_severity, excluded_status] + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 1 + + triggered_alert = workflow_manager.scheduler.workflows_to_run[0].get("event") + assert triggered_alert.id == "alert-1" + assert triggered_alert.service == "api" + assert triggered_alert.severity == "info" + assert triggered_alert.status == "firing" + + +def test_regex_exclusion_patterns(db_session): + """Test regex patterns with exclusion""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: regex-exclude +triggers: +- type: alert + filters: + - key: name + value: r"error\\.[a-z]+\\..*" + - key: name + value: r"error\\.database\\..*" + exclude: true +""" + workflow = WorkflowDB( + id="regex-exclude", + name="regex-exclude", + tenant_id=SINGLE_TENANT_UUID, + description="Handle alerts with regex exclusions", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match + matching_alerts = [ + AlertDto( + id="alert-1", + source=["grafana"], + name="error.api.critical", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-2", + source=["grafana"], + name="error.cache.warning", + status="firing", + severity="warning", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + # Should not match (excluded pattern) + excluded_alerts = [ + AlertDto( + id="alert-3", + source=["grafana"], + name="error.database.critical", + status="firing", + severity="critical", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-4", + source=["grafana"], + name="error.database.warning", + status="firing", + severity="warning", + fingerprint="fp4", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, matching_alerts + excluded_alerts + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 2 + + triggered_alerts = [ + w.get("event") for w in workflow_manager.scheduler.workflows_to_run + ] + assert any(a.id == "alert-1" and "database" not in a.name for a in triggered_alerts) + assert any(a.id == "alert-2" and "database" not in a.name for a in triggered_alerts) + + +def test_exclusion_with_source_list(db_session): + """Test exclusion filters with source list values""" + workflow_manager = WorkflowManager() + workflow_definition = """workflow: +id: source-exclude +triggers: +- type: alert + filters: + - key: source + value: r".*" + - key: source + value: r"(prometheus|sentry)" + exclude: true + - key: severity + value: critical +""" + workflow = WorkflowDB( + id="source-exclude", + name="source-exclude", + tenant_id=SINGLE_TENANT_UUID, + description="Handle alerts with source exclusions", + created_by="test@keephq.dev", + interval=0, + workflow_raw=workflow_definition, + ) + db_session.add(workflow) + db_session.commit() + + # Should match + matching_alerts = [ + AlertDto( + id="alert-1", + source=["grafana"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp1", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-2", + source=["custom"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp2", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + # Should not match (excluded sources) + excluded_alerts = [ + AlertDto( + id="alert-3", + source=["prometheus"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp3", + lastReceived="2025-01-30T09:19:02.519Z", + ), + AlertDto( + id="alert-4", + source=["sentry"], + name="error-alert", + status="firing", + severity="critical", + fingerprint="fp4", + lastReceived="2025-01-30T09:19:02.519Z", + ), + ] + + workflow_manager.insert_events( + SINGLE_TENANT_UUID, matching_alerts + excluded_alerts + ) + assert len(workflow_manager.scheduler.workflows_to_run) == 2 + + triggered_alerts = [ + w.get("event") for w in workflow_manager.scheduler.workflows_to_run + ] + assert any(a.id == "alert-1" and a.source == ["grafana"] for a in triggered_alerts) + assert any(a.id == "alert-2" and a.source == ["custom"] for a in triggered_alerts) From ddfc7ac0567df05e03c14ac07a9a0c133eb84772 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 12:12:14 +0200 Subject: [PATCH 32/39] chore(deps): bump snowflake-connector-python from 3.12.3 to 3.13.1 (#3226) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 70 +++++++++++++++++++++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0dd4a10c21..346ffcbefd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "aiofiles" @@ -3868,6 +3868,7 @@ files = [ {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bb89f0a835bcfc1d42ccd5f41f04870c1b936d8507c6df12b7737febc40f0909"}, {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f0c2d907a1e102526dd2986df638343388b94c33860ff3bbe1384130828714b1"}, {file = "psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8157bed2f51db683f31306aa497311b560f2265998122abe1dce6428bd86567"}, + {file = "psycopg2_binary-2.9.10-cp313-cp313-win_amd64.whl", hash = "sha256:27422aa5f11fbcd9b18da48373eb67081243662f9b46e6fd07c3eb46e4535142"}, {file = "psycopg2_binary-2.9.10-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:eb09aa7f9cecb45027683bb55aebaaf45a0df8bf6de68801a6afdc7947bb09d4"}, {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b73d6d7f0ccdad7bc43e6d34273f70d587ef62f824d7261c4ae9b8b1b6af90e8"}, {file = "psycopg2_binary-2.9.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce5ab4bf46a211a8e924d307c1b1fcda82368586a19d0a24f8ae166f5c784864"}, @@ -4777,6 +4778,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6"}, @@ -4785,6 +4787,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632"}, @@ -4793,6 +4796,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a"}, @@ -4801,6 +4805,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987"}, @@ -4809,6 +4814,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b"}, {file = "ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f"}, @@ -4998,56 +5004,56 @@ files = [ [[package]] name = "snowflake-connector-python" -version = "3.12.3" +version = "3.13.1" description = "Snowflake Connector for Python" optional = false python-versions = ">=3.8" files = [ - {file = "snowflake_connector_python-3.12.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:497a096fc379ef0846b2f1cf11a8d7620f0d090f08a77d9e93473845014d57d1"}, - {file = "snowflake_connector_python-3.12.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:055c5808d524497213e4cc9ae91ec3e46cb8342b314e78bc3e139d733dc16741"}, - {file = "snowflake_connector_python-3.12.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a5dc512d62ef693041ed2ad82931231caddc16e14ffc2842da3e3dd4240b83d"}, - {file = "snowflake_connector_python-3.12.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a46448f7279d444084eb84a9cddea67662e80ccfaddf41713b9e9aab2b1242e9"}, - {file = "snowflake_connector_python-3.12.3-cp310-cp310-win_amd64.whl", hash = "sha256:821b774b77129ce9f03729456ac1f21d69fedb50e5ce957178131c7bb3d8279f"}, - {file = "snowflake_connector_python-3.12.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82290134978d11628026b447052219ce8d880e36937204f1f0332dfc3f2e92e9"}, - {file = "snowflake_connector_python-3.12.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:20b5c8000ee9cee11b0f9a6ae26640f0d498ce77f7e2ec649a2f0d306523792d"}, - {file = "snowflake_connector_python-3.12.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6500d16bdbd37da88e589cc3e82b90272471d3aabfe4a79ec1cf4696675acf"}, - {file = "snowflake_connector_python-3.12.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b455ba117a68da436e253899674fae1a93669eaefdde8a903c03eb65b7e87c86"}, - {file = "snowflake_connector_python-3.12.3-cp311-cp311-win_amd64.whl", hash = "sha256:205219fcaeee2d33db5d0d023d60518e3bd8272ce1679be2199d7f362d255054"}, - {file = "snowflake_connector_python-3.12.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3d830ca32c864b730cba5d92900d850752199635c4fb0ae0a70ee677f62aee70"}, - {file = "snowflake_connector_python-3.12.3-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:597b0c74ec57ba693191ae2de8db9536e349ee32cab152df657473e498b6fd87"}, - {file = "snowflake_connector_python-3.12.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2215d8a4c5e25ea0d2183fe693c3fdf058cd6035e5c84710d532dc04ab4ffd31"}, - {file = "snowflake_connector_python-3.12.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ba9c261904c1ba7cae6035c7881224cf979da39c8b7c7cb10236fdfc57e505"}, - {file = "snowflake_connector_python-3.12.3-cp312-cp312-win_amd64.whl", hash = "sha256:f0d0fcb948ef0812ab162ec9767622f345554043a07439c0c1a9474c86772320"}, - {file = "snowflake_connector_python-3.12.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fe742a0b2fb1c79a21e95b97c49a05783bc00314d1184d227c5fe5b57688af12"}, - {file = "snowflake_connector_python-3.12.3-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:a8584a44a6bb41d2056cf1b833e629c76e28c5303d2c875c1a23bda46a1cd43a"}, - {file = "snowflake_connector_python-3.12.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd990db8e4886c32ba5c63758e8dc4814e2e75f5fd3fe79d43f7e5ee0fc46793"}, - {file = "snowflake_connector_python-3.12.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4fe7f91f6e44bda877e77403a586d7487ca2c52dc1a32a705b2fea33f9c763a"}, - {file = "snowflake_connector_python-3.12.3-cp38-cp38-win_amd64.whl", hash = "sha256:4994e95eff593dc44c28243ef0ae8d27b8b1aeb96dd64cbcea5bcf0e4dfb77fb"}, - {file = "snowflake_connector_python-3.12.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ac33a7dd54b35f94c4b91369971dbd6467a914dff4b01c46e77e7e6901d7eca4"}, - {file = "snowflake_connector_python-3.12.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:a26876322811fe2b93f6d814dcfe016f1df680a12624026ecf57a6bcdf20f969"}, - {file = "snowflake_connector_python-3.12.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0bb390be2e15b6b7cccab7fbe1ef94e1e9ab13790c974aa44761298cdc2641"}, - {file = "snowflake_connector_python-3.12.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7340f73af4ae72e6af8fe28a1b8e196a0c99943071afc96ce419efb4da80035"}, - {file = "snowflake_connector_python-3.12.3-cp39-cp39-win_amd64.whl", hash = "sha256:c314749bd0151218b654a7d4646a39067ab650bdc86dfebb1884b056b0bdb4b4"}, - {file = "snowflake_connector_python-3.12.3.tar.gz", hash = "sha256:02873c7f7a3b10322e28dddc2be6907f8ab8ecad93d6d6af14c77c2f53091b88"}, + {file = "snowflake_connector_python-3.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b636641df38b7b951f62a7f53a6444576bbbadddd2d73615f7ceade4e79b32d7"}, + {file = "snowflake_connector_python-3.13.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bb7b617de91a74ba69057f4b78ef685dfd14c18fc5208861c0bf4d733fb80b7a"}, + {file = "snowflake_connector_python-3.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab4707f2d7bf2e4202c50b5c6250bff1fcbab471b1d82c2608c0adafd3970dc"}, + {file = "snowflake_connector_python-3.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15e00c0972233884d6b881efcdb5467a415fea1aa094a55985dc5aad66a3711"}, + {file = "snowflake_connector_python-3.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:05be6d96a4b771c1c81be947f6ca5c8b22925f4e415cc9d0c05dd0bdfaaee5cd"}, + {file = "snowflake_connector_python-3.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e51c3b0ca8b964c96e8592112422cb038d22bc4f94c9443a17871225df9f0de4"}, + {file = "snowflake_connector_python-3.13.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:4f34b805cae831ab8791599c513b0bd65186981ae5b7d0e22001922dcb3a29c5"}, + {file = "snowflake_connector_python-3.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bdbf58f625bb126a15112d3e6e35c68c2b5a7309a8faa173b3e80a284c4499e"}, + {file = "snowflake_connector_python-3.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51938948af9fda9d53acfce2e440963479c8b9cd0d05f8cbed06bd42bdf9c7ac"}, + {file = "snowflake_connector_python-3.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:8e4bb3f3a9dd5b5c516e6414c5991787715da5067a3d6d5ccdd2d124c56cdfef"}, + {file = "snowflake_connector_python-3.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f856fc29e7bacdec6ffa449de1d91da50637ba8d9fa675cec640f5853b2a79ba"}, + {file = "snowflake_connector_python-3.13.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:ba9bf43425e8938d7bdc0f0d9488783846e810af8173a1a35e642b6795180ca0"}, + {file = "snowflake_connector_python-3.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1540099913bafbccf7f2ca4b0e49893ee44f0645c94ec59f7c7c147085e64d5"}, + {file = "snowflake_connector_python-3.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8ee93ed3e89452b411cfcbe22efcf4796910ca014add2aa9bae0e8648e3b207"}, + {file = "snowflake_connector_python-3.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:0a55795f2d737adf89dbbc7829c971d44742fd3c0bf0401314a26178cdcde700"}, + {file = "snowflake_connector_python-3.13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2435e630d9cec64574045c38d3f1c795ee91b157dae12187c585318dcb42572d"}, + {file = "snowflake_connector_python-3.13.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:ad2646fb1704f43867718fa1b2b5d5b5ca8352b4fef2ef7f19bb18bd5b9ec5bd"}, + {file = "snowflake_connector_python-3.13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d56d43e5ddacc63b3b5e87bd98ee206da52388aac4a6e0d460e225430c5f1897"}, + {file = "snowflake_connector_python-3.13.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f32e0dcce63ff9ebdcad0a3c24465232a9667d38071c048b116b0bef85812a5"}, + {file = "snowflake_connector_python-3.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:8dfa6398a9424fad23fe32b0db5e27553453f8062e2ea498b8d81ff825791e6c"}, + {file = "snowflake_connector_python-3.13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:622484c3eedb9f4deb2a4f5124e25580bc43c39220e3c7ec01e18898e9a8020e"}, + {file = "snowflake_connector_python-3.13.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:8fdf757ca07ef4241bcc9d82123d104ab1cdb8525421ff56dab6d86802a59b81"}, + {file = "snowflake_connector_python-3.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcce282b3ac906063df7e16678b0c829b44384070b63c01a643fe67cd82343a"}, + {file = "snowflake_connector_python-3.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60401ab607be786081a0ba02128b230ab5c6afa7babaa215a327943dc0e293ac"}, + {file = "snowflake_connector_python-3.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:afcae3b8a38ba24ec0ca65208f282c234add7624cecbf968a564ebd2324a3287"}, + {file = "snowflake_connector_python-3.13.1.tar.gz", hash = "sha256:6d0f515f24efb58c7dae26ac681dac032cb4d0c94a1cb676a50b5d41c812b5b2"}, ] [package.dependencies] asn1crypto = ">0.24.0,<2.0.0" certifi = ">=2017.4.17" cffi = ">=1.9,<2.0.0" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" cryptography = ">=3.1.0" filelock = ">=3.5,<4" idna = ">=2.5,<4" packaging = "*" platformdirs = ">=2.6.0,<5.0.0" pyjwt = "<3.0.0" -pyOpenSSL = ">=16.2.0,<25.0.0" +pyOpenSSL = ">=22.0.0,<25.0.0" pytz = "*" requests = "<3.0.0" sortedcontainers = ">=2.4.0" tomlkit = "*" -typing-extensions = ">=4.3,<5" +typing_extensions = ">=4.3,<5" [package.extras] development = ["Cython", "coverage", "more-itertools", "numpy (<1.27.0)", "pendulum (!=2.1.1)", "pexpect", "pytest (<7.5.0)", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist", "pytzdata"] @@ -5769,4 +5775,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = ">=3.11,<3.12" -content-hash = "8b462c307769d66b5b79e497da1acd23b97b5f112ed8924d5702e521414605b2" +content-hash = "cabc3380c22a773d0c4ce480d08af85b28ca8849537853681bd79307a1f8b4c5" diff --git a/pyproject.toml b/pyproject.toml index 496c30fdb1..94959ab853 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,7 @@ cloud-sql-python-connector = "1.12.0" pymysql = "^1.1.1" google-cloud-secret-manager = "^2.16.1" sqlalchemy = "^2.0.14" -snowflake-connector-python = "3.12.3" +snowflake-connector-python = "3.13.1" openai = "1.37.1" opentelemetry-sdk = "1.29.0" opentelemetry-instrumentation-fastapi = "0.50b0" From 2ba3cb47f1df39e7c6adaf7bbaf996966b1e40e7 Mon Sep 17 00:00:00 2001 From: Vladimir Filonov Date: Thu, 30 Jan 2025 14:28:05 +0400 Subject: [PATCH 33/39] fix: incident is not closing automatically (#3225) --- .../db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py | 2 +- keep/api/routes/alerts.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py b/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py index 2e55ee4035..ed00eec9dd 100644 --- a/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py +++ b/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py @@ -19,7 +19,7 @@ def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### with op.batch_alter_table("rule", schema=None) as batch_op: - batch_op.add_column(sa.Column("is_deleted", sa.Boolean(), nullable=False)) + batch_op.add_column(sa.Column("is_deleted", sa.Boolean(), nullable=False, erver_default=sa.false())) # ### end Alembic commands ### diff --git a/keep/api/routes/alerts.py b/keep/api/routes/alerts.py index e25119493d..cfac1ad40a 100644 --- a/keep/api/routes/alerts.py +++ b/keep/api/routes/alerts.py @@ -602,6 +602,8 @@ def _enrich_alert( ) action_description = f"Alert status was changed to {enrich_data.enrichments['status']} by {authenticated_entity.email}" should_run_workflow = True + if enrich_data.enrichments["status"] == "resolved": + should_check_incidents_resolution = True elif "status" in enrich_data.enrichments and authenticated_entity.api_key_name: action_type = ( ActionType.API_AUTOMATIC_RESOLVE From 9c5a4461b325a65c1a1ff66585824104e9be188e Mon Sep 17 00:00:00 2001 From: Tal Date: Thu, 30 Jan 2025 12:31:30 +0200 Subject: [PATCH 34/39] fix: better performance in dedup process (#3184) Co-authored-by: Shahar Glazner --- .../alert_deduplicator/alert_deduplicator.py | 41 +++++++++++++------ keep/api/core/db.py | 25 +++++++---- keep/api/tasks/process_event_task.py | 12 +++++- 3 files changed, 55 insertions(+), 23 deletions(-) diff --git a/keep/api/alert_deduplicator/alert_deduplicator.py b/keep/api/alert_deduplicator/alert_deduplicator.py index 7b4077518d..b6efec2103 100644 --- a/keep/api/alert_deduplicator/alert_deduplicator.py +++ b/keep/api/alert_deduplicator/alert_deduplicator.py @@ -16,7 +16,7 @@ get_all_deduplication_stats, get_custom_deduplication_rule, get_deduplication_rule_by_id, - get_last_alert_hash_by_fingerprint, + get_last_alert_hashes_by_fingerprints, update_deduplication_rule, ) from keep.api.models.alert import ( @@ -43,7 +43,10 @@ def __init__(self, tenant_id): self.tenant_id = tenant_id def _apply_deduplication_rule( - self, alert: AlertDto, rule: DeduplicationRuleDto + self, + alert: AlertDto, + rule: DeduplicationRuleDto, + last_alert_fingerprint_to_hash: dict[str, str] | None = None, ) -> bool: """ Apply a deduplication rule to an alert. @@ -65,14 +68,19 @@ def _apply_deduplication_rule( json.dumps(alert_copy.dict(), default=str).encode() ).hexdigest() alert.alert_hash = alert_hash - # Check if the hash is already in the database - last_alert_hash_by_fingerprint = get_last_alert_hash_by_fingerprint( - self.tenant_id, alert.fingerprint + # Check if the hash is already in the database. + # If last_alert_fingerprint_to_hash is provided, use it + # else, get the hash from the database + last_alerts_hash_by_fingerprint = ( + last_alert_fingerprint_to_hash + or get_last_alert_hashes_by_fingerprints( + self.tenant_id, [alert.fingerprint] + ) ) # the hash is the same as the last alert hash by fingerprint - full deduplication if ( - last_alert_hash_by_fingerprint - and last_alert_hash_by_fingerprint == alert_hash + last_alerts_hash_by_fingerprint.get(alert.fingerprint) + and last_alerts_hash_by_fingerprint.get(alert.fingerprint) == alert_hash ): self.logger.info( "Alert is deduplicated", @@ -85,7 +93,7 @@ def _apply_deduplication_rule( alert.isFullDuplicate = True # it means that there is another alert with the same fingerprint but different hash # so its a deduplication - elif last_alert_hash_by_fingerprint: + elif last_alerts_hash_by_fingerprint.get(alert.fingerprint): self.logger.info( "Alert is partially deduplicated", extra={ @@ -101,19 +109,24 @@ def _apply_deduplication_rule( "alert_id": alert.id, "fingerprint": alert.fingerprint, "tenant_id": self.tenant_id, - "last_alert_hash_by_fingerprint": last_alert_hash_by_fingerprint, + "last_alert_hash_by_fingerprint": last_alerts_hash_by_fingerprint, }, ) return alert - def apply_deduplication(self, alert: AlertDto) -> bool: + def apply_deduplication( + self, + alert: AlertDto, + rules: list["DeduplicationRuleDto"] | None = None, + last_alert_fingerprint_to_hash: dict[str, str] | None = None, + ) -> bool: # IMPOTRANT NOTE TO SOMEONE WORKING ON THIS CODE: # apply_deduplication runs AFTER _format_alert, so you can assume that alert fields are in the expected format. # you are also safe to assume that alert.fingerprint is set by the provider itself # get only relevant rules - rules = self.get_deduplication_rules( + rules = rules or self.get_deduplication_rules( self.tenant_id, alert.providerId, alert.providerType ) @@ -125,7 +138,9 @@ def apply_deduplication(self, alert: AlertDto) -> bool: "alert_id": alert.id, }, ) - alert = self._apply_deduplication_rule(alert, rule) + alert = self._apply_deduplication_rule( + alert, rule, last_alert_fingerprint_to_hash + ) self.logger.debug( "Alert after deduplication rule applied", extra={ @@ -181,7 +196,7 @@ def _remove_field(self, field, alert: AlertDto) -> AlertDto: def get_deduplication_rules( self, tenant_id, provider_id, provider_type - ) -> DeduplicationRuleDto: + ) -> list[DeduplicationRuleDto]: # try to get the rule from the database rule = ( get_custom_deduplication_rule(tenant_id, provider_id, provider_type) diff --git a/keep/api/core/db.py b/keep/api/core/db.py index 9808b7d9b1..f9f42757ef 100644 --- a/keep/api/core/db.py +++ b/keep/api/core/db.py @@ -2224,19 +2224,27 @@ def get_all_deduplication_stats(tenant_id): return stats -def get_last_alert_hash_by_fingerprint(tenant_id, fingerprint) -> str | None: - # get the last alert for a given fingerprint +def get_last_alert_hashes_by_fingerprints( + tenant_id, fingerprints: list[str] +) -> dict[str, str | None]: + # get the last alert hashes for a list of fingerprints # to check deduplication with Session(engine) as session: query = ( - select(LastAlert.alert_hash) + select(LastAlert.fingerprint, LastAlert.alert_hash) .where(LastAlert.tenant_id == tenant_id) - .where(LastAlert.fingerprint == fingerprint) - .limit(1) + .where(LastAlert.fingerprint.in_(fingerprints)) ) - alert_hash: str | None = session.scalars(query).first() - return alert_hash + results = session.execute(query).all() + + # Create a dictionary from the results + alert_hash_dict = { + fingerprint: alert_hash + for fingerprint, alert_hash in results + if alert_hash is not None + } + return alert_hash_dict def update_key_last_used( @@ -3314,7 +3322,7 @@ def get_last_incidents( with_alerts: bool = False, is_predicted: bool = None, filters: Optional[dict] = None, - allowed_incident_ids: Optional[List[str]] = None + allowed_incident_ids: Optional[List[str]] = None, ) -> Tuple[list[Incident], int]: """ Get the last incidents and total amount of incidents. @@ -3381,6 +3389,7 @@ def get_last_incidents( return incidents, total_count + def get_incident_by_id( tenant_id: str, incident_id: str | UUID, diff --git a/keep/api/tasks/process_event_task.py b/keep/api/tasks/process_event_task.py index 40b2c50855..4040ac850e 100644 --- a/keep/api/tasks/process_event_task.py +++ b/keep/api/tasks/process_event_task.py @@ -23,6 +23,7 @@ get_alerts_by_fingerprint, get_all_presets_dtos, get_enrichment_with_session, + get_last_alert_hashes_by_fingerprints, get_session_sync, set_last_alert, ) @@ -328,10 +329,17 @@ def __handle_formatted_events( with tracer.start_as_current_span("process_event_deduplication"): # second, filter out any deduplicated events alert_deduplicator = AlertDeduplicator(tenant_id) - + deduplication_rules = alert_deduplicator.get_deduplication_rules( + tenant_id=tenant_id, provider_id=provider_id, provider_type=provider_type + ) + last_alerts_fingerprint_to_hash = get_last_alert_hashes_by_fingerprints( + tenant_id, [event.fingerprint for event in formatted_events] + ) for event in formatted_events: # apply_deduplication set alert_hash and isDuplicate on event - event = alert_deduplicator.apply_deduplication(event) + event = alert_deduplicator.apply_deduplication( + event, deduplication_rules, last_alerts_fingerprint_to_hash + ) # filter out the deduplicated events deduplicated_events = list( From 940fceb9fc9a0fe5cc3bb788d0e468c9db8f84d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 12:42:41 +0200 Subject: [PATCH 35/39] chore(deps): bump @sentry/node and @sentry/nextjs in /keep-ui (#3212) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tal Co-authored-by: Shahar Glazner --- keep-ui/package-lock.json | 1458 ++++++++++++++++--------------------- keep-ui/package.json | 2 +- 2 files changed, 642 insertions(+), 818 deletions(-) diff --git a/keep-ui/package-lock.json b/keep-ui/package-lock.json index 5b0c73d0fb..d421c18657 100644 --- a/keep-ui/package-lock.json +++ b/keep-ui/package-lock.json @@ -30,7 +30,7 @@ "@radix-ui/react-label": "^1.0.0", "@radix-ui/react-popover": "^1.1.2", "@radix-ui/react-tooltip": "^1.1.4", - "@sentry/nextjs": "^8.38.0", + "@sentry/nextjs": "^8.52.0", "@svgr/webpack": "^8.0.1", "@tanstack/react-table": "^8.11.0", "@tanstack/table-core": "^8.20.5", @@ -3794,6 +3794,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -4944,9 +4945,10 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.2.tgz", - "integrity": "sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==", + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.56.0.tgz", + "integrity": "sha512-Wr39+94UNNG3Ei9nv3pHd4AJ63gq5nSemMRpCd8fPwDL9rN3vK26lzxfH27mw16XzOSO+TpyQwBAMaLxaPWG0g==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0" }, @@ -4955,9 +4957,10 @@ } }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.27.0.tgz", - "integrity": "sha512-CdZ3qmHCwNhFAzjTgHqrDQ44Qxcpz43cVxZRhOs+Ns/79ug+Mr84Bkb626bkJLkA3+BLimA5YAEVRlJC6pFb7g==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "license": "Apache-2.0", "engines": { "node": ">=14" }, @@ -4966,11 +4969,12 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -4980,11 +4984,12 @@ } }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.2.tgz", - "integrity": "sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==", + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.56.0.tgz", + "integrity": "sha512-2KkGBKE+FPXU1F0zKww+stnlUxUTlBvLCiWdP63Z9sqXYeNI/ziNzsxAp4LAdUcTQmXjw1IWgvm5CAb/BHy99w==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.54.2", + "@opentelemetry/api-logs": "0.56.0", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", @@ -4999,12 +5004,13 @@ } }, "node_modules/@opentelemetry/instrumentation-amqplib": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.43.0.tgz", - "integrity": "sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.45.0.tgz", + "integrity": "sha512-SlKLsOS65NGMIBG1Lh/hLrMDU9WzTUF25apnV6ZmWZB1bBmUwan7qrwwrTu1cL5LzJWCXOdZPuTaxP7pC9qxnQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5015,12 +5021,13 @@ } }, "node_modules/@opentelemetry/instrumentation-connect": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.40.0.tgz", - "integrity": "sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.42.0.tgz", + "integrity": "sha512-bOoYHBmbnq/jFaLHmXJ55VQ6jrH5fHDMAPjFM0d3JvR0dvIqW7anEoNC33QqYGFYUfVJ50S0d/eoyF61ALqQuA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.36" }, @@ -5032,41 +5039,12 @@ } }, "node_modules/@opentelemetry/instrumentation-dataloader": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.12.0.tgz", - "integrity": "sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-dataloader/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-dataloader/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.15.0.tgz", + "integrity": "sha512-5fP35A2jUPk4SerVcduEkpbRAIoqa2PaP5rWumn01T1uSbavXNccAr3Xvx1N6xFtZxXpLJq4FYqGFnMgDWgVng==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" + "@opentelemetry/instrumentation": "^0.56.0" }, "engines": { "node": ">=14" @@ -5076,12 +5054,13 @@ } }, "node_modules/@opentelemetry/instrumentation-express": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.44.0.tgz", - "integrity": "sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.46.0.tgz", + "integrity": "sha512-BCEClDj/HPq/1xYRAlOr6z+OUnbp2eFp18DSrgyQz4IT9pkdYk8eWHnMi9oZSqlC6J5mQzkFmaW5RrKb1GLQhg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5092,12 +5071,13 @@ } }, "node_modules/@opentelemetry/instrumentation-fastify": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.41.0.tgz", - "integrity": "sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.43.0.tgz", + "integrity": "sha512-Lmdsg7tYiV+K3/NKVAQfnnLNGmakUOFdB0PhoTh2aXuSyCmyNnnDvhn2MsArAPTZ68wnD5Llh5HtmiuTkf+DyQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5108,12 +5088,13 @@ } }, "node_modules/@opentelemetry/instrumentation-fs": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.16.0.tgz", - "integrity": "sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.18.0.tgz", + "integrity": "sha512-kC40y6CEMONm8/MWwoF5GHWIC7gOdF+g3sgsjfwJaUkgD6bdWV+FgG0XApqSbTQndICKzw3RonVk8i7s6mHqhA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0" + "@opentelemetry/instrumentation": "^0.56.0" }, "engines": { "node": ">=14" @@ -5123,41 +5104,12 @@ } }, "node_modules/@opentelemetry/instrumentation-generic-pool": { - "version": "0.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz", - "integrity": "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-generic-pool/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-generic-pool/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.42.0.tgz", + "integrity": "sha512-J4QxqiQ1imtB9ogzsOnHra0g3dmmLAx4JCeoK3o0rFes1OirljNHnO8Hsj4s1jAir8WmWvnEEQO1y8yk6j2tog==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" + "@opentelemetry/instrumentation": "^0.56.0" }, "engines": { "node": ">=14" @@ -5167,11 +5119,12 @@ } }, "node_modules/@opentelemetry/instrumentation-graphql": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.44.0.tgz", - "integrity": "sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.46.0.tgz", + "integrity": "sha512-tplk0YWINSECcK89PGM7IVtOYenXyoOuhOQlN0X0YrcDUfMS4tZMKkVc0vyhNWYYrexnUHwNry2YNBNugSpjlQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0" + "@opentelemetry/instrumentation": "^0.56.0" }, "engines": { "node": ">=14" @@ -5181,12 +5134,13 @@ } }, "node_modules/@opentelemetry/instrumentation-hapi": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz", - "integrity": "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.44.0.tgz", + "integrity": "sha512-4HdNIMNXWK1O6nsaQOrACo83QWEVoyNODTdVDbUqtqXiv2peDfD0RAPhSQlSGWLPw3S4d9UoOmrV7s2HYj6T2A==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5196,44 +5150,16 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz", - "integrity": "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==", - "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/instrumentation": "0.53.0", - "@opentelemetry/semantic-conventions": "1.27.0", + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.56.0.tgz", + "integrity": "sha512-/bWHBUAq8VoATnH9iLk5w8CE9+gj+RgYSUphe7hry472n6fYl7+4PvuScoQMdmSUTprKq/gyr2kOWL6zrC7FkQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.29.0", + "@opentelemetry/instrumentation": "0.56.0", + "@opentelemetry/semantic-conventions": "1.28.0", + "forwarded-parse": "2.1.2", "semver": "^7.5.2" }, "engines": { @@ -5243,23 +5169,13 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", + "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -5268,31 +5184,13 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-ioredis": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz", - "integrity": "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.46.0.tgz", + "integrity": "sha512-sOdsq8oGi29V58p1AkefHvuB3l2ymP1IbxRIX3y4lZesQWKL8fLhBmy8xYjINSQ5gHzWul2yoz7pe7boxhZcqQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, @@ -5303,42 +5201,13 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-ioredis/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-ioredis/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-kafkajs": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.4.0.tgz", - "integrity": "sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.6.0.tgz", + "integrity": "sha512-MGQrzqEUAl0tacKJUFpuNHJesyTi51oUzSVizn7FdvJplkRIdS11FukyZBZJEscofSEdk7Ycmg+kNMLi5QHUFg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5349,11 +5218,12 @@ } }, "node_modules/@opentelemetry/instrumentation-knex": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.41.0.tgz", - "integrity": "sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.43.0.tgz", + "integrity": "sha512-mOp0TRQNFFSBj5am0WF67fRO7UZMUmsF3/7HSDja9g3H4pnj+4YNvWWyZn4+q0rGrPtywminAXe0rxtgaGYIqg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5364,12 +5234,13 @@ } }, "node_modules/@opentelemetry/instrumentation-koa": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz", - "integrity": "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.46.0.tgz", + "integrity": "sha512-RcWXMQdJQANnPUaXbHY5G0Fg6gmleZ/ZtZeSsekWPaZmQq12FGk0L1UwodIgs31OlYfviAZ4yTeytoSUkgo5vQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5379,72 +5250,13 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-lru-memoizer": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.40.0.tgz", - "integrity": "sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.43.0.tgz", + "integrity": "sha512-fZc+1eJUV+tFxaB3zkbupiA8SL3vhDUq89HbDNg1asweYrEb9OlHIB+Ot14ZiHUc1qCmmWmZHbPTwa56mVVwzg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" + "@opentelemetry/instrumentation": "^0.56.0" }, "engines": { "node": ">=14" @@ -5454,11 +5266,12 @@ } }, "node_modules/@opentelemetry/instrumentation-mongodb": { - "version": "0.48.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.48.0.tgz", - "integrity": "sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.50.0.tgz", + "integrity": "sha512-DtwJMjYFXFT5auAvv8aGrBj1h3ciA/dXQom11rxL7B1+Oy3FopSpanvwYxJ+z0qmBrQ1/iMuWELitYqU4LnlkQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5469,12 +5282,13 @@ } }, "node_modules/@opentelemetry/instrumentation-mongoose": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz", - "integrity": "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.45.0.tgz", + "integrity": "sha512-zHgNh+A01C5baI2mb5dAGyMC7DWmUpOfwpV8axtC0Hd5Uzqv+oqKgKbVDIVhOaDkPxjgVJwYF9YQZl2pw2qxIA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5484,42 +5298,13 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-mysql": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz", - "integrity": "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.44.0.tgz", + "integrity": "sha512-al7jbXvT/uT1KV8gdNDzaWd5/WXf+mrjrsF0/NtbnqLa0UUFGgQnoK3cyborgny7I+KxWhL8h7YPTf6Zq4nKsg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mysql": "2.15.26" }, @@ -5530,42 +5315,13 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-mysql/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-mysql2": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz", - "integrity": "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.44.0.tgz", + "integrity": "sha512-e9QY4AGsjGFwmfHd6kBa4yPaQZjAq2FuxMb0BbKlXCAjG+jwqw+sr9xWdJGR60jMsTq52hx3mAlE3dUJ9BipxQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1" }, @@ -5576,42 +5332,13 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-mysql2/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql2/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-nestjs-core": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz", - "integrity": "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.43.0.tgz", + "integrity": "sha512-NEo4RU7HTjiaXk3curqXUvCb9alRiFWxQY//+hvDXwWLlADX2vB6QEmVCeEZrKO+6I/tBrI4vNdAnbCY9ldZVg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", + "@opentelemetry/instrumentation": "^0.56.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { @@ -5621,43 +5348,15 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-nestjs-core/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-nestjs-core/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-pg": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz", - "integrity": "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==", + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.49.0.tgz", + "integrity": "sha512-3alvNNjPXVdAPdY1G7nGRVINbDxRK02+KAugDiEpzw0jFQfU8IzFkSWA4jyU4/GbMxKvHD+XIOEfSjpieSodKw==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/instrumentation": "^0.56.0", + "@opentelemetry/semantic-conventions": "1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.6" @@ -5669,158 +5368,82 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz", - "integrity": "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-tedious": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.15.0.tgz", - "integrity": "sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==", - "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/tedious": "^4.0.14" - }, + "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", "engines": { "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-undici": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz", - "integrity": "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==", + "node_modules/@opentelemetry/instrumentation-redis-4": { + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.45.0.tgz", + "integrity": "sha512-Sjgym1xn3mdxPRH5CNZtoz+bFd3E3NlGIu7FoYr4YrQouCc9PbnmoBcmSkEdDy5LYgzNildPgsjx9l0EKNjKTQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0" + "@opentelemetry/instrumentation": "^0.56.0", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": "^1.7.0" + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", + "node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.17.0.tgz", + "integrity": "sha512-yRBz2409an03uVd1Q2jWMt3SqwZqRFyKoWYYX3hBAtPDazJ4w5L+1VOij71TKwgZxZZNdDBXImTQjii+VeuzLg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api": "^1.0.0" + "@opentelemetry/instrumentation": "^0.56.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/tedious": "^4.0.14" }, "engines": { "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.9.0.tgz", + "integrity": "sha512-lxc3cpUZ28CqbrWcUHxGW/ObDpMOYbuxF/ZOzeFZq54P9uJ2Cpa8gcrC9F716mtuiMaekwk8D6n34vg/JtkkxQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.56.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "@opentelemetry/api": "^1.7.0" } }, "node_modules/@opentelemetry/redis-common": { "version": "0.36.2", "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", + "license": "Apache-2.0", "engines": { "node": ">=14" } }, "node_modules/@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -5830,13 +5453,14 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.27.0.tgz", - "integrity": "sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -5846,9 +5470,10 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -5857,6 +5482,7 @@ "version": "0.40.1", "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.1.0" }, @@ -6183,19 +5809,21 @@ } }, "node_modules/@prisma/instrumentation": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz", - "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.22.0.tgz", + "integrity": "sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.8", - "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0", + "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0", "@opentelemetry/sdk-trace-base": "^1.22" } }, "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", - "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", + "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -6204,12 +5832,13 @@ } }, "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", - "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", + "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@types/shimmer": "^1.0.2", + "@opentelemetry/api-logs": "0.53.0", + "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", @@ -7397,16 +7026,18 @@ "integrity": "sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==" }, "node_modules/@rollup/plugin-commonjs": { - "version": "26.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz", - "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==", + "version": "28.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.1.tgz", + "integrity": "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==", + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", - "glob": "^10.4.1", + "fdir": "^6.2.0", "is-reference": "1.2.1", - "magic-string": "^0.30.3" + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" }, "engines": { "node": ">=16.0.0 || 14 >= 14.17" @@ -7421,9 +7052,10 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -7494,92 +7126,89 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.38.0.tgz", - "integrity": "sha512-5QMVcssrAcmjKT0NdFYcX0b0wwZovGAZ9L2GajErXtHkBenjI2sgR2+5J7n+QZGuk2SC1qhGmT1O9i3p3UEwew==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.52.0.tgz", + "integrity": "sha512-ojFldpRpGrgacIQMbbMZeqLYetNJJ61n+Pz29FpggaIRrbkq84ocoy4FCy+9BuLo6ywgxtUFrjOXD9pPRcZtUA==", + "license": "MIT", "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.52.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.38.0.tgz", - "integrity": "sha512-AW5HCCAlc3T1jcSuNhbFVNO1CHyJ5g5tsGKEP4VKgu+D1Gg2kZ5S2eFatLBUP/BD5JYb1A7p6XPuzYp1XfMq0A==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.52.0.tgz", + "integrity": "sha512-r62Ufg4uGlvQsQ+nRSiq9y0ieVFRlZvUaoT/zMjmPuMg29O9rRAMdPJuiCpBH4++x8KJoJ9c2HBRizn6/3uc5Q==", + "license": "MIT", "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.52.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.38.0.tgz", - "integrity": "sha512-mQPShKnIab7oKwkwrRxP/D8fZYHSkDY+cvqORzgi+wAwgnunytJQjz9g6Ww2lJu98rHEkr5SH4V4rs6PZYZmnQ==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.52.0.tgz", + "integrity": "sha512-b4hQPni1G2tcV5XuAPSV4RTX3vqPXO9RfUXLuTBzOTNzBHDoj8nQv0yVvcysGy5tBAuVRo5ya5A+PG/iC6FA9A==", + "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry-internal/browser-utils": "8.52.0", + "@sentry/core": "8.52.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.38.0.tgz", - "integrity": "sha512-OxmlWzK9J8mRM+KxdSnQ5xuxq+p7TiBzTz70FT3HltxmeugvDkyp6803UcFqHOPHR35OYeVLOalym+FmvNn9kw==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.52.0.tgz", + "integrity": "sha512-4ES2uCUb9yEO1cbg15UBqiYU/syQYj5GviI+TvYvnPX3I8K2mK941ZRqfHh2HpFMhMxLgfX4jDqDGizNhXWdqg==", + "license": "MIT", "dependencies": { - "@sentry-internal/replay": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry-internal/replay": "8.52.0", + "@sentry/core": "8.52.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.6.tgz", - "integrity": "sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ==", + "version": "2.22.7", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.7.tgz", + "integrity": "sha512-aa7XKgZMVl6l04NY+3X7BP7yvQ/s8scn8KzQfTLrGRarziTlMGrsCOBQtCNWXOPEbtxAIHpZ9dsrAn5EJSivOQ==", + "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.38.0.tgz", - "integrity": "sha512-AZR+b0EteNZEGv6JSdBD22S9VhQ7nrljKsSnzxobBULf3BpwmhmCzTbDrqWszKDAIDYmL+yQJIR2glxbknneWQ==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.52.0.tgz", + "integrity": "sha512-7JpJ9zpInozBzy61eJf/6RPHoKUCFcoFuKd9rttkN1gyY9xkU1cQK+x1f0deiIHnF9ydftmDtXW+kGFI/+xqtw==", + "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.38.0", - "@sentry-internal/feedback": "8.38.0", - "@sentry-internal/replay": "8.38.0", - "@sentry-internal/replay-canvas": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry-internal/browser-utils": "8.52.0", + "@sentry-internal/feedback": "8.52.0", + "@sentry-internal/replay": "8.52.0", + "@sentry-internal/replay-canvas": "8.52.0", + "@sentry/core": "8.52.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.6.tgz", - "integrity": "sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg==", + "version": "2.22.7", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.7.tgz", + "integrity": "sha512-ouQh5sqcB8vsJ8yTTe0rf+iaUkwmeUlGNFi35IkCFUQlWJ22qS6OfvNjOqFI19e6eGUXks0c/2ieFC4+9wJ+1g==", + "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.6", - "@sentry/cli": "^2.36.1", + "@sentry/babel-plugin-component-annotate": "2.22.7", + "@sentry/cli": "2.39.1", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", @@ -7594,6 +7223,7 @@ "version": "9.3.5", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", @@ -7611,6 +7241,7 @@ "version": "0.30.8", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -7618,33 +7249,21 @@ "node": ">=12" } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@sentry/bundler-plugin-core/node_modules/minipass": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/@sentry/cli": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.38.2.tgz", - "integrity": "sha512-CR0oujpAnhegK2pBAv6ZReMqbFTuNJLDZLvoD1B+syrKZX+R+oxkgT2e1htsBbht+wGxAsluVWsIAydSws1GAA==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.39.1.tgz", + "integrity": "sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ==", "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", @@ -7659,19 +7278,20 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.38.2", - "@sentry/cli-linux-arm": "2.38.2", - "@sentry/cli-linux-arm64": "2.38.2", - "@sentry/cli-linux-i686": "2.38.2", - "@sentry/cli-linux-x64": "2.38.2", - "@sentry/cli-win32-i686": "2.38.2", - "@sentry/cli-win32-x64": "2.38.2" + "@sentry/cli-darwin": "2.39.1", + "@sentry/cli-linux-arm": "2.39.1", + "@sentry/cli-linux-arm64": "2.39.1", + "@sentry/cli-linux-i686": "2.39.1", + "@sentry/cli-linux-x64": "2.39.1", + "@sentry/cli-win32-i686": "2.39.1", + "@sentry/cli-win32-x64": "2.39.1" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.38.2.tgz", - "integrity": "sha512-21ywIcJCCFrCTyiF1o1PaT7rbelFC2fWmayKYgFElnQ55IzNYkcn8BYhbh/QknE0l1NBRaeWMXwTTdeoqETCCg==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.39.1.tgz", + "integrity": "sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ==", + "license": "BSD-3-Clause", "optional": true, "os": [ "darwin" @@ -7681,12 +7301,13 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.38.2.tgz", - "integrity": "sha512-+AiKDBQKIdQe4NhBiHSHGl0KR+b//HHTrnfK1SaTrOm9HtM4ELXAkjkRF3bmbpSzSQCS5WzcbIxxCJOeaUaO0A==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.39.1.tgz", + "integrity": "sha512-DkENbxyRxUrfLnJLXTA4s5UL/GoctU5Cm4ER1eB7XN7p9WsamFJd/yf2KpltkjEyiTuplv0yAbdjl1KX3vKmEQ==", "cpu": [ "arm" ], + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7697,12 +7318,13 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.38.2.tgz", - "integrity": "sha512-4Fp/jjQpNZj4Th+ZckMQvldAuuP0ZcyJ9tJCP1CCOn5poIKPYtY6zcbTP036R7Te14PS4ALOcDNX3VNKfpsifA==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.39.1.tgz", + "integrity": "sha512-5VbVJDatolDrWOgaffsEM7znjs0cR8bHt9Bq0mStM3tBolgAeSDHE89NgHggfZR+DJ2VWOy4vgCwkObrUD6NQw==", "cpu": [ "arm64" ], + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7713,13 +7335,14 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.38.2.tgz", - "integrity": "sha512-6zVJN10dHIn4R1v+fxuzlblzVBhIVwsaN/S7aBED6Vn1HhAyAcNG2tIzeCLGeDfieYjXlE2sCI82sZkQBCbAGw==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.39.1.tgz", + "integrity": "sha512-pXWVoKXCRrY7N8vc9H7mETiV9ZCz+zSnX65JQCzZxgYrayQPJTc+NPRnZTdYdk5RlAupXaFicBI2GwOCRqVRkg==", "cpu": [ "x86", "ia32" ], + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7730,12 +7353,13 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.38.2.tgz", - "integrity": "sha512-4UiLu9zdVtqPeltELR5MDGKcuqAdQY9xz3emISuA6bm+MXGbt2W1WgX+XY3GElwjZbmH8qpyLUEd34sw6sdcbQ==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.39.1.tgz", + "integrity": "sha512-IwayNZy+it7FWG4M9LayyUmG1a/8kT9+/IEm67sT5+7dkMIMcpmHDqL8rWcPojOXuTKaOBBjkVdNMBTXy0mXlA==", "cpu": [ "x64" ], + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -7746,13 +7370,14 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.38.2.tgz", - "integrity": "sha512-DYfSvd5qLPerLpIxj3Xu2rRe3CIlpGOOfGSNI6xvJ5D8j6hqbOHlCzvfC4oBWYVYGtxnwQLMeDGJ7o7RMYulig==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.39.1.tgz", + "integrity": "sha512-NglnNoqHSmE+Dz/wHeIVRnV2bLMx7tIn3IQ8vXGO5HWA2f8zYJGktbkLq1Lg23PaQmeZLPGlja3gBQfZYSG10Q==", "cpu": [ "x86", "ia32" ], + "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -7762,12 +7387,13 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.38.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.38.2.tgz", - "integrity": "sha512-W5UX58PKY1hNUHo9YJxWNhGvgvv2uOYHI27KchRiUvFYBIqlUUcIdPZDfyzetDfd8qBCxlAsFnkL2VJSNdpA9A==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.39.1.tgz", + "integrity": "sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw==", "cpu": [ "x64" ], + "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -7802,35 +7428,30 @@ } }, "node_modules/@sentry/core": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.38.0.tgz", - "integrity": "sha512-sGD+5TEHU9G7X7zpyaoJxpOtwjTjvOd1f/MKBrWW2vf9UbYK+GUJrOzLhMoSWp/pHSYgvObkJkDb/HwieQjvhQ==", - "dependencies": { - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" - }, + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.52.0.tgz", + "integrity": "sha512-2j3B7IKmseTKFm6AyheJ+RSgXqIsx+3blFSuxpkdvsEt60Lbzva2uDkCENfBDOclioo1kvHgsyuXLfWW4A+wwA==", + "license": "MIT", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/nextjs": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.38.0.tgz", - "integrity": "sha512-axKkeAXbpiO8hQjVtDSLyXYqCN9ptnNHxNmKlYuRTJtwv4hPZ31AIhurEN2y7dUBvXv3QTBv+9kvEkdN8qHvXA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.52.0.tgz", + "integrity": "sha512-0tPt780x0XpX0QdedXYuesJ0Caqf8zMk9zAAhA8H6NdA94eJ7ztHwCgX7tOWkzNCnAozcfiC/mMNKIrkmmV0Gg==", + "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@rollup/plugin-commonjs": "26.0.1", - "@sentry-internal/browser-utils": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/react": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", - "@sentry/vercel-edge": "8.38.0", - "@sentry/webpack-plugin": "2.22.6", + "@opentelemetry/semantic-conventions": "^1.28.0", + "@rollup/plugin-commonjs": "28.0.1", + "@sentry-internal/browser-utils": "8.52.0", + "@sentry/core": "8.52.0", + "@sentry/node": "8.52.0", + "@sentry/opentelemetry": "8.52.0", + "@sentry/react": "8.52.0", + "@sentry/vercel-edge": "8.52.0", + "@sentry/webpack-plugin": "2.22.7", "chalk": "3.0.0", "resolve": "1.22.8", "rollup": "3.29.5", @@ -7870,46 +7491,45 @@ } }, "node_modules/@sentry/node": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.38.0.tgz", - "integrity": "sha512-nwW0XqZFQseXYn0i6i6nKPkbjgHMBEFSF9TnK6mHHqJHHObHIZ6qu5CfvGKgxATia8JPIg9NN8XcyYOnQMi07w==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.52.0.tgz", + "integrity": "sha512-k+GuWbLDcqIS766zF+TvVRnfbshNy6XKRd+HRNIEaeYa9Tm4LH/ZgCxz39AhFAQGWlZUHm/G2KkCt3AvgswJEg==", + "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.25.1", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/instrumentation-amqplib": "^0.43.0", - "@opentelemetry/instrumentation-connect": "0.40.0", - "@opentelemetry/instrumentation-dataloader": "0.12.0", - "@opentelemetry/instrumentation-express": "0.44.0", - "@opentelemetry/instrumentation-fastify": "0.41.0", - "@opentelemetry/instrumentation-fs": "0.16.0", - "@opentelemetry/instrumentation-generic-pool": "0.39.0", - "@opentelemetry/instrumentation-graphql": "0.44.0", - "@opentelemetry/instrumentation-hapi": "0.41.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/instrumentation-ioredis": "0.43.0", - "@opentelemetry/instrumentation-kafkajs": "0.4.0", - "@opentelemetry/instrumentation-knex": "0.41.0", - "@opentelemetry/instrumentation-koa": "0.43.0", - "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", - "@opentelemetry/instrumentation-mongodb": "0.48.0", - "@opentelemetry/instrumentation-mongoose": "0.42.0", - "@opentelemetry/instrumentation-mysql": "0.41.0", - "@opentelemetry/instrumentation-mysql2": "0.41.0", - "@opentelemetry/instrumentation-nestjs-core": "0.40.0", - "@opentelemetry/instrumentation-pg": "0.44.0", - "@opentelemetry/instrumentation-redis-4": "0.42.0", - "@opentelemetry/instrumentation-tedious": "0.15.0", - "@opentelemetry/instrumentation-undici": "0.6.0", - "@opentelemetry/resources": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@opentelemetry/context-async-hooks": "^1.29.0", + "@opentelemetry/core": "^1.29.0", + "@opentelemetry/instrumentation": "^0.56.0", + "@opentelemetry/instrumentation-amqplib": "^0.45.0", + "@opentelemetry/instrumentation-connect": "0.42.0", + "@opentelemetry/instrumentation-dataloader": "0.15.0", + "@opentelemetry/instrumentation-express": "0.46.0", + "@opentelemetry/instrumentation-fastify": "0.43.0", + "@opentelemetry/instrumentation-fs": "0.18.0", + "@opentelemetry/instrumentation-generic-pool": "0.42.0", + "@opentelemetry/instrumentation-graphql": "0.46.0", + "@opentelemetry/instrumentation-hapi": "0.44.0", + "@opentelemetry/instrumentation-http": "0.56.0", + "@opentelemetry/instrumentation-ioredis": "0.46.0", + "@opentelemetry/instrumentation-kafkajs": "0.6.0", + "@opentelemetry/instrumentation-knex": "0.43.0", + "@opentelemetry/instrumentation-koa": "0.46.0", + "@opentelemetry/instrumentation-lru-memoizer": "0.43.0", + "@opentelemetry/instrumentation-mongodb": "0.50.0", + "@opentelemetry/instrumentation-mongoose": "0.45.0", + "@opentelemetry/instrumentation-mysql": "0.44.0", + "@opentelemetry/instrumentation-mysql2": "0.44.0", + "@opentelemetry/instrumentation-nestjs-core": "0.43.0", + "@opentelemetry/instrumentation-pg": "0.49.0", + "@opentelemetry/instrumentation-redis-4": "0.45.0", + "@opentelemetry/instrumentation-tedious": "0.17.0", + "@opentelemetry/instrumentation-undici": "0.9.0", + "@opentelemetry/resources": "^1.29.0", + "@opentelemetry/sdk-trace-base": "^1.29.0", + "@opentelemetry/semantic-conventions": "^1.28.0", + "@prisma/instrumentation": "5.22.0", + "@sentry/core": "8.52.0", + "@sentry/opentelemetry": "8.52.0", "import-in-the-middle": "^1.11.2" }, "engines": { @@ -7917,34 +7537,32 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.38.0.tgz", - "integrity": "sha512-AfjmIf/v7+x2WplhkX66LyGKvrzzPeSgff9uJ0cFCC2s0yd1qA2VPuIwEyr5i/FOJOP5bvFr8tu/hz3LA4+F5Q==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.52.0.tgz", + "integrity": "sha512-NbGPsCZmXQW/B2wlgIjeIn9bCsNKhZGenB0DLK8ZIS/eDOI0JRBjHWMpLS9H9Q0xqgFBjyp+Gwyu3nEZcN4lXw==", + "license": "MIT", "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.52.0" }, "engines": { "node": ">=14.18" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0" + "@opentelemetry/core": "^1.29.0", + "@opentelemetry/instrumentation": "^0.56.0", + "@opentelemetry/sdk-trace-base": "^1.29.0", + "@opentelemetry/semantic-conventions": "^1.28.0" } }, "node_modules/@sentry/react": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.38.0.tgz", - "integrity": "sha512-5396tewO00wbJFHUkmU+ikmp4A+wuBpStNc7UDyAm642jfbPajj51+GWld/ZYNFiQaZ/8I9tvvpHqVLnUh21gg==", - "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.52.0.tgz", + "integrity": "sha512-7tbRuTFOgKLM2fM5/TjrfDWbkqOOsxkb2QldnAUHTAcArIx77DpsurAgEx5L9lqn+UAhuw1X2IGbzk9fVV/ZDQ==", + "license": "MIT", + "dependencies": { + "@sentry/browser": "8.52.0", + "@sentry/core": "8.52.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -7954,45 +7572,26 @@ "react": "^16.14.0 || 17.x || 18.x || 19.x" } }, - "node_modules/@sentry/types": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.38.0.tgz", - "integrity": "sha512-fP5H9ZX01W4Z/EYctk3mkSHi7d06cLcX2/UWqwdWbyPWI+pL2QpUPICeO/C+8SnmYx//wFj3qWDhyPCh1PdFAA==", - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.38.0.tgz", - "integrity": "sha512-3X7MgIKIx+2q5Al7QkhaRB4wV6DvzYsaeIwdqKUzGLuRjXmNgJrLoU87TAwQRmZ6Wr3IoEpThZZMNrzYPXxArw==", - "dependencies": { - "@sentry/types": "8.38.0" - }, - "engines": { - "node": ">=14.18" - } - }, "node_modules/@sentry/vercel-edge": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.38.0.tgz", - "integrity": "sha512-JckfcK/bZZj2CGOcHhgi4lcHAWpMqOnx8g9YcIWc8Bj8MfpavXciYBU+L0AnYiXwnW1v3E4M0pMrb+jccvGtEw==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.52.0.tgz", + "integrity": "sha512-6YiAUp4zJeMhVr1hx06c4Ygjzu8b9Kfv/GkmYA0sYPP+wa9shSKdqfD3ROQdWSsI7RtY4qDd22H9/acxchLmlA==", + "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.52.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/webpack-plugin": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.6.tgz", - "integrity": "sha512-BiLhAzQYAz/9kCXKj2LeUKWf/9GBVn2dD0DeYK89s+sjDEaxjbcLBBiLlLrzT7eC9QVj2tUZRKOi6puCfc8ysw==", + "version": "2.22.7", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.7.tgz", + "integrity": "sha512-j5h5LZHWDlm/FQCCmEghQ9FzYXwfZdlOf3FE/X6rK6lrtx0JCAkq+uhMSasoyP4XYKL4P4vRS6WFSos4jxf/UA==", + "license": "MIT", "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", + "@sentry/bundler-plugin-core": "2.22.7", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -8011,6 +7610,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -8450,6 +8050,7 @@ "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8562,6 +8163,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", "peer": true, "dependencies": { "@types/estree": "*", @@ -8572,6 +8174,7 @@ "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", "peer": true, "dependencies": { "@types/eslint": "*", @@ -8683,6 +8286,7 @@ "version": "2.15.26", "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8718,6 +8322,7 @@ "version": "8.6.1", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "license": "MIT", "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -8728,6 +8333,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", + "license": "MIT", "dependencies": { "@types/pg": "*" } @@ -8852,7 +8458,8 @@ "node_modules/@types/shimmer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", + "license": "MIT" }, "node_modules/@types/stylis": { "version": "4.2.5", @@ -8863,6 +8470,7 @@ "version": "4.0.14", "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9202,6 +8810,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", @@ -9212,24 +8821,28 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", @@ -9241,12 +8854,14 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -9259,6 +8874,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" @@ -9268,6 +8884,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", "peer": true, "dependencies": { "@xtuc/long": "4.2.2" @@ -9277,12 +8894,14 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -9299,6 +8918,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -9312,6 +8932,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -9324,6 +8945,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -9338,6 +8960,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -9397,12 +9020,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause", "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0", "peer": true }, "node_modules/@xyflow/react": { @@ -9498,6 +9123,7 @@ "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -9560,10 +9186,53 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peer": true, "peerDependencies": { "ajv": "^6.9.1" @@ -10264,6 +9933,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT", "peer": true }, "node_modules/busboy": { @@ -10477,6 +10147,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=6.0" @@ -10485,7 +10156,8 @@ "node_modules/cjs-module-lexer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==" + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "license": "MIT" }, "node_modules/class-transformer": { "version": "0.5.1", @@ -10881,7 +10553,8 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" }, "node_modules/compute-scroll-into-view": { "version": "1.0.20", @@ -11729,9 +11402,10 @@ } }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -11957,9 +11631,10 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "license": "MIT", "peer": true }, "node_modules/es-object-atoms": { @@ -12725,7 +12400,8 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", @@ -12938,6 +12614,23 @@ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -12958,6 +12651,20 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fflate": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", @@ -13154,6 +12861,12 @@ "node": ">= 0.6" } }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", + "license": "MIT" + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -13381,6 +13094,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause", "peer": true }, "node_modules/glob/node_modules/minimatch": { @@ -14107,9 +13821,10 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", - "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", + "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", + "license": "Apache-2.0", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -14547,6 +14262,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -14724,6 +14440,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*", @@ -14738,6 +14455,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -15200,6 +14918,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" @@ -15396,9 +15115,10 @@ } }, "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -15977,6 +15697,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT", "peer": true }, "node_modules/merge2": { @@ -16680,6 +16401,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -16744,7 +16480,8 @@ "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "license": "MIT" }, "node_modules/monaco-editor": { "version": "0.52.2", @@ -16832,6 +16569,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT", "peer": true }, "node_modules/next": { @@ -17572,6 +17310,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", "engines": { "node": ">=4.0.0" } @@ -17579,12 +17318,14 @@ "node_modules/pg-protocol": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", + "license": "MIT" }, "node_modules/pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -17605,6 +17346,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -17845,6 +17587,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -17853,6 +17596,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -17861,6 +17605,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -17869,6 +17614,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", "dependencies": { "xtend": "^4.0.0" }, @@ -18216,6 +17962,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -18377,6 +18124,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "peer": true, "dependencies": { "safe-buffer": "^5.1.0" @@ -19524,9 +19272,10 @@ } }, "node_modules/require-in-the-middle": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", - "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.0.tgz", + "integrity": "sha512-/Tvpny/RVVicqlYTKwt/GtpZRsPG1CmJNhxVKGz+Sy/4MONfXCVNK69MFgGKdUt0/324q3ClI2dICcPgISrC8g==", + "license": "MIT", "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", @@ -19652,6 +19401,7 @@ "version": "3.29.5", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -19821,6 +19571,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -19907,6 +19658,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -20023,7 +19775,8 @@ "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "license": "BSD-2-Clause" }, "node_modules/side-channel": { "version": "1.0.6", @@ -20225,6 +19978,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "peer": true, "dependencies": { "buffer-from": "^1.0.0", @@ -20235,6 +19989,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.10.0" @@ -20876,9 +20631,10 @@ } }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -20894,16 +20650,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "license": "MIT", "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -20927,10 +20684,68 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT", "peer": true }, "node_modules/text-decoder": { @@ -21453,6 +21268,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", "integrity": "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==", + "license": "MIT", "dependencies": { "acorn": "^8.8.1", "chokidar": "^3.5.3", @@ -21464,6 +21280,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -21487,6 +21304,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -21815,6 +21633,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "license": "MIT", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -21855,16 +21674,17 @@ } }, "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "license": "MIT", "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", @@ -21961,6 +21781,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -21968,12 +21789,14 @@ "node_modules/webpack-virtual-modules": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", - "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==" + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", + "license": "MIT" }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { "esrecurse": "^4.3.0", @@ -21987,6 +21810,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=4.0" diff --git a/keep-ui/package.json b/keep-ui/package.json index e008ec4b41..33fe67e5ef 100644 --- a/keep-ui/package.json +++ b/keep-ui/package.json @@ -31,7 +31,7 @@ "@radix-ui/react-label": "^1.0.0", "@radix-ui/react-popover": "^1.1.2", "@radix-ui/react-tooltip": "^1.1.4", - "@sentry/nextjs": "^8.38.0", + "@sentry/nextjs": "^8.52.0", "@svgr/webpack": "^8.0.1", "@tanstack/react-table": "^8.11.0", "@tanstack/table-core": "^8.20.5", From 8fc68ca45846d138000d78c690dc59554027ae10 Mon Sep 17 00:00:00 2001 From: Vladimir Filonov Date: Thu, 30 Jan 2025 15:03:15 +0400 Subject: [PATCH 36/39] feat: Provider Health functionality (#3169) --- keep-ui/app/(health)/health/modal.tsx | 164 ++++++++++++ keep-ui/app/(health)/health/page.tsx | 62 +++++ keep-ui/app/(health)/layout.tsx | 72 +++++ keep-ui/app/(keep)/ai/model.ts | 2 +- .../alerts/alert-create-incident-ai-modal.tsx | 2 +- .../(keep)/alerts/alert-table-facet-value.tsx | 2 +- .../(keep)/alerts/alerts-rules-builder.tsx | 4 +- .../DeduplicationPlaceholder.tsx | 7 +- .../deduplication/DeduplicationTable.tsx | 12 +- .../incidents/[id]/chat/incident-chat.tsx | 9 +- keep-ui/app/(keep)/incidents/page.tsx | 12 +- keep-ui/app/(keep)/providers/page.client.tsx | 7 +- .../app/(keep)/providers/provider-form.tsx | 248 ++++++++++-------- .../app/(keep)/providers/providers-tiles.tsx | 33 ++- keep-ui/app/(keep)/providers/providers.tsx | 2 + .../app/(keep)/settings/settings.client.tsx | 28 +- .../(keep)/topology/ui/map/service-node.tsx | 4 +- .../app/(keep)/workflows/workflow-tile.tsx | 3 +- keep-ui/app/api/healthcheck/route.ts | 10 +- keep-ui/app/frigade-provider.tsx | 6 +- keep-ui/middleware.ts | 2 +- keep-ui/shared/api/ApiClient.ts | 9 +- keep-ui/shared/lib/hooks/useApi.tsx | 9 +- keep-ui/types/auth.d.ts | 4 + keep-ui/utils/hooks/useProviders.ts | 14 + keep/api/models/provider.py | 1 + keep/api/routes/providers.py | 53 +++- keep/providers/base/base_provider.py | 91 ++++++- .../datadog_provider/datadog_provider.py | 5 +- keep/providers/providers_factory.py | 1 + keep/providers/providers_service.py | 51 ++++ 31 files changed, 761 insertions(+), 168 deletions(-) create mode 100644 keep-ui/app/(health)/health/modal.tsx create mode 100644 keep-ui/app/(health)/health/page.tsx create mode 100644 keep-ui/app/(health)/layout.tsx diff --git a/keep-ui/app/(health)/health/modal.tsx b/keep-ui/app/(health)/health/modal.tsx new file mode 100644 index 0000000000..0a13282e8f --- /dev/null +++ b/keep-ui/app/(health)/health/modal.tsx @@ -0,0 +1,164 @@ +import React from "react"; +import Modal from "@/components/ui/Modal"; +import { useApi } from "@/shared/lib/hooks/useApi"; +import { + Badge, + BarChart, + Button, + Card, + DonutChart, + Subtitle, + Title, +} from "@tremor/react"; +import { CheckCircle2Icon } from "lucide-react"; + +interface ProviderHealthResultsModalProps { + handleClose: () => void; + isOpen: boolean; + healthResults: any; +} + +const ProviderHealthResultsModal = ({ + handleClose, + isOpen, + healthResults, +}: ProviderHealthResultsModalProps) => { + const api = useApi(); + + const handleModalClose = () => { + handleClose(); + }; + + return ( + +
+
+ + Spammy Alerts + {healthResults?.spammy?.length ? ( + <> + + Sorry to say, but looks like your alerts are spammy + + ) : ( + <> +
+ +
+ Everything is ok + + )} +
+ + Rules Quality + {healthResults?.rules?.unused ? ( + <> + + + {healthResults?.rules.unused} of your{" "} + {healthResults.rules.used + healthResults.rules.unused} alert + rules are not in use + + + ) : ( + <> +
+ +
+ Everything is ok + + )} +
+ + Actionable +
+ +
+ Everything is ok +
+ + + Topology coverage + {healthResults?.topology?.uncovered.length ? ( + <> + + + Not of your services are covered. Alerts are missing for: + {healthResults?.topology?.uncovered.map((service: any) => { + return ( + + {service.display_name + ? service.display_name + : service.service} + + ); + })} + + + ) : ( + <> +
+ +
+ Everything is ok + + )} +
+
+ + + Want to improve your observability? + + +
+
+ ); +}; + +export default ProviderHealthResultsModal; diff --git a/keep-ui/app/(health)/health/page.tsx b/keep-ui/app/(health)/health/page.tsx new file mode 100644 index 0000000000..61fca4ef25 --- /dev/null +++ b/keep-ui/app/(health)/health/page.tsx @@ -0,0 +1,62 @@ +"use client"; + +import ProvidersTiles from "@/app/(keep)/providers/providers-tiles"; +import React, { useEffect, useState } from "react"; +import { defaultProvider, Provider } from "@/app/(keep)/providers/providers"; +import { useProvidersWithHealthCheck } from "@/utils/hooks/useProviders"; +import Loading from "@/app/(keep)/loading"; + +const useFetchProviders = () => { + const [providers, setProviders] = useState([]); + const { data, error, mutate } = useProvidersWithHealthCheck(); + + if (error) { + throw error; + } + + const isLocalhost: boolean = true; + + useEffect(() => { + if (data) { + const fetchedProviders = data.providers + .filter((provider: Provider) => { + return provider.health; + }) + .map((provider) => ({ + ...defaultProvider, + ...provider, + id: provider.type, + installed: provider.installed ?? false, + health: provider.health, + })); + + setProviders(fetchedProviders); + } + }, [data]); + + return { + providers, + error, + isLocalhost, + mutate, + }; +}; + +export default function ProviderHealthPage () { + const { providers, isLocalhost, mutate } = useFetchProviders(); + + if (!providers || providers.length <= 0) { + return ; + } + + return ( + <> + + + ); +} diff --git a/keep-ui/app/(health)/layout.tsx b/keep-ui/app/(health)/layout.tsx new file mode 100644 index 0000000000..ec96858d34 --- /dev/null +++ b/keep-ui/app/(health)/layout.tsx @@ -0,0 +1,72 @@ +import { ReactNode } from "react"; +import { NextAuthProvider } from "../auth-provider"; +import { Mulish } from "next/font/google"; +import { ToastContainer } from "react-toastify"; +import Navbar from "components/navbar/Navbar"; +import { TopologyPollingContextProvider } from "@/app/(keep)/topology/model/TopologyPollingContext"; +import { FrigadeProvider } from "../frigade-provider"; +import { getConfig } from "@/shared/lib/server/getConfig"; +import { ConfigProvider } from "../config-provider"; +import { PHProvider } from "../posthog-provider"; +import dynamic from "next/dynamic"; +import ReadOnlyBanner from "../read-only-banner"; +import { auth } from "@/auth"; +import { ThemeScript, WatchUpdateTheme } from "@/shared/ui"; +import "@/app/globals.css"; +import "react-toastify/dist/ReactToastify.css"; + +const PostHogPageView = dynamic(() => import("@/shared/ui/PostHogPageView"), { + ssr: false, +}); + +// If loading a variable font, you don't need to specify the font weight +const mulish = Mulish({ + subsets: ["latin"], + display: "swap", +}); + +type RootLayoutProps = { + children: ReactNode; +}; + +export default async function RootLayout({ children }: RootLayoutProps) { + const config = getConfig(); + const session = await auth(); + + return ( + + + {/* ThemeScript must be the first thing to avoid flickering */} + + + + + + {/* @ts-ignore-error Server Component */} + + {/* https://discord.com/channels/752553802359505017/1068089513253019688/1117731746922893333 */} +
+ {/* Add the banner here, before the navbar */} + {config.READ_ONLY && } +
{children}
+ +
+
+
+
+
+ + + {/** footer */} + {process.env.GIT_COMMIT_HASH && + process.env.SHOW_BUILD_INFO !== "false" && ( +
+ Build: {process.env.GIT_COMMIT_HASH} +
+ Version: {process.env.KEEP_VERSION} +
+ )} + + + ); +} diff --git a/keep-ui/app/(keep)/ai/model.ts b/keep-ui/app/(keep)/ai/model.ts index 1fe4ed3f96..d1db8eee51 100644 --- a/keep-ui/app/(keep)/ai/model.ts +++ b/keep-ui/app/(keep)/ai/model.ts @@ -6,7 +6,7 @@ export interface AIConfig { algorithm: { name: string; description: string; - } + }; } export interface AIStats { diff --git a/keep-ui/app/(keep)/alerts/alert-create-incident-ai-modal.tsx b/keep-ui/app/(keep)/alerts/alert-create-incident-ai-modal.tsx index d22542b565..2cb28b41bd 100644 --- a/keep-ui/app/(keep)/alerts/alert-create-incident-ai-modal.tsx +++ b/keep-ui/app/(keep)/alerts/alert-create-incident-ai-modal.tsx @@ -53,7 +53,7 @@ const CreateIncidentWithAIModal = ({ 20, 0, { id: "creation_time", desc: true }, - '', + "", {} ); diff --git a/keep-ui/app/(keep)/alerts/alert-table-facet-value.tsx b/keep-ui/app/(keep)/alerts/alert-table-facet-value.tsx index b6587c52a5..fed735f44d 100644 --- a/keep-ui/app/(keep)/alerts/alert-table-facet-value.tsx +++ b/keep-ui/app/(keep)/alerts/alert-table-facet-value.tsx @@ -31,7 +31,7 @@ export const FacetValue: React.FC = ({ 100, undefined, undefined, - '', + "", { revalidateOnFocus: false, } diff --git a/keep-ui/app/(keep)/alerts/alerts-rules-builder.tsx b/keep-ui/app/(keep)/alerts/alerts-rules-builder.tsx index 48f229e67b..bffb0c7417 100644 --- a/keep-ui/app/(keep)/alerts/alerts-rules-builder.tsx +++ b/keep-ui/app/(keep)/alerts/alerts-rules-builder.tsx @@ -504,8 +504,8 @@ export const AlertsRulesBuilder = ({ operators: getOperators(id), })) : customFields - ? customFields - : []; + ? customFields + : []; const onImportSQL = () => { setImportSQLOpen(true); diff --git a/keep-ui/app/(keep)/deduplication/DeduplicationPlaceholder.tsx b/keep-ui/app/(keep)/deduplication/DeduplicationPlaceholder.tsx index 902ade1f32..468262f981 100644 --- a/keep-ui/app/(keep)/deduplication/DeduplicationPlaceholder.tsx +++ b/keep-ui/app/(keep)/deduplication/DeduplicationPlaceholder.tsx @@ -15,7 +15,12 @@ export const DeduplicationPlaceholder = () => {
No Deduplications Yet - Alert deduplication is the first layer of denoising. It groups similar alerts from one source.
To connect alerts across sources into incidents, check Correlations + Alert deduplication is the first layer of denoising. It groups + similar alerts from one source. +
To connect alerts across sources into incidents, check{" "} + + Correlations +
This page will become active once the first alerts are registered. diff --git a/keep-ui/app/(keep)/deduplication/DeduplicationTable.tsx b/keep-ui/app/(keep)/deduplication/DeduplicationTable.tsx index 2332b9d30e..7643a26bd7 100644 --- a/keep-ui/app/(keep)/deduplication/DeduplicationTable.tsx +++ b/keep-ui/app/(keep)/deduplication/DeduplicationTable.tsx @@ -120,7 +120,9 @@ export const DeduplicationTable: React.FC = ({ "Represents the percentage of alerts successfully deduplicated. Higher values indicate better deduplication efficiency, meaning fewer redundant alerts.", }; - function resolveDeleteButtonTooltip(deduplicationRule: DeduplicationRule): string { + function resolveDeleteButtonTooltip( + deduplicationRule: DeduplicationRule + ): string { if (deduplicationRule.default) { return "Cannot delete default rule"; } @@ -129,7 +131,7 @@ export const DeduplicationTable: React.FC = ({ return "Cannot delete provisioned rule."; } - return "Delete Rule" + return "Delete Rule"; } const DEDUPLICATION_TABLE_COLS = useMemo( @@ -276,10 +278,10 @@ export const DeduplicationTable: React.FC = ({ size="xs" variant="secondary" icon={TrashIcon} - tooltip={ - resolveDeleteButtonTooltip(info.row.original) + tooltip={resolveDeleteButtonTooltip(info.row.original)} + disabled={ + info.row.original.default || info.row.original.is_provisioned } - disabled={info.row.original.default || info.row.original.is_provisioned} onClick={(e) => handleDeleteRule(info.row.original, e)} />
diff --git a/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx b/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx index 4543f51164..290db5dcb5 100644 --- a/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx +++ b/keep-ui/app/(keep)/incidents/[id]/chat/incident-chat.tsx @@ -138,12 +138,9 @@ export function IncidentChat({ useIncidentActions(); const providersWithGetTrace = useMemo( () => - providers?.installed_providers - .filter( - (provider) => - provider.methods?.some((method) => method.func_name === "get_trace") - ) - .map((provider) => provider.id), + providers?.installed_providers.filter((provider) => + provider.methods?.some((method) => method.func_name === "get_trace") + ).map((provider) => provider.id), [providers] ); diff --git a/keep-ui/app/(keep)/incidents/page.tsx b/keep-ui/app/(keep)/incidents/page.tsx index 2b0cb7d1b7..9b99032cf3 100644 --- a/keep-ui/app/(keep)/incidents/page.tsx +++ b/keep-ui/app/(keep)/incidents/page.tsx @@ -2,7 +2,7 @@ import { IncidentList } from "@/features/incident-list"; import { getIncidents, GetIncidentsParams } from "@/entities/incidents/api"; import { PaginatedIncidentsDto } from "@/entities/incidents/model"; import { createServerApiClient } from "@/shared/api/server"; -import {DefaultIncidentFilters} from "@/entities/incidents/model/models"; +import { DefaultIncidentFilters } from "@/entities/incidents/model/models"; import { getInitialFacets, InitialFacetsData } from "@/features/filter/api"; const defaultIncidentsParams: GetIncidentsParams = { @@ -24,15 +24,19 @@ export default async function Page() { const tasks = [ getIncidents(api, defaultIncidentsParams, ), getInitialFacets(api, "incidents"), - ] + ]; const [_incidents, _facetsData] = await Promise.all(tasks); incidents = _incidents as PaginatedIncidentsDto; facetsData = _facetsData as InitialFacetsData; - } catch (error) { console.log(error); } - return ; + return ( + + ); } export const metadata = { diff --git a/keep-ui/app/(keep)/providers/page.client.tsx b/keep-ui/app/(keep)/providers/page.client.tsx index f2c4372b19..a599fc4c8e 100644 --- a/keep-ui/app/(keep)/providers/page.client.tsx +++ b/keep-ui/app/(keep)/providers/page.client.tsx @@ -15,7 +15,7 @@ export const useFetchProviders = () => { const [installedProviders, setInstalledProviders] = useState([]); const [linkedProviders, setLinkedProviders] = useState([]); // Added state for linkedProviders const { data: config } = useConfig(); - const { data, error } = useProviders(); + const { data, error, mutate } = useProviders(); if (error) { throw error; @@ -100,6 +100,7 @@ export const useFetchProviders = () => { setInstalledProviders, error, isLocalhost, + mutate, }; }; @@ -114,6 +115,7 @@ export default function ProvidersPage({ linkedProviders, setInstalledProviders, isLocalhost, + mutate, } = useFetchProviders(); const { @@ -173,6 +175,7 @@ export default function ProvidersPage({ )} {linkedProviders?.length > 0 && ( @@ -180,6 +183,7 @@ export default function ProvidersPage({ providers={linkedProviders} linkedProvidersMode={true} isLocalhost={isLocalhost} + mutate={mutate} /> )} ); diff --git a/keep-ui/app/(keep)/providers/provider-form.tsx b/keep-ui/app/(keep)/providers/provider-form.tsx index c55d63291f..8218dd1c10 100644 --- a/keep-ui/app/(keep)/providers/provider-form.tsx +++ b/keep-ui/app/(keep)/providers/provider-form.tsx @@ -67,24 +67,47 @@ import { import ProviderLogs from "./provider-logs"; import { DynamicImageProviderIcon } from "@/components/ui"; +type HealthResults = { + spammy: any[]; + rules: { + total: number; + used: number; + unused: number; + }; + topology: { + covered: any[]; + uncovered: any[]; + }; +}; + type ProviderFormProps = { provider: Provider; - onConnectChange?: (isConnecting: boolean, isConnected: boolean) => void; + onConnectChange?: ( + isConnecting: boolean, + isConnected: boolean, + healthResults: HealthResults | null + ) => void; closeModal: () => void; isProviderNameDisabled?: boolean; installedProvidersMode: boolean; isLocalhost?: boolean; + isHealthCheck?: boolean; + mutate: () => void; }; -function getInitialFormValues(provider: Provider) { +function getInitialFormValues(provider: Provider, isHealthCheck?: boolean) { const initialValues: ProviderFormData = { provider_id: provider.id, - install_webhook: provider.can_setup_webhook ?? false, + install_webhook: !isHealthCheck + ? (provider.can_setup_webhook ?? false) + : false, pulling_enabled: provider.pulling_enabled, }; Object.assign(initialValues, { - provider_name: provider.details?.name, + provider_name: + provider.details?.name || + (isHealthCheck ? `${provider.id} health check` : undefined), ...provider.details?.authentication, }); @@ -113,12 +136,13 @@ const ProviderForm = ({ isProviderNameDisabled, installedProvidersMode, isLocalhost, + isHealthCheck, + mutate }: ProviderFormProps) => { console.log("Loading the ProviderForm component"); - const { mutate } = useProviders(); const searchParams = useSearchParams(); const [formValues, setFormValues] = useState(() => - getInitialFormValues(provider) + getInitialFormValues(provider, isHealthCheck) ); const [formErrors, setFormErrors] = useState(null); const [inputErrors, setInputErrors] = useState({}); @@ -282,6 +306,7 @@ const ProviderForm = ({ function validate(data?: ProviderFormData) { let schema = zodSchema; + console.log(222, data) if (data) { schema = zodSchema.pick( Object.fromEntries(Object.keys(data).map((field) => [field, true])) @@ -399,13 +424,14 @@ const ProviderForm = ({ async function handleConnectClick() { if (!validate()) return; setIsLoading(true); - onConnectChange?.(true, false); - submit(`/providers/install`) + onConnectChange?.(true, false, null); + submit(isHealthCheck ? `/providers/healthcheck` : `/providers/install`) .then(async (data) => { console.log("Connect Result:", data); setIsLoading(false); - onConnectChange?.(false, true); + onConnectChange?.(false, true, data); if ( + !isHealthCheck && formValues.install_webhook && provider.can_setup_webhook && !isLocalhost @@ -418,7 +444,7 @@ const ProviderForm = ({ .catch((error) => { handleSubmitError(error); setIsLoading(false); - onConnectChange?.(false, false); + onConnectChange?.(false, false, null); }); } @@ -452,7 +478,7 @@ const ProviderForm = ({ config={providerNameFieldConfig} value={(formValues["provider_name"] ?? "").toString()} error={inputErrors["provider_name"]} - disabled={isProviderNameDisabled ?? false} + disabled={(isProviderNameDisabled || isHealthCheck) ?? false} title={ isProviderNameDisabled ? "This field is disabled because it is pre-filled from the workflow." @@ -516,37 +542,91 @@ const ProviderForm = ({ )}
- {provider.can_setup_webhook && !installedProvidersMode && ( -
-
- -
+ )} +
+ + {!isHealthCheck && + provider.can_setup_webhook && + installedProvidersMode && ( + <> +
- {isLocalhost && ( - - - - Webhook installation is disabled because Keep is running - without an external URL. -
-
- Click to learn more -
-
-
- )} -
+ + )} - - - {provider.can_setup_webhook && installedProvidersMode && ( - <> -
- - -
- - - )} {provider.supports_webhook && ( @@ -813,7 +843,7 @@ const ProviderForm = ({ onClick={handleConnectClick} color="orange" > - Connect + {isHealthCheck ? `Check health` : `Connect`} )} diff --git a/keep-ui/app/(keep)/providers/providers-tiles.tsx b/keep-ui/app/(keep)/providers/providers-tiles.tsx index 29030fb9fe..ae5c82c49f 100644 --- a/keep-ui/app/(keep)/providers/providers-tiles.tsx +++ b/keep-ui/app/(keep)/providers/providers-tiles.tsx @@ -10,20 +10,27 @@ import "react-sliding-side-panel/lib/index.css"; import { useSearchParams } from "next/navigation"; import { QuestionMarkCircleIcon } from "@heroicons/react/24/outline"; import { Tooltip } from "@/shared/ui"; +import ProviderHealthResultsModal from "@/app/(health)/health/modal"; const ProvidersTiles = ({ providers, installedProvidersMode = false, linkedProvidersMode = false, isLocalhost = false, + isHealthCheck = false, + mutate, }: { providers: Providers; installedProvidersMode?: boolean; linkedProvidersMode?: boolean; isLocalhost?: boolean; + isHealthCheck?: boolean; + mutate: () => void; }) => { const searchParams = useSearchParams(); const [openPanel, setOpenPanel] = useState(false); + const [openHealthModal, setOpenHealthModal] = useState(false); + const [healthResults, setHealthResults] = useState({}); const [selectedProvider, setSelectedProvider] = useState( null ); @@ -57,8 +64,24 @@ const ProvidersTiles = ({ setSelectedProvider(null); }; - const handleConnecting = (isConnecting: boolean, isConnected: boolean) => { + const handleShowHealthModal = () => { + setOpenHealthModal(true); + }; + + const handleCloseHealthModal = () => { + setOpenHealthModal(false); + }; + + const handleConnecting = ( + isConnecting: boolean, + isConnected: boolean, + healthResults: any + ) => { if (isConnected) handleCloseModal(); + if (isConnected && isHealthCheck) { + setHealthResults(healthResults); + handleShowHealthModal(); + } }; const getSectionTitle = () => { @@ -134,9 +157,17 @@ const ProvidersTiles = ({ installedProvidersMode={installedProvidersMode} isProviderNameDisabled={installedProvidersMode} isLocalhost={isLocalhost} + isHealthCheck={isHealthCheck} + mutate={mutate} /> )} + + ); }; diff --git a/keep-ui/app/(keep)/providers/providers.tsx b/keep-ui/app/(keep)/providers/providers.tsx index b45afe59a9..2da0098037 100644 --- a/keep-ui/app/(keep)/providers/providers.tsx +++ b/keep-ui/app/(keep)/providers/providers.tsx @@ -129,6 +129,7 @@ export interface Provider { provisioned?: boolean; categories: TProviderCategory[]; coming_soon: boolean; + health: boolean; } export type Providers = Provider[]; @@ -149,6 +150,7 @@ export const defaultProvider: Provider = { pulling_enabled: true, categories: ["Others"], coming_soon: false, + health: false, }; export type ProviderFormKVData = Record[]; diff --git a/keep-ui/app/(keep)/settings/settings.client.tsx b/keep-ui/app/(keep)/settings/settings.client.tsx index bc83e3406d..7fe3d61910 100644 --- a/keep-ui/app/(keep)/settings/settings.client.tsx +++ b/keep-ui/app/(keep)/settings/settings.client.tsx @@ -73,24 +73,24 @@ export default function SettingsPage() { newSelectedTab === "users" ? 0 : newSelectedTab === "webhook" - ? 1 - : newSelectedTab === "smtp" - ? 2 - : 0; + ? 1 + : newSelectedTab === "smtp" + ? 2 + : 0; const userSubTabIndex = newUserSubTab === "users" ? 0 : newUserSubTab === "groups" - ? 1 - : newUserSubTab === "roles" - ? 2 - : newUserSubTab === "permissions" - ? 3 - : newUserSubTab === "api-keys" - ? 4 - : newUserSubTab === "sso" - ? 5 - : 0; + ? 1 + : newUserSubTab === "roles" + ? 2 + : newUserSubTab === "permissions" + ? 3 + : newUserSubTab === "api-keys" + ? 4 + : newUserSubTab === "sso" + ? 5 + : 0; setTabIndex(tabIndex); setUserSubTabIndex(userSubTabIndex); setSelectedTab(newSelectedTab); diff --git a/keep-ui/app/(keep)/topology/ui/map/service-node.tsx b/keep-ui/app/(keep)/topology/ui/map/service-node.tsx index f937407846..ff4f927e26 100644 --- a/keep-ui/app/(keep)/topology/ui/map/service-node.tsx +++ b/keep-ui/app/(keep)/topology/ui/map/service-node.tsx @@ -100,9 +100,7 @@ export function ServiceNode({ data, selected }: NodeProps) { }, [showDetails]); const handleClick = () => { - router.push( - `/incidents?services=${encodeURIComponent(data.display_name)}` - ); + router.push(`/incidents?services=${encodeURIComponent(data.display_name)}`); }; const incidentsCount = data.incidents ?? 0; diff --git a/keep-ui/app/(keep)/workflows/workflow-tile.tsx b/keep-ui/app/(keep)/workflows/workflow-tile.tsx index a5f9d4a84e..6aba0b731b 100644 --- a/keep-ui/app/(keep)/workflows/workflow-tile.tsx +++ b/keep-ui/app/(keep)/workflows/workflow-tile.tsx @@ -165,7 +165,7 @@ function WorkflowTile({ workflow }: { workflow: Workflow }) { ?.filters?.find((f) => f.key === "source")?.value; const [fallBackIcon, setFallBackIcon] = useState(false); - const { providers } = useFetchProviders(); + const { providers, mutate} = useFetchProviders(); const { deleteWorkflow } = useWorkflowActions(); const { isRunning, @@ -537,6 +537,7 @@ function WorkflowTile({ workflow }: { workflow: Workflow }) { closeModal={handleCloseModal} installedProvidersMode={selectedProvider.installed} isProviderNameDisabled={true} + mutate={mutate} /> )} diff --git a/keep-ui/app/api/healthcheck/route.ts b/keep-ui/app/api/healthcheck/route.ts index 126270e90f..a6c0ca05d5 100644 --- a/keep-ui/app/api/healthcheck/route.ts +++ b/keep-ui/app/api/healthcheck/route.ts @@ -1,8 +1,8 @@ -import { NextResponse } from 'next/server' +import { NextResponse } from "next/server"; export async function GET() { return NextResponse.json({ - status: 'ok', - timestamp: new Date().toISOString() - }) -} \ No newline at end of file + status: "ok", + timestamp: new Date().toISOString(), + }); +} diff --git a/keep-ui/app/frigade-provider.tsx b/keep-ui/app/frigade-provider.tsx index d4980844a0..05c6fbab87 100644 --- a/keep-ui/app/frigade-provider.tsx +++ b/keep-ui/app/frigade-provider.tsx @@ -2,7 +2,7 @@ import * as Frigade from "@frigade/react"; import { useHydratedSession as useSession } from "@/shared/lib/hooks/useHydratedSession"; -import {useConfig} from "@/utils/hooks/useConfig"; +import { useConfig } from "@/utils/hooks/useConfig"; export const FrigadeProvider = ({ children, }: { @@ -12,9 +12,7 @@ export const FrigadeProvider = ({ const { data: config } = useConfig(); if (!config || config.FRIGADE_DISABLED === "true") { - return <> - {children} - ; + return <>{children}; } return ( { } // If not authenticated and not on signin page, redirect to signin - if (!isAuthenticated && !pathname.startsWith("/signin")) { + if (!isAuthenticated && !pathname.startsWith("/signin") && !pathname.startsWith("/health")) { console.log("Redirecting to signin page because user is not authenticated"); return NextResponse.redirect(new URL("/signin", request.url)); } diff --git a/keep-ui/shared/api/ApiClient.ts b/keep-ui/shared/api/ApiClient.ts index 76be128875..e4291371e4 100644 --- a/keep-ui/shared/api/ApiClient.ts +++ b/keep-ui/shared/api/ApiClient.ts @@ -5,6 +5,7 @@ import { getApiUrlFromConfig } from "@/shared/lib/getApiUrlFromConfig"; import { getApiURL } from "@/utils/apiUrl"; import * as Sentry from "@sentry/nextjs"; import { signOut as signOutClient } from "next-auth/react"; +import { GuestSession } from "@/types/auth"; const READ_ONLY_ALLOWED_METHODS = ["GET", "OPTIONS"]; const READ_ONLY_ALWAYS_ALLOWED_URLS = ["/alerts/audit"]; @@ -12,7 +13,7 @@ const READ_ONLY_ALWAYS_ALLOWED_URLS = ["/alerts/audit"]; export class ApiClient { private readonly isServer: boolean; constructor( - private readonly session: Session | null, + private readonly session: Session | GuestSession | null, private readonly config: InternalConfig | null ) { this.isServer = typeof window === "undefined"; @@ -26,6 +27,10 @@ export class ApiClient { if (!this.session || !this.session.accessToken) { throw new Error("No valid session or access token found"); } + // Guest session + if (this.session.accessToken === "unauthenticated") { + return {} + } return { Authorization: `Bearer ${this.session.accessToken}`, }; @@ -137,7 +142,7 @@ export class ApiClient { const response = await fetch(fullUrl, { ...requestInit, headers: { - ...this.getHeaders(), + ...(this.getHeaders() as HeadersInit), ...requestInit.headers, }, }); diff --git a/keep-ui/shared/lib/hooks/useApi.tsx b/keep-ui/shared/lib/hooks/useApi.tsx index 493372355d..4c1cc9880b 100644 --- a/keep-ui/shared/lib/hooks/useApi.tsx +++ b/keep-ui/shared/lib/hooks/useApi.tsx @@ -2,14 +2,19 @@ import { useConfig } from "@/utils/hooks/useConfig"; import { useHydratedSession as useSession } from "@/shared/lib/hooks/useHydratedSession"; import { useMemo } from "react"; import { ApiClient } from "@/shared/api/ApiClient"; +import { GuestSession } from "@/types/auth"; export function useApi() { const { data: config } = useConfig(); - const { data: session } = useSession(); + const { data: user_session, status } = useSession(); const api = useMemo(() => { + const session = status === "unauthenticated" ? { + accessToken: "unauthenticated" + } as GuestSession : user_session + return new ApiClient(session, config); - }, [session?.accessToken, config]); + }, [status, user_session?.accessToken, config]); return api; } diff --git a/keep-ui/types/auth.d.ts b/keep-ui/types/auth.d.ts index 6dd72458ca..dae9cb0a7b 100644 --- a/keep-ui/types/auth.d.ts +++ b/keep-ui/types/auth.d.ts @@ -34,3 +34,7 @@ declare module "next-auth/jwt" { role?: string; } } + +interface GuestSession { + accessToken: "unauthenticated"; +} diff --git a/keep-ui/utils/hooks/useProviders.ts b/keep-ui/utils/hooks/useProviders.ts index c12db4c4a4..abe1f0ad5c 100644 --- a/keep-ui/utils/hooks/useProviders.ts +++ b/keep-ui/utils/hooks/useProviders.ts @@ -2,6 +2,7 @@ import { SWRConfiguration } from "swr"; import { ProvidersResponse } from "@/app/(keep)/providers/providers"; import useSWRImmutable from "swr/immutable"; import { useApi } from "@/shared/lib/hooks/useApi"; +import {ApiClient} from "@/shared/api"; export const useProviders = ( options: SWRConfiguration = { revalidateOnFocus: false } @@ -14,3 +15,16 @@ export const useProviders = ( options ); }; + +export const useProvidersWithHealthCheck = ( + options: SWRConfiguration = { revalidateOnFocus: false } +) => { + const api = useApi(); + + return useSWRImmutable( + api.isReady() ? "/providers/healthcheck" : null, + (url) => api.get(url), + options + ); +}; + diff --git a/keep/api/models/provider.py b/keep/api/models/provider.py index ed3b1c23ff..9c94d88608 100644 --- a/keep/api/models/provider.py +++ b/keep/api/models/provider.py @@ -53,3 +53,4 @@ class Provider(BaseModel): alertExample: dict | None = None default_fingerprint_fields: list[str] | None = None provisioned: bool = False + health: bool = False diff --git a/keep/api/routes/providers.py b/keep/api/routes/providers.py index 9992a6e25b..18a6d28a59 100644 --- a/keep/api/routes/providers.py +++ b/keep/api/routes/providers.py @@ -4,7 +4,7 @@ import random import time import uuid -from typing import Callable, Optional +from typing import Callable, Optional, Dict, Any from fastapi import APIRouter, Body, Depends, HTTPException, Request from fastapi.encoders import jsonable_encoder @@ -754,3 +754,54 @@ def get_webhook_settings( ), webhookMarkdown=webhookMarkdown, ) + +@router.post("/healthcheck") +async def healthcheck_provider( + request: Request, +) -> Dict[str, Any]: + try: + provider_info = await request.json() + except Exception: + form_data = await request.form() + provider_info = dict(form_data) + + if not provider_info: + raise HTTPException(status_code=400, detail="No valid data provided") + + try: + provider_id = provider_info.pop("provider_id") + provider_type = provider_info.pop("provider_type", None) or provider_id + provider_name = f"{provider_type} healthcheck" + except KeyError as e: + raise HTTPException( + status_code=400, detail=f"Missing required field: {e.args[0]}" + ) + + for key, value in provider_info.items(): + if isinstance(value, UploadFile): + provider_info[key] = value.file.read().decode() + + provider = ProvidersService.prepare_provider( + provider_id, + provider_name, + provider_type, + provider_info, + ) + + result = provider.get_health_report() + return result + + +@router.get("/healthcheck") +def get_healthcheck_providers(): + logger.info("Getting all providers for healthcheck") + providers = ProvidersService.get_all_providers() + + healthcheck_providers = [provider for provider in providers if provider.health] + + is_localhost = _is_localhost() + + return { + "providers": healthcheck_providers, + "is_localhost": is_localhost, + } diff --git a/keep/providers/base/base_provider.py b/keep/providers/base/base_provider.py index 13283778b5..aa1e09546f 100644 --- a/keep/providers/base/base_provider.py +++ b/keep/providers/base/base_provider.py @@ -13,10 +13,13 @@ import os import re import uuid +from collections import Counter +from operator import attrgetter from typing import Literal, Optional import opentelemetry.trace as trace import requests +from dateutil.parser import parse from keep.api.bl.enrichments_bl import EnrichmentsBl from keep.api.core.db import ( @@ -36,6 +39,8 @@ tracer = trace.get_tracer(__name__) +SPAMMY_ALERTS_THRESHOLD_HOURS = 1 +SPAMMY_ALERTS_THRESHOLD = datetime.timedelta(hours=SPAMMY_ALERTS_THRESHOLD_HOURS) class BaseProvider(metaclass=abc.ABCMeta): OAUTH2_URL = None @@ -143,7 +148,7 @@ def dispose(self): raise NotImplementedError("dispose() method not implemented") @abc.abstractmethod - def validate_config(): + def validate_config(self): """ Validate provider configuration. """ @@ -785,6 +790,10 @@ def is_provisioned(self) -> bool: parser._parse_providers_from_env(self.context_manager) return self.config.name in self.context_manager.providers_context + @classmethod + def has_health_report(cls) -> bool: + return getattr(cls, "HAS_HEALTH_CHECK", False) + class BaseTopologyProvider(BaseProvider): def pull_topology(self) -> tuple[list[TopologyServiceInDto], dict]: @@ -860,3 +869,83 @@ def setup_incident_webhook( NotImplementedError: _description_ """ raise NotImplementedError("setup_webhook() method not implemented") + + +class ProviderHealthMixin: + + HAS_HEALTH_CHECK = True + + def get_health_report(self): + health = {} + + alerts = self.get_alerts() + + self.check_topology_coverage(alerts, health) + self.check_spammy_alerts(alerts, health) + self.check_alerting_rules(alerts, health) + + return health + + def check_topology_coverage(self, alerts, health): + if hasattr(self, "pull_topology"): + topology, _ = self.pull_topology() + uncovered_topology = copy.deepcopy(topology) + for alert in alerts: + uncovered_topology = list(filter(lambda t: not alert.service == t.service, uncovered_topology)) + + health["topology"] = { + "covered": [t for t in topology if t not in uncovered_topology], + "uncovered": uncovered_topology + } + + def check_alerting_rules(self, alerts, health): + if hasattr(self, "get_alerts_configuration"): + rules = self.get_alerts_configuration() + try: + rules = list(map(json.loads, rules)) + except json.JSONDecodeError: + pass + unused_rules = [] + compiled_patterns = [re.compile(rule['message']) for rule in rules] + matched_patterns = set() + + for alert in alerts: + for idx, pattern in enumerate(compiled_patterns): + if idx in matched_patterns: + continue + if pattern.search(alert.message): + matched_patterns.add(idx) + + health["rules"] = { + "total": len(rules), + "used": len(rules) - len(unused_rules), + "unused": len(unused_rules), + } + + def check_spammy_alerts(self, alerts, health): + sorter = sorted(alerts, key=attrgetter("fingerprint")) + alerts_per_fingerprint = itertools.groupby(sorter, key=attrgetter("fingerprint")) + spammy_alerts = [] + for fingerprint, fingerprint_alerts in alerts_per_fingerprint: + close_alerts = [] + + fingerprint_alerts = list(fingerprint_alerts) + + fingerprint_alerts.sort(key=attrgetter("lastReceived")) + # Iterate through alerts to check if some of them are too close + for i in range(len(fingerprint_alerts)): + for j in range(i + 1, len(fingerprint_alerts)): + if parse(fingerprint_alerts[j].lastReceived) - parse( + fingerprint_alerts[i].lastReceived) <= SPAMMY_ALERTS_THRESHOLD: + close_alerts.append((fingerprint_alerts[i], fingerprint_alerts[j])) + else: + break + + if len(close_alerts) > 2: + spammy_alerts.extend(fingerprint_alerts) + + timestamps = [parse(alert.lastReceived) for alert in spammy_alerts] + hours = [ts.strftime("%Y-%m-%d %H:00") for ts in timestamps] + hourly_alerts = Counter(hours) + health["spammy"] = [{"date": date, "value": value} for date, value in hourly_alerts.items()] + diff --git a/keep/providers/datadog_provider/datadog_provider.py b/keep/providers/datadog_provider/datadog_provider.py index 05bfbb0d91..73b642aab0 100644 --- a/keep/providers/datadog_provider/datadog_provider.py +++ b/keep/providers/datadog_provider/datadog_provider.py @@ -13,6 +13,7 @@ import pydantic import requests + from datadog_api_client import ApiClient, Configuration from datadog_api_client.api_client import Endpoint from datadog_api_client.exceptions import ( @@ -36,7 +37,7 @@ from keep.api.models.alert import AlertDto, AlertSeverity, AlertStatus from keep.api.models.db.topology import TopologyServiceInDto from keep.contextmanager.contextmanager import ContextManager -from keep.providers.base.base_provider import BaseTopologyProvider +from keep.providers.base.base_provider import BaseTopologyProvider, ProviderHealthMixin from keep.providers.base.provider_exceptions import GetAlertException from keep.providers.datadog_provider.datadog_alert_format_description import ( DatadogAlertFormatDescription, @@ -105,7 +106,7 @@ class DatadogProviderAuthConfig: ) -class DatadogProvider(BaseTopologyProvider): +class DatadogProvider(BaseTopologyProvider, ProviderHealthMixin): """Pull/push alerts from Datadog.""" PROVIDER_CATEGORY = ["Monitoring"] diff --git a/keep/providers/providers_factory.py b/keep/providers/providers_factory.py index 522715ed30..d976e5effb 100644 --- a/keep/providers/providers_factory.py +++ b/keep/providers/providers_factory.py @@ -422,6 +422,7 @@ def get_all_providers(ignore_cache_file: bool = False) -> list[Provider]: default_fingerprint_fields=default_fingerprint_fields, categories=provider_class.PROVIDER_CATEGORY, coming_soon=provider_class.PROVIDER_COMING_SOON, + health=provider_class.has_health_report(), ) ) except ModuleNotFoundError: diff --git a/keep/providers/providers_service.py b/keep/providers/providers_service.py index cf47f52665..808683cc90 100644 --- a/keep/providers/providers_service.py +++ b/keep/providers/providers_service.py @@ -82,6 +82,57 @@ def validate_scopes( ) return validated_scopes + @staticmethod + def prepare_provider( + provider_id: str, + provider_name: str, + provider_type: str, + provider_config: Dict[str, Any], + validate_scopes: bool = True, + ) -> Dict[str, Any]: + provider_unique_id = uuid.uuid4().hex + logger.info( + "Installing provider", + extra={ + "provider_id": provider_id, + "provider_type": provider_type, + }, + ) + + config = { + "authentication": provider_config, + "name": provider_name, + } + tenant_id = None + context_manager = ContextManager(tenant_id=tenant_id) + try: + provider = ProvidersFactory.get_provider( + context_manager, provider_id, provider_type, config + ) + except Exception as e: + raise HTTPException(status_code=400, detail=str(e)) + + if validate_scopes: + ProvidersService.validate_scopes(provider) + + secret_manager = SecretManagerFactory.get_secret_manager(context_manager) + secret_name = f"{tenant_id}_{provider_type}_{provider_unique_id}" + secret_manager.write_secret( + secret_name=secret_name, + secret_value=json.dumps(config), + ) + + try: + secret_manager.delete_secret( + secret_name=secret_name, + ) + logger.warning("Secret deleted") + except Exception: + logger.exception("Failed to delete the secret") + pass + + return provider + @staticmethod def install_provider( tenant_id: str, From 12dfe3628d03161ffac0f99eaba26a5dd5decffa Mon Sep 17 00:00:00 2001 From: Tal Date: Thu, 30 Jan 2025 15:47:19 +0200 Subject: [PATCH 37/39] fix(api): delete provider (#3237) --- keep/parser/parser.py | 32 +++++++++++++++---- .../grafana_provider/grafana_provider.py | 27 +++++++++++++--- keep/providers/providers_service.py | 14 ++++---- keep/workflowmanager/workflowscheduler.py | 27 ++++++++++++++-- keep/workflowmanager/workflowstore.py | 4 ++- 5 files changed, 83 insertions(+), 21 deletions(-) diff --git a/keep/parser/parser.py b/keep/parser/parser.py index 9f68096949..533070c7f5 100644 --- a/keep/parser/parser.py +++ b/keep/parser/parser.py @@ -58,6 +58,7 @@ def parse( parsed_workflow_yaml: dict, providers_file: str = None, actions_file: str = None, + workflow_db_id: str = None, ) -> typing.List[Workflow]: """_summary_ @@ -83,6 +84,7 @@ def parse( workflow_providers, actions_file, workflow_actions, + workflow_db_id, ) for workflow in raw_workflows ] @@ -138,6 +140,7 @@ def _parse_workflow( workflow_providers: dict = None, actions_file: str = None, workflow_actions: dict = None, + workflow_db_id: str = None, ) -> Workflow: self.logger.debug("Parsing workflow") workflow_id = self._get_workflow_id(tenant_id, workflow) @@ -158,10 +161,10 @@ def _parse_workflow( workflow_owners = self._parse_owners(workflow) workflow_tags = self._parse_tags(workflow) workflow_steps = self._parse_steps( - context_manager, workflow, workflow_id, workflow_description + context_manager, workflow, workflow_id, workflow_description, workflow_db_id ) workflow_actions = self._parse_actions( - context_manager, workflow, workflow_id, workflow_description + context_manager, workflow, workflow_id, workflow_description, workflow_db_id ) workflow_interval = self.parse_interval(workflow) on_failure_action = self._get_on_failure_action(context_manager, workflow) @@ -431,13 +434,18 @@ def _parse_steps( workflow: dict, workflow_id: str | None = None, workflow_description: str | None = None, + workflow_db_id: str | None = None, ) -> typing.List[Step]: self.logger.debug("Parsing steps") workflow_steps = workflow.get("steps", []) workflow_steps_parsed = [] for _step in workflow_steps: provider = self._get_step_provider( - context_manager, _step, workflow_id, workflow_description + context_manager, + _step, + workflow_id, + workflow_description, + workflow_db_id, ) provider_parameters = _step.get("provider", {}).get("with") parsed_provider_parameters = Parser.parse_provider_parameters( @@ -462,6 +470,7 @@ def _get_step_provider( _step: dict, workflow_id: str | None = None, workflow_description: str | None = None, + workflow_db_id: str | None = None, ) -> dict: step_provider = _step.get("provider") try: @@ -483,11 +492,13 @@ def _get_step_provider( self.logger.exception( f"Error getting provider {provider_id} for step {_step.get('name')}", extra={ - "workflow_id": workflow_id, + "workflow_name": workflow_id, "workflow_description": workflow_description, "provider_id": provider_id, "provider_type": step_provider_type, "provider_config_name": step_provider_config, + "workflow_db_id": workflow_db_id, + "tenant_id": context_manager.tenant_id, }, ) raise @@ -558,6 +569,7 @@ def _get_action( action_name: str | None = None, workflow_id: str | None = None, workflow_description: str | None = None, + workflow_db_id: str | None = None, ) -> Step: name = action_name or action.get("name") provider = action.get("provider", {}) @@ -582,11 +594,13 @@ def _get_action( self.logger.exception( f"Error getting provider {provider_id} for action {name}", extra={ - "workflow_id": workflow_id, + "workflow_name": workflow_id, "workflow_description": workflow_description, "provider_id": provider_id, "provider_type": provider_type, "provider_config_name": provider_config_name, + "workflow_db_id": workflow_db_id, + "tenant_id": context_manager.tenant_id, }, ) raise @@ -606,6 +620,7 @@ def _parse_actions( workflow: dict, workflow_id: str | None = None, workflow_description: str | None = None, + workflow_db_id: str | None = None, ) -> typing.List[Step]: self.logger.debug("Parsing actions") workflow_actions_raw = workflow.get("actions", []) @@ -616,7 +631,12 @@ def _parse_actions( workflow_actions_parsed = [] for _action in workflow_actions: parsed_action = self._get_action( - context_manager, _action, None, workflow_id, workflow_description + context_manager, + _action, + None, + workflow_id, + workflow_description, + workflow_db_id, ) workflow_actions_parsed.append(parsed_action) self.logger.debug("Actions parsed successfully") diff --git a/keep/providers/grafana_provider/grafana_provider.py b/keep/providers/grafana_provider/grafana_provider.py index ccc56116b0..1c5fc767ef 100644 --- a/keep/providers/grafana_provider/grafana_provider.py +++ b/keep/providers/grafana_provider/grafana_provider.py @@ -54,6 +54,7 @@ class GrafanaProviderAuthConfig: "description": "Datasource UID", "hint": "Provide if you want to pull topology data", }, + default="", ) @@ -866,7 +867,10 @@ def simulate_alert(cls, **kwargs) -> dict: def query_datasource_for_topology(self): self.logger.info("Attempting to query datasource for topology data.") - headers = {"Authorization": f"Bearer {self.authentication_config.token}", "Content-Type": "application/json",} + headers = { + "Authorization": f"Bearer {self.authentication_config.token}", + "Content-Type": "application/json", + } json_data = { "queries": [ { @@ -918,7 +922,10 @@ def query_datasource_for_topology(self): raise Exception(response.text) return response.json() except Exception as e: - self.logger.error("Error while querying datasource for topology map", extra={"exception": str(e)}) + self.logger.error( + "Error while querying datasource for topology map", + extra={"exception": str(e)}, + ) @staticmethod def __extract_schema_value_pair(results, query: str): @@ -940,16 +947,23 @@ def __extract_schema_value_pair(results, query: str): def pull_topology(self): self.logger.info("Pulling Topology data from Grafana...") + if not self.authentication_config.datasource_uid: + self.logger.debug("No datasource uid found, skipping topology pull") + return [], {} try: service_topology = {} results = self.query_datasource_for_topology().get("results", {}) - self.logger.info("Scraping traces_service_graph_request_total data from the response") + self.logger.info( + "Scraping traces_service_graph_request_total data from the response" + ) requests_per_second_data = GrafanaProvider.__extract_schema_value_pair( results=results, query="traces_service_graph_request_total" ) - self.logger.info("Scraping traces_service_graph_request_server_seconds_sum data from the response") + self.logger.info( + "Scraping traces_service_graph_request_server_seconds_sum data from the response" + ) total_response_times_data = GrafanaProvider.__extract_schema_value_pair( results=results, query="traces_service_graph_request_server_seconds_sum" ) @@ -981,7 +995,10 @@ def pull_topology(self): self.logger.info("Successfully pulled Topology data from Grafana...") return list(service_topology.values()), {} except Exception as e: - self.logger.error("Error while pulling topology data from Grafana", extra={"exception": str(e)}) + self.logger.error( + "Error while pulling topology data from Grafana", + extra={"exception": str(e)}, + ) raise e diff --git a/keep/providers/providers_service.py b/keep/providers/providers_service.py index 808683cc90..f8c1c8f4fb 100644 --- a/keep/providers/providers_service.py +++ b/keep/providers/providers_service.py @@ -301,10 +301,9 @@ def delete_provider( context_manager = ContextManager(tenant_id=tenant_id) secret_manager = SecretManagerFactory.get_secret_manager(context_manager) - config = secret_manager.read_secret(provider_model.configuration_key, is_json=True) - provider = ProvidersFactory.get_provider( - context_manager, provider_model.id, provider_model.type, config - ) + config = secret_manager.read_secret( + provider_model.configuration_key, is_json=True + ) try: secret_manager.delete_secret(provider_model.configuration_key) @@ -319,14 +318,17 @@ def delete_provider( logger.exception("Failed to unregister provider as a consumer") try: + provider = ProvidersFactory.get_provider( + context_manager, provider_model.id, provider_model.type, config + ) provider.clean_up() except NotImplementedError: logger.info( "Being deleted provider of type %s does not have a clean_up method", - provider_model.type + provider_model.type, ) except Exception: - logger.exception(msg="Failed to clean up provider") + logger.exception(msg="Provider deleted but failed to clean up provider") session.delete(provider_model) session.commit() diff --git a/keep/workflowmanager/workflowscheduler.py b/keep/workflowmanager/workflowscheduler.py index 18ecca9cf9..782bb46aac 100644 --- a/keep/workflowmanager/workflowscheduler.py +++ b/keep/workflowmanager/workflowscheduler.py @@ -145,7 +145,14 @@ def _handle_interval_workflows(self): ) continue except Exception as e: - self.logger.error(f"Error getting workflow: {e}") + self.logger.error( + f"Error getting workflow: {e}", + extra={ + "workflow_id": workflow_id, + "workflow_execution_id": workflow_execution_id, + "tenant_id": tenant_id, + }, + ) self._finish_workflow_execution( tenant_id=tenant_id, workflow_id=workflow_id, @@ -424,7 +431,14 @@ def _handle_event_workflows(self): ) # In case the provider are not configured properly except ProviderConfigurationException as e: - self.logger.error(f"Error getting workflow: {e}") + self.logger.error( + f"Error getting workflow: {e}", + extra={ + "workflow_id": workflow_id, + "workflow_execution_id": workflow_execution_id, + "tenant_id": tenant_id, + }, + ) self._finish_workflow_execution( tenant_id=tenant_id, workflow_id=workflow_id, @@ -434,7 +448,14 @@ def _handle_event_workflows(self): ) continue except Exception as e: - self.logger.error(f"Error getting workflow: {e}") + self.logger.error( + f"Error getting workflow: {e}", + extra={ + "workflow_id": workflow_id, + "workflow_execution_id": workflow_execution_id, + "tenant_id": tenant_id, + }, + ) self._finish_workflow_execution( tenant_id=tenant_id, workflow_id=workflow_id, diff --git a/keep/workflowmanager/workflowstore.py b/keep/workflowmanager/workflowstore.py index 5870ae92c9..96d244a0f8 100644 --- a/keep/workflowmanager/workflowstore.py +++ b/keep/workflowmanager/workflowstore.py @@ -112,7 +112,9 @@ def get_workflow(self, tenant_id: str, workflow_id: str) -> Workflow: detail=f"Workflow {workflow_id} not found", ) workflow_yaml = cyaml.safe_load(workflow) - workflow = self.parser.parse(tenant_id, workflow_yaml) + workflow = self.parser.parse( + tenant_id, workflow_yaml, workflow_db_id=workflow_id + ) if len(workflow) > 1: raise HTTPException( status_code=500, From 83022a202576b9228440bee645a72366106043e9 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 30 Jan 2025 19:48:47 +0200 Subject: [PATCH 38/39] fix: migration (#3239) --- .../db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py b/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py index ed00eec9dd..c9e73f8565 100644 --- a/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py +++ b/keep/api/models/db/migrations/versions/2025-01-16-14-00_e3f33e571c3c.py @@ -19,7 +19,7 @@ def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### with op.batch_alter_table("rule", schema=None) as batch_op: - batch_op.add_column(sa.Column("is_deleted", sa.Boolean(), nullable=False, erver_default=sa.false())) + batch_op.add_column(sa.Column("is_deleted", sa.Boolean(), nullable=False, server_default=sa.false())) # ### end Alembic commands ### From 418d0e69590a852f0bacd4bda7e849f6c084c586 Mon Sep 17 00:00:00 2001 From: Shahar Glazner Date: Thu, 30 Jan 2025 21:17:09 +0200 Subject: [PATCH 39/39] feat(api): kibana 8.16.0 (#3242) --- .../kibana_provider/kibana_provider.py | 86 +++++++++++-------- pyproject.toml | 2 +- 2 files changed, 50 insertions(+), 38 deletions(-) diff --git a/keep/providers/kibana_provider/kibana_provider.py b/keep/providers/kibana_provider/kibana_provider.py index ad312f1a82..a3d89d23a7 100644 --- a/keep/providers/kibana_provider/kibana_provider.py +++ b/keep/providers/kibana_provider/kibana_provider.py @@ -5,6 +5,7 @@ import dataclasses import datetime import json +import logging import uuid from typing import Literal, Union from urllib.parse import urlparse @@ -59,35 +60,11 @@ class KibanaProvider(BaseProvider): DEFAULT_TIMEOUT = 10 WEBHOOK_PAYLOAD = json.dumps( { - "actionGroup": "{{alert.actionGroup}}", - "status": "{{alert.actionGroupName}}", - "actionSubgroup": "{{alert.actionSubgroup}}", - "isFlapping": "{{alert.flapping}}", - "id": "{{alert.id}}", - "fingerprint": "{{alert.id}}", - "url": "{{context.alertDetailsUrl}}", - "context.message": "{{context.message}}", - "context.hits": "{{context.hits}}", - "context.link": "{{context.link}}", - "context.query": "{{context.query}}", - "context.title": "{{context.title}}", - "context.cloud": "{{context.cloud}}", - "context.container": "{{context.container}}", - "context.group": "{{context.group}}", - "context.host": "{{context.host}}", - "context.labels": "{{context.labels}}", - "context.orchestrator": "{{context.orchestrator}}", - "description": "{{context.reason}}", - "contextTags": "{{context.tags}}", - "context.timestamp": "{{context.timestamp}}", - "context.value": "{{context.value}}", - "lastReceived": "{{date}}", - "ruleId": "{{rule.id}}", - "rule.spaceId": "{{rule.spaceId}}", - "ruleUrl": "{{rule.url}}", - "ruleTags": "{{rule.tags}}", - "name": "{{rule.name}}", - "rule.type": "{{rule.type}}", + "webhook_body": { + "context_info": "{{#context}}{{.}}{{/context}}", + "alert_info": "{{#alert}}{{.}}{{/alert}}", + "rule_info": "{{#rule}}{{.}}{{/rule}}", + } } ) @@ -567,38 +544,73 @@ def _format_alert( event: dict, provider_instance: "BaseProvider" = None ) -> AlertDto | list[AlertDto]: """ - Formats an alert from Kibana to a standard format. + Formats an alert from Kibana to a standard format, supporting both old and new webhook formats. Args: - event (dict): The event from Kibana + event (dict): The event from Kibana, either in legacy or new webhook format + provider_instance: The provider instance (optional) Returns: AlertDto | list[AlertDto]: The alert in a standard format """ - # If this is coming from Kibana Watcher + logger = logging.getLogger(__name__) if "payload" in event: return KibanaProvider.format_alert_from_watcher(event) + # Check if this is the new webhook format + # New Kibana webhook format + if "webhook_body" in event: + # Parse the JSON strings from the new format + try: + context_info = json.loads(event["webhook_body"]["context_info"]) + alert_info = json.loads(event["webhook_body"]["alert_info"]) + rule_info = json.loads(event["webhook_body"]["rule_info"]) + + # Construct event dict in old format for compatibility + event = { + "actionGroup": alert_info.get("actionGroup"), + "status": alert_info.get("actionGroupName"), + "actionSubgroup": alert_info.get("actionSubgroup"), + "isFlapping": alert_info.get("flapping"), + "kibana_alert_id": alert_info.get("id"), + "fingerprint": alert_info.get("uuid"), + "url": context_info.get("alertDetailsUrl"), + "context.message": context_info.get("message"), + "context.hits": context_info.get("matchingDocuments"), + "context.link": context_info.get("viewInAppUrl"), + "context.query": rule_info.get("params", {}).get("criteria"), + "context.title": rule_info.get("name"), + "description": context_info.get("reason"), + "lastReceived": context_info.get("timestamp"), + "ruleId": rule_info.get("id"), + "rule.spaceId": rule_info.get("spaceId"), + "ruleUrl": rule_info.get("url"), + "ruleTags": rule_info.get("tags", []), + "name": rule_info.get("name"), + "rule.type": rule_info.get("type"), + } + except json.JSONDecodeError as e: + logger.error(f"Error parsing new webhook format: {e}") + # Fall through to process as old format + + # Process tags and labels (works for both old and new formats) labels = {} tags = event.get("ruleTags", []) for tag in tags: - # if the tag is a key=value pair if "=" in tag: key, value = tag.split("=", 1) labels[key] = value - # same with contextTags context_tags = event.get("contextTags", []) for tag in context_tags: - # if the tag is a key=value pair if "=" in tag: key, value = tag.split("=", 1) labels[key] = value environment = labels.get("environment", "undefined") - # format status and severity to Keep format + # Format status and severity event["status"] = KibanaProvider.STATUS_MAP.get( event.get("status"), AlertStatus.FIRING ) @@ -606,9 +618,9 @@ def _format_alert( event.get("severity"), AlertSeverity.INFO ) + # Handle URL fallback if not event.get("url"): event["url"] = event.get("ruleUrl") - # if still no url, popt it if not event.get("url"): event.pop("url", None) diff --git a/pyproject.toml b/pyproject.toml index 94959ab853..375afe99a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "keep" -version = "0.35.7" +version = "0.35.8" description = "Alerting. for developers, by developers." authors = ["Keep Alerting LTD"] packages = [{include = "keep"}]

>f-C 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 Fe*w9P$~pi5 literal 0 HcmV?d00001 diff --git a/docs/images/checkly-provider_2.png b/docs/images/checkly-provider_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac91e04ee145d774204e260d4f0b3884ac38417 GIT binary patch literal 100975 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 +86PBX$HOp#3 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