From 5be04cc383788b84a5707194ffd99bdc2aab71c8 Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Thu, 17 Oct 2024 14:38:03 +0200 Subject: [PATCH 1/9] feat: dynamic selectors with alert_foreign_logs_enricher --- .../robusta_playbooks/alerts_integration.py | 6 ++++ playbooks/robusta_playbooks/util.py | 20 +++++++++++ .../test_prometheus_alert_selector.py | 35 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 playbooks/robusta_playbooks/util.py create mode 100644 tests/playbooks/test_prometheus_alert_selector.py diff --git a/playbooks/robusta_playbooks/alerts_integration.py b/playbooks/robusta_playbooks/alerts_integration.py index ed5b676a2..2bec6d166 100644 --- a/playbooks/robusta_playbooks/alerts_integration.py +++ b/playbooks/robusta_playbooks/alerts_integration.py @@ -8,6 +8,7 @@ from hikaru.model.rel_1_26 import Node from kubernetes import client from kubernetes.client import V1Pod, V1PodList, exceptions +from playbooks.robusta_playbooks.util import resolve_selectors from robusta.api import ( ActionException, ActionParams, @@ -455,6 +456,11 @@ class ForeignLogParams(LogEnricherParams): title_override: Optional[str] +@action +def alert_foreign_logs_enricher(event: PrometheusKubernetesAlert, params: ForeignLogParams): + params.label_selectors = resolve_selectors(event.labels, params.label_selectors) + return foreign_logs_enricher(event, params) + @action def foreign_logs_enricher(event: ExecutionBaseEvent, params: ForeignLogParams): """ diff --git a/playbooks/robusta_playbooks/util.py b/playbooks/robusta_playbooks/util.py new file mode 100644 index 000000000..96d101dce --- /dev/null +++ b/playbooks/robusta_playbooks/util.py @@ -0,0 +1,20 @@ + +import re +from typing import Dict, List + +REGEXP_FIND_SELECTOR = r'\{\{\s*labels\.([^\s]+)\s*\}\}' + +def resolve_selectors(labels:Dict, selectors:List[str]) -> List[str]: + """ + Allows referencing of labels inside selectors and returns parsed selectors. + + e.g. + labels={"my_label": "my_value"} + resolve_selectors(labels, ["{{labels.my_label}}"]) => ["my_value"] + """ + def replace_label(match): + key = match.group(1).strip() + return labels.get(key, '') + + resolved_selectors = [re.sub(REGEXP_FIND_SELECTOR, replace_label, selector) for selector in selectors] + return resolved_selectors diff --git a/tests/playbooks/test_prometheus_alert_selector.py b/tests/playbooks/test_prometheus_alert_selector.py new file mode 100644 index 000000000..f6755aae9 --- /dev/null +++ b/tests/playbooks/test_prometheus_alert_selector.py @@ -0,0 +1,35 @@ + +import pytest +from playbooks.robusta_playbooks.util import resolve_selectors + +@pytest.mark.parametrize( + "labels,input_selectors,expected_resolved_selectors", + [ + ({}, ["my_selector"], ["my_selector"]), + ({"field1": "value1"}, ["{{ labels.field1 }}"], ["value1"]), + ({}, ["{{ labels.field1 }}"], [""]), + ({"field_1": "value1"}, ["{{ labels.field_1 }}"], ["value1"]), + ({"field-1": "value1"}, ["{{ labels.field-1 }}"], ["value1"]), + ( + {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, + ["http://{{ labels.domain}}:{{ labels.port }}{{labels.apiUrl}}"], + ["http://localhost:3000/my_api"]), + ( + {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, + [ + "http://{{ labels.domain}}:{{ labels.port }}{{labels.apiUrl}}", + "{{ labels.domain}}", + "{labels.domain}", + "{apiUrl" + ], + [ + "http://localhost:3000/my_api", + "localhost", + "{labels.domain}", + "{apiUrl" + ] + ) + ], +) +def test_clean_up_k8s_logs_from_job_output(labels, input_selectors, expected_resolved_selectors): + assert resolve_selectors(labels, input_selectors) == expected_resolved_selectors From 448fc5bfcedb01c0f7d15b147bc26f7b82b0b813 Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Fri, 18 Oct 2024 14:20:17 +0200 Subject: [PATCH 2/9] feat: improve label parsing fallback and add documentation --- docs/_ext/autorobusta.py | 18 ++++++++++----- .../cluster-misconfigurations.rst | 6 ++--- docs/configuration/resource-recommender.rst | 3 ++- .../actions/change-tracking.rst | 14 +++++++----- .../develop-actions/documenting-actions.rst | 3 ++- .../actions/event-enrichment.rst | 17 ++++++++++++-- docs/playbook-reference/actions/grafana.rst | 8 ++++--- .../actions/message-formatting.rst | 9 +++++--- .../actions/miscellaneous.rst | 5 +++-- .../actions/remediation.rst | 21 ++++++++++++------ .../robusta_playbooks/alerts_integration.py | 8 +++++++ .../images/alert_foreign_logs_enricher.png | Bin 0 -> 148455 bytes playbooks/robusta_playbooks/util.py | 2 +- .../test_prometheus_alert_selector.py | 2 +- 14 files changed, 80 insertions(+), 36 deletions(-) create mode 100644 playbooks/robusta_playbooks/images/alert_foreign_logs_enricher.png diff --git a/docs/_ext/autorobusta.py b/docs/_ext/autorobusta.py index 20c791761..341fc71ab 100644 --- a/docs/_ext/autorobusta.py +++ b/docs/_ext/autorobusta.py @@ -214,6 +214,7 @@ class RobustaActionDirective(SphinxDirective): "reference-label": str, "manual-trigger-only": directives.flag, "trigger-params": str, + "recommended-trigger": str } has_content = True required_arguments = 1 @@ -223,22 +224,28 @@ class RobustaActionDirective(SphinxDirective): def run(self) -> List[Node]: objpath = self.arguments[0] if len(self.arguments) < 2: - recommended_trigger = None + example_yaml = None else: - recommended_trigger = self.arguments[1] + example_yaml = self.arguments[1] obj = pydoc.locate(objpath) if obj is None: raise Exception(f"Cannot document None: {objpath}") action_definition = Action(obj) - return self.__generate_rst(action_definition, recommended_trigger) - def __generate_rst(self, action_definition: Action, recommended_trigger: Optional[str]): + recommended_trigger = self.options.get("recommended-trigger", None) + + return self.__generate_rst(action_definition, recommended_trigger, example_yaml) + + def __generate_rst(self, action_definition: Action, recommended_trigger: Optional[str], example_yaml: Optional[str]): node = nodes.section() node.document = self.state.document trigger_params = json.loads(self.options.get("trigger-params", "{}")) + if not example_yaml: + example_yaml = generator.generate_example_config(action_definition.func, recommended_trigger, trigger_params) + + self.state.nested_parse(self.content, self.content_offset, node) - example_yaml = generator.generate_example_config(action_definition.func, recommended_trigger, trigger_params) params_cls = action_definition.params_type params_cls_path = "" if params_cls is not None: @@ -256,7 +263,6 @@ def __generate_rst(self, action_definition: Action, recommended_trigger: Optiona reference_label = self.options.get("reference-label", action_definition.action_name) manual_trigger_only = "manual-trigger-only" in self.options - indented_cli_trigger_example = "" if cli_trigger: indented_cli_trigger_example = f"""\ diff --git a/docs/configuration/cluster-misconfigurations.rst b/docs/configuration/cluster-misconfigurations.rst index f3a0fae8e..e64c1c155 100644 --- a/docs/configuration/cluster-misconfigurations.rst +++ b/docs/configuration/cluster-misconfigurations.rst @@ -117,10 +117,10 @@ This error suggests you are running the Popeye image on a different os/arch node Reference ====================================== -.. robusta-action:: playbooks.robusta_playbooks.popeye.popeye_scan on_schedule - +.. robusta-action:: playbooks.robusta_playbooks.popeye.popeye_scan + :recommended-trigger: on_schedule You can trigger a Popeye scan at any time, by running the following command: .. code-block:: bash - robusta playbooks trigger popeye_scan \ No newline at end of file + robusta playbooks trigger popeye_scan diff --git a/docs/configuration/resource-recommender.rst b/docs/configuration/resource-recommender.rst index 1328d9456..10a8313a7 100644 --- a/docs/configuration/resource-recommender.rst +++ b/docs/configuration/resource-recommender.rst @@ -156,7 +156,8 @@ By default, the memory request and limit are set to ``2Gi``. Modify these values Reference ====================================== -.. robusta-action:: playbooks.robusta_playbooks.krr.krr_scan on_schedule +.. robusta-action:: playbooks.robusta_playbooks.krr.krr_scan + :recommended-trigger: on_schedule You can trigger a KRR scan at any time, by running the following command: diff --git a/docs/playbook-reference/actions/change-tracking.rst b/docs/playbook-reference/actions/change-tracking.rst index ac8c90fe6..b3a2a4f76 100644 --- a/docs/playbook-reference/actions/change-tracking.rst +++ b/docs/playbook-reference/actions/change-tracking.rst @@ -3,13 +3,15 @@ Change Tracking These actions were built for tracking changes in your cluster -.. robusta-action:: playbooks.robusta_playbooks.git_change_audit.git_change_audit on_kubernetes_any_resource_all_changes +.. robusta-action:: playbooks.robusta_playbooks.git_change_audit.git_change_audit + :recommended-trigger: on_kubernetes_any_resource_all_changes -.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report on_deployment_update +.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report + :recommended-trigger: on_deployment_update -.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana on_deployment_update +.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana + :recommended-trigger: on_deployment_update :reference-label: change_tracking__add_deployment_lines_to_grafana -.. robusta-action:: playbooks.robusta_playbooks.babysitter.resource_babysitter on_deployment_update - - +.. robusta-action:: playbooks.robusta_playbooks.babysitter.resource_babysitter + :recommended-trigger: on_deployment_update diff --git a/docs/playbook-reference/actions/develop-actions/documenting-actions.rst b/docs/playbook-reference/actions/develop-actions/documenting-actions.rst index 5ca1d909a..3af31d49f 100644 --- a/docs/playbook-reference/actions/develop-actions/documenting-actions.rst +++ b/docs/playbook-reference/actions/develop-actions/documenting-actions.rst @@ -53,7 +53,8 @@ For example: .. code-block:: - .. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana on_deployment_update + .. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana + :recommended-trigger: on_deployment_update You can further customize it by adding parameters to the autogenerated trigger: diff --git a/docs/playbook-reference/actions/event-enrichment.rst b/docs/playbook-reference/actions/event-enrichment.rst index 0ebf83c9b..05dc2a637 100644 --- a/docs/playbook-reference/actions/event-enrichment.rst +++ b/docs/playbook-reference/actions/event-enrichment.rst @@ -29,7 +29,8 @@ Pod Enrichers (General) These actions can add context to any pod-related event, be it from ``on_prometheus_alert`` or ``on_pod_update``. -.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.logs_enricher on_pod_crash_loop +.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.logs_enricher + :recommended-trigger: on_pod_crash_loop .. robusta-action:: playbooks.robusta_playbooks.event_enrichments.pod_events_enricher @@ -58,7 +59,8 @@ They're less general than the above actions, and usually designed for a specific .. deprecated .. .. robusta-action:: playbooks.robusta_playbooks.restart_loop_reporter.restart_loop_reporter -.. robusta-action:: playbooks.robusta_playbooks.oom_killer.pod_oom_killer_enricher on_pod_oom_killed +.. robusta-action:: playbooks.robusta_playbooks.oom_killer.pod_oom_killer_enricher + :recommended-trigger: on_pod_oom_killed .. .. robusta-action:: playbooks.robusta_playbooks.image_pull_backoff_enricher.image_pull_backoff_reporter @@ -128,6 +130,17 @@ These actions enrich Prometheus alerts and only support the :ref:`on_prometheus_ .. robusta-action:: playbooks.robusta_playbooks.alerts_integration.foreign_logs_enricher +.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.alert_foreign_logs_enricher + .. code-block:: yaml + customPlaybooks: + - actions: + - alert_foreign_logs_enricher: + label_selectors: + - "app={{labels.service}}" + - "env=production" + triggers: + - on_prometheus_alert: {} + .. robusta-action:: playbooks.robusta_playbooks.alerts_integration.alert_definition_enricher .. robusta-action:: playbooks.robusta_playbooks.alerts_integration.mention_enricher diff --git a/docs/playbook-reference/actions/grafana.rst b/docs/playbook-reference/actions/grafana.rst index 527366348..89f6f4db4 100644 --- a/docs/playbook-reference/actions/grafana.rst +++ b/docs/playbook-reference/actions/grafana.rst @@ -14,9 +14,11 @@ You will need a Grafana API key with write permissions. Builtin actions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana on_deployment_update +.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana + :recommended-trigger: on_deployment_update .. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_alert_lines_to_grafana -.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report on_deployment_update - :reference-label: change_tracking__deployment_status_report \ No newline at end of file +.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report + :recommended-trigger: on_deployment_update + :reference-label: change_tracking__deployment_status_report diff --git a/docs/playbook-reference/actions/message-formatting.rst b/docs/playbook-reference/actions/message-formatting.rst index fb416da13..503b9569b 100644 --- a/docs/playbook-reference/actions/message-formatting.rst +++ b/docs/playbook-reference/actions/message-formatting.rst @@ -8,11 +8,14 @@ To control where these notifications are sent, refer to :ref:`sinks-overview`. Create finding ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. robusta-action:: playbooks.robusta_playbooks.common_actions.create_finding on_job_failure +.. robusta-action:: playbooks.robusta_playbooks.common_actions.create_finding + :recommended-trigger: on_job_failure -.. robusta-action:: playbooks.robusta_playbooks.event_enrichments.create_event_finding on_event_create +.. robusta-action:: playbooks.robusta_playbooks.event_enrichments.create_event_finding + :recommended-trigger: on_event_create Finding attributes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. robusta-action:: playbooks.robusta_playbooks.common_actions.customise_finding on_pod_crash_loop +.. robusta-action:: playbooks.robusta_playbooks.common_actions.customise_finding + :recommended-trigger: on_pod_crash_loop diff --git a/docs/playbook-reference/actions/miscellaneous.rst b/docs/playbook-reference/actions/miscellaneous.rst index 95cae86e3..a4099fa79 100644 --- a/docs/playbook-reference/actions/miscellaneous.rst +++ b/docs/playbook-reference/actions/miscellaneous.rst @@ -18,7 +18,8 @@ Kubernetes Optimization Backups ------------------- -.. robusta-action:: playbooks.robusta_playbooks.pvc_snapshots.create_pvc_snapshot on_schedule +.. robusta-action:: playbooks.robusta_playbooks.pvc_snapshots.create_pvc_snapshot + :recommended-trigger: on_schedule Stress Testing and Chaos Engineering ------------------------------------ @@ -32,4 +33,4 @@ Stress Testing and Chaos Engineering Adding Slack user/group mentions to k8s/Prometheus events --------------------------------------------------------- -.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.mention_enricher \ No newline at end of file +.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.mention_enricher diff --git a/docs/playbook-reference/actions/remediation.rst b/docs/playbook-reference/actions/remediation.rst index 92a993f53..0402ec802 100644 --- a/docs/playbook-reference/actions/remediation.rst +++ b/docs/playbook-reference/actions/remediation.rst @@ -10,19 +10,26 @@ Robusta includes actions that modify Kubernetes resources in your cluster. See a .. robusta-action:: playbooks.robusta_playbooks.pod_actions.delete_pod -.. robusta-action:: playbooks.robusta_playbooks.job_actions.delete_job on_job_failure +.. robusta-action:: playbooks.robusta_playbooks.job_actions.delete_job + :recommended-trigger: on_job_failure -.. robusta-action:: playbooks.robusta_playbooks.autoscaler.alert_on_hpa_reached_limit on_horizontalpodautoscaler_update +.. robusta-action:: playbooks.robusta_playbooks.autoscaler.alert_on_hpa_reached_limit + :recommended-trigger: on_horizontalpodautoscaler_update -.. robusta-action:: playbooks.robusta_playbooks.workload_actions.rollout_restart on_prometheus_alert +.. robusta-action:: playbooks.robusta_playbooks.workload_actions.rollout_restart + :recommended-trigger: on_prometheus_alert -.. robusta-action:: playbooks.robusta_playbooks.workload_actions.restart_named_rollout on_prometheus_alert +.. robusta-action:: playbooks.robusta_playbooks.workload_actions.restart_named_rollout + :recommended-trigger: on_prometheus_alert Node ***************** -.. robusta-action:: playbooks.robusta_playbooks.node_actions.cordon on_node_create +.. robusta-action:: playbooks.robusta_playbooks.node_actions. + :recommended-trigger: on_node_create -.. robusta-action:: playbooks.robusta_playbooks.node_actions.uncordon on_node_create +.. robusta-action:: playbooks.robusta_playbooks.node_actions.uncordon + :recommended-trigger: on_node_create -.. robusta-action:: playbooks.robusta_playbooks.node_actions.drain on_node_create +.. robusta-action:: playbooks.robusta_playbooks.node_actions.drain + :recommended-trigger: on_node_create diff --git a/playbooks/robusta_playbooks/alerts_integration.py b/playbooks/robusta_playbooks/alerts_integration.py index 2bec6d166..e7e69f1f9 100644 --- a/playbooks/robusta_playbooks/alerts_integration.py +++ b/playbooks/robusta_playbooks/alerts_integration.py @@ -458,6 +458,14 @@ class ForeignLogParams(LogEnricherParams): @action def alert_foreign_logs_enricher(event: PrometheusKubernetesAlert, params: ForeignLogParams): + """ + Prometheus alert enricher to fetch and attach pod logs. + + This action behaves the same as the foreign_logs_enricher. + The logs are fetched for the pod determined by the label selector field in the parameters. + The label selector field can use the format {{labels.XYZ}} to reference any XYZ label present in the Prometheus alert. + + """ params.label_selectors = resolve_selectors(event.labels, params.label_selectors) return foreign_logs_enricher(event, params) diff --git a/playbooks/robusta_playbooks/images/alert_foreign_logs_enricher.png b/playbooks/robusta_playbooks/images/alert_foreign_logs_enricher.png new file mode 100644 index 0000000000000000000000000000000000000000..841a86502915bfbb8ccdcd88f81d14b45275d3fe GIT binary patch literal 148455 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 z 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 literal 0 HcmV?d00001 diff --git a/playbooks/robusta_playbooks/util.py b/playbooks/robusta_playbooks/util.py index 96d101dce..1d18d660b 100644 --- a/playbooks/robusta_playbooks/util.py +++ b/playbooks/robusta_playbooks/util.py @@ -14,7 +14,7 @@ def resolve_selectors(labels:Dict, selectors:List[str]) -> List[str]: """ def replace_label(match): key = match.group(1).strip() - return labels.get(key, '') + return labels.get(key, match.string) resolved_selectors = [re.sub(REGEXP_FIND_SELECTOR, replace_label, selector) for selector in selectors] return resolved_selectors diff --git a/tests/playbooks/test_prometheus_alert_selector.py b/tests/playbooks/test_prometheus_alert_selector.py index f6755aae9..c154c0fef 100644 --- a/tests/playbooks/test_prometheus_alert_selector.py +++ b/tests/playbooks/test_prometheus_alert_selector.py @@ -7,7 +7,7 @@ [ ({}, ["my_selector"], ["my_selector"]), ({"field1": "value1"}, ["{{ labels.field1 }}"], ["value1"]), - ({}, ["{{ labels.field1 }}"], [""]), + ({}, ["{{ labels.field1 }}"], ["{{ labels.field1 }}"]), ({"field_1": "value1"}, ["{{ labels.field_1 }}"], ["value1"]), ({"field-1": "value1"}, ["{{ labels.field-1 }}"], ["value1"]), ( From cc90c53aec2172d0ca8ad62f6e6a9d83e9c10a94 Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Fri, 18 Oct 2024 14:33:34 +0200 Subject: [PATCH 3/9] test: small tweaks to unit test --- tests/playbooks/test_prometheus_alert_selector.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/playbooks/test_prometheus_alert_selector.py b/tests/playbooks/test_prometheus_alert_selector.py index c154c0fef..4e6b91dcf 100644 --- a/tests/playbooks/test_prometheus_alert_selector.py +++ b/tests/playbooks/test_prometheus_alert_selector.py @@ -7,9 +7,9 @@ [ ({}, ["my_selector"], ["my_selector"]), ({"field1": "value1"}, ["{{ labels.field1 }}"], ["value1"]), - ({}, ["{{ labels.field1 }}"], ["{{ labels.field1 }}"]), - ({"field_1": "value1"}, ["{{ labels.field_1 }}"], ["value1"]), - ({"field-1": "value1"}, ["{{ labels.field-1 }}"], ["value1"]), + ({}, ["{{ labels.field_not_found }}"], ["{{ labels.field_not_found }}"]), + ({"field_1": "field_with_underscore"}, ["{{ labels.field_1 }}"], ["field_with_underscore"]), + ({"field-1": "field_with_dash"}, ["{{ labels.field-1 }}"], ["field_with_dash"]), ( {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, ["http://{{ labels.domain}}:{{ labels.port }}{{labels.apiUrl}}"], @@ -17,7 +17,7 @@ ( {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, [ - "http://{{ labels.domain}}:{{ labels.port }}{{labels.apiUrl}}", + "http://{{ labels.domain}}:{{ labels.port}}{{labels.apiUrl}}", "{{ labels.domain}}", "{labels.domain}", "{apiUrl" From ca20e3e6855369c21a1e749ddce14c6bf5019770 Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Fri, 18 Oct 2024 14:41:44 +0200 Subject: [PATCH 4/9] fix: improve selector test and fix incorrect parsing issue --- playbooks/robusta_playbooks/util.py | 2 +- .../test_prometheus_alert_selector.py | 21 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/playbooks/robusta_playbooks/util.py b/playbooks/robusta_playbooks/util.py index 1d18d660b..ee976481c 100644 --- a/playbooks/robusta_playbooks/util.py +++ b/playbooks/robusta_playbooks/util.py @@ -2,7 +2,7 @@ import re from typing import Dict, List -REGEXP_FIND_SELECTOR = r'\{\{\s*labels\.([^\s]+)\s*\}\}' +REGEXP_FIND_SELECTOR = r'\{\{\s*labels\.([^\s\}]+)\s*\}\}' def resolve_selectors(labels:Dict, selectors:List[str]) -> List[str]: """ diff --git a/tests/playbooks/test_prometheus_alert_selector.py b/tests/playbooks/test_prometheus_alert_selector.py index 4e6b91dcf..2f1b8df2d 100644 --- a/tests/playbooks/test_prometheus_alert_selector.py +++ b/tests/playbooks/test_prometheus_alert_selector.py @@ -6,7 +6,11 @@ "labels,input_selectors,expected_resolved_selectors", [ ({}, ["my_selector"], ["my_selector"]), - ({"field1": "value1"}, ["{{ labels.field1 }}"], ["value1"]), + ({"field1": "nominal"}, ["{{ labels.field1 }}"], ["nominal"]), + ({"field1": "no_leading_space"}, ["{{labels.field1 }}"], ["no_leading_space"]), + ({"field1": "no_trailing_space"}, ["{{ labels.field1}}"], ["no_trailing_space"]), + ({"field1": "no_space"}, ["{{labels.field1}}"], ["no_space"]), + ({"field1": "many_spaces"}, ["{{ labels.field1 }}"], ["many_spaces"]), ({}, ["{{ labels.field_not_found }}"], ["{{ labels.field_not_found }}"]), ({"field_1": "field_with_underscore"}, ["{{ labels.field_1 }}"], ["field_with_underscore"]), ({"field-1": "field_with_dash"}, ["{{ labels.field-1 }}"], ["field_with_dash"]), @@ -18,18 +22,19 @@ {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, [ "http://{{ labels.domain}}:{{ labels.port}}{{labels.apiUrl}}", - "{{ labels.domain}}", - "{labels.domain}", - "{apiUrl" + # "{{ labels.domain}}", + # "{labels.domain}", + # "{{apiUrl}}" ], [ "http://localhost:3000/my_api", - "localhost", - "{labels.domain}", - "{apiUrl" + # "localhost", + # "{labels.domain}", + # "{{apiUrl}}" ] ) ], ) def test_clean_up_k8s_logs_from_job_output(labels, input_selectors, expected_resolved_selectors): - assert resolve_selectors(labels, input_selectors) == expected_resolved_selectors + actual = resolve_selectors(labels, input_selectors) + assert actual == expected_resolved_selectors, f"received selectors {str(actual)} but expected {str(expected_resolved_selectors)}" From 513ce459236e1ee6912cf3609bc0c7911c2e4434 Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Fri, 18 Oct 2024 14:42:21 +0200 Subject: [PATCH 5/9] test: reenable commented out tests --- tests/playbooks/test_prometheus_alert_selector.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/playbooks/test_prometheus_alert_selector.py b/tests/playbooks/test_prometheus_alert_selector.py index 2f1b8df2d..29f0b061d 100644 --- a/tests/playbooks/test_prometheus_alert_selector.py +++ b/tests/playbooks/test_prometheus_alert_selector.py @@ -22,15 +22,15 @@ {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, [ "http://{{ labels.domain}}:{{ labels.port}}{{labels.apiUrl}}", - # "{{ labels.domain}}", - # "{labels.domain}", - # "{{apiUrl}}" + "{{ labels.domain}}", + "{labels.domain}", + "{{apiUrl}}" ], [ "http://localhost:3000/my_api", - # "localhost", - # "{labels.domain}", - # "{{apiUrl}}" + "localhost", + "{labels.domain}", + "{{apiUrl}}" ] ) ], From 93d17e73d91d5e9f39f3de16024db872ba0025e1 Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Mon, 21 Oct 2024 12:42:55 +0200 Subject: [PATCH 6/9] chore: refactor locator parsing code --- .../actions/event-enrichment.rst | 2 +- .../robusta_playbooks/alerts_integration.py | 3 +- playbooks/robusta_playbooks/util.py | 20 ---------- .../test_prometheus_alert_selector.py | 40 ------------------- 4 files changed, 3 insertions(+), 62 deletions(-) delete mode 100644 playbooks/robusta_playbooks/util.py delete mode 100644 tests/playbooks/test_prometheus_alert_selector.py diff --git a/docs/playbook-reference/actions/event-enrichment.rst b/docs/playbook-reference/actions/event-enrichment.rst index 05dc2a637..aa3bc3165 100644 --- a/docs/playbook-reference/actions/event-enrichment.rst +++ b/docs/playbook-reference/actions/event-enrichment.rst @@ -136,7 +136,7 @@ These actions enrich Prometheus alerts and only support the :ref:`on_prometheus_ - actions: - alert_foreign_logs_enricher: label_selectors: - - "app={{labels.service}}" + - "app={labels.service}" - "env=production" triggers: - on_prometheus_alert: {} diff --git a/playbooks/robusta_playbooks/alerts_integration.py b/playbooks/robusta_playbooks/alerts_integration.py index e7e69f1f9..b6810a929 100644 --- a/playbooks/robusta_playbooks/alerts_integration.py +++ b/playbooks/robusta_playbooks/alerts_integration.py @@ -466,7 +466,8 @@ def alert_foreign_logs_enricher(event: PrometheusKubernetesAlert, params: Foreig The label selector field can use the format {{labels.XYZ}} to reference any XYZ label present in the Prometheus alert. """ - params.label_selectors = resolve_selectors(event.labels, params.label_selectors) + subject = event.get_subject() + params.label_selectors = [format_event_templated_string(subject, selector) for selector in params.label_selectors] return foreign_logs_enricher(event, params) @action diff --git a/playbooks/robusta_playbooks/util.py b/playbooks/robusta_playbooks/util.py deleted file mode 100644 index ee976481c..000000000 --- a/playbooks/robusta_playbooks/util.py +++ /dev/null @@ -1,20 +0,0 @@ - -import re -from typing import Dict, List - -REGEXP_FIND_SELECTOR = r'\{\{\s*labels\.([^\s\}]+)\s*\}\}' - -def resolve_selectors(labels:Dict, selectors:List[str]) -> List[str]: - """ - Allows referencing of labels inside selectors and returns parsed selectors. - - e.g. - labels={"my_label": "my_value"} - resolve_selectors(labels, ["{{labels.my_label}}"]) => ["my_value"] - """ - def replace_label(match): - key = match.group(1).strip() - return labels.get(key, match.string) - - resolved_selectors = [re.sub(REGEXP_FIND_SELECTOR, replace_label, selector) for selector in selectors] - return resolved_selectors diff --git a/tests/playbooks/test_prometheus_alert_selector.py b/tests/playbooks/test_prometheus_alert_selector.py deleted file mode 100644 index 29f0b061d..000000000 --- a/tests/playbooks/test_prometheus_alert_selector.py +++ /dev/null @@ -1,40 +0,0 @@ - -import pytest -from playbooks.robusta_playbooks.util import resolve_selectors - -@pytest.mark.parametrize( - "labels,input_selectors,expected_resolved_selectors", - [ - ({}, ["my_selector"], ["my_selector"]), - ({"field1": "nominal"}, ["{{ labels.field1 }}"], ["nominal"]), - ({"field1": "no_leading_space"}, ["{{labels.field1 }}"], ["no_leading_space"]), - ({"field1": "no_trailing_space"}, ["{{ labels.field1}}"], ["no_trailing_space"]), - ({"field1": "no_space"}, ["{{labels.field1}}"], ["no_space"]), - ({"field1": "many_spaces"}, ["{{ labels.field1 }}"], ["many_spaces"]), - ({}, ["{{ labels.field_not_found }}"], ["{{ labels.field_not_found }}"]), - ({"field_1": "field_with_underscore"}, ["{{ labels.field_1 }}"], ["field_with_underscore"]), - ({"field-1": "field_with_dash"}, ["{{ labels.field-1 }}"], ["field_with_dash"]), - ( - {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, - ["http://{{ labels.domain}}:{{ labels.port }}{{labels.apiUrl}}"], - ["http://localhost:3000/my_api"]), - ( - {"domain": "localhost", "port": "3000", "apiUrl": "/my_api"}, - [ - "http://{{ labels.domain}}:{{ labels.port}}{{labels.apiUrl}}", - "{{ labels.domain}}", - "{labels.domain}", - "{{apiUrl}}" - ], - [ - "http://localhost:3000/my_api", - "localhost", - "{labels.domain}", - "{{apiUrl}}" - ] - ) - ], -) -def test_clean_up_k8s_logs_from_job_output(labels, input_selectors, expected_resolved_selectors): - actual = resolve_selectors(labels, input_selectors) - assert actual == expected_resolved_selectors, f"received selectors {str(actual)} but expected {str(expected_resolved_selectors)}" From b6202227957f829654185c722e70ef79e0c5e0fd Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Mon, 21 Oct 2024 15:18:14 +0200 Subject: [PATCH 7/9] fix: incorrect import in playbooks and update docs --- docs/playbook-reference/actions/event-enrichment.rst | 8 ++++---- playbooks/robusta_playbooks/alerts_integration.py | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/playbook-reference/actions/event-enrichment.rst b/docs/playbook-reference/actions/event-enrichment.rst index aa3bc3165..799a44404 100644 --- a/docs/playbook-reference/actions/event-enrichment.rst +++ b/docs/playbook-reference/actions/event-enrichment.rst @@ -134,10 +134,10 @@ These actions enrich Prometheus alerts and only support the :ref:`on_prometheus_ .. code-block:: yaml customPlaybooks: - actions: - - alert_foreign_logs_enricher: - label_selectors: - - "app={labels.service}" - - "env=production" + - alert_foreign_logs_enricher: + label_selectors: + - "app=${labels.service}" + - "env=production" triggers: - on_prometheus_alert: {} diff --git a/playbooks/robusta_playbooks/alerts_integration.py b/playbooks/robusta_playbooks/alerts_integration.py index b6810a929..7a5cead75 100644 --- a/playbooks/robusta_playbooks/alerts_integration.py +++ b/playbooks/robusta_playbooks/alerts_integration.py @@ -8,7 +8,6 @@ from hikaru.model.rel_1_26 import Node from kubernetes import client from kubernetes.client import V1Pod, V1PodList, exceptions -from playbooks.robusta_playbooks.util import resolve_selectors from robusta.api import ( ActionException, ActionParams, @@ -463,7 +462,7 @@ def alert_foreign_logs_enricher(event: PrometheusKubernetesAlert, params: Foreig This action behaves the same as the foreign_logs_enricher. The logs are fetched for the pod determined by the label selector field in the parameters. - The label selector field can use the format {{labels.XYZ}} to reference any XYZ label present in the Prometheus alert. + The label selector field can use the format ${labels.XYZ} to reference any XYZ label present in the Prometheus alert. """ subject = event.get_subject() From 27dd7c05d0ef979336ec1cb92e9fdc2dbd2756dd Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Mon, 21 Oct 2024 15:36:02 +0200 Subject: [PATCH 8/9] fix: revert some unnecessary changes to documentation generation --- docs/_ext/autorobusta.py | 18 ++++++---------- .../cluster-misconfigurations.rst | 6 +++--- docs/configuration/resource-recommender.rst | 3 +-- .../actions/change-tracking.rst | 14 ++++++------- .../develop-actions/documenting-actions.rst | 3 +-- .../actions/event-enrichment.rst | 10 +++++---- docs/playbook-reference/actions/grafana.rst | 8 +++---- .../actions/message-formatting.rst | 9 +++----- .../actions/python-troubleshooting.rst | 3 +++ .../actions/remediation.rst | 21 +++++++------------ 10 files changed, 39 insertions(+), 56 deletions(-) diff --git a/docs/_ext/autorobusta.py b/docs/_ext/autorobusta.py index 341fc71ab..20c791761 100644 --- a/docs/_ext/autorobusta.py +++ b/docs/_ext/autorobusta.py @@ -214,7 +214,6 @@ class RobustaActionDirective(SphinxDirective): "reference-label": str, "manual-trigger-only": directives.flag, "trigger-params": str, - "recommended-trigger": str } has_content = True required_arguments = 1 @@ -224,28 +223,22 @@ class RobustaActionDirective(SphinxDirective): def run(self) -> List[Node]: objpath = self.arguments[0] if len(self.arguments) < 2: - example_yaml = None + recommended_trigger = None else: - example_yaml = self.arguments[1] + recommended_trigger = self.arguments[1] obj = pydoc.locate(objpath) if obj is None: raise Exception(f"Cannot document None: {objpath}") action_definition = Action(obj) + return self.__generate_rst(action_definition, recommended_trigger) - recommended_trigger = self.options.get("recommended-trigger", None) - - return self.__generate_rst(action_definition, recommended_trigger, example_yaml) - - def __generate_rst(self, action_definition: Action, recommended_trigger: Optional[str], example_yaml: Optional[str]): + def __generate_rst(self, action_definition: Action, recommended_trigger: Optional[str]): node = nodes.section() node.document = self.state.document trigger_params = json.loads(self.options.get("trigger-params", "{}")) - if not example_yaml: - example_yaml = generator.generate_example_config(action_definition.func, recommended_trigger, trigger_params) - - self.state.nested_parse(self.content, self.content_offset, node) + example_yaml = generator.generate_example_config(action_definition.func, recommended_trigger, trigger_params) params_cls = action_definition.params_type params_cls_path = "" if params_cls is not None: @@ -263,6 +256,7 @@ def __generate_rst(self, action_definition: Action, recommended_trigger: Optiona reference_label = self.options.get("reference-label", action_definition.action_name) manual_trigger_only = "manual-trigger-only" in self.options + indented_cli_trigger_example = "" if cli_trigger: indented_cli_trigger_example = f"""\ diff --git a/docs/configuration/cluster-misconfigurations.rst b/docs/configuration/cluster-misconfigurations.rst index e64c1c155..f3a0fae8e 100644 --- a/docs/configuration/cluster-misconfigurations.rst +++ b/docs/configuration/cluster-misconfigurations.rst @@ -117,10 +117,10 @@ This error suggests you are running the Popeye image on a different os/arch node Reference ====================================== -.. robusta-action:: playbooks.robusta_playbooks.popeye.popeye_scan - :recommended-trigger: on_schedule +.. robusta-action:: playbooks.robusta_playbooks.popeye.popeye_scan on_schedule + You can trigger a Popeye scan at any time, by running the following command: .. code-block:: bash - robusta playbooks trigger popeye_scan + robusta playbooks trigger popeye_scan \ No newline at end of file diff --git a/docs/configuration/resource-recommender.rst b/docs/configuration/resource-recommender.rst index 10a8313a7..1328d9456 100644 --- a/docs/configuration/resource-recommender.rst +++ b/docs/configuration/resource-recommender.rst @@ -156,8 +156,7 @@ By default, the memory request and limit are set to ``2Gi``. Modify these values Reference ====================================== -.. robusta-action:: playbooks.robusta_playbooks.krr.krr_scan - :recommended-trigger: on_schedule +.. robusta-action:: playbooks.robusta_playbooks.krr.krr_scan on_schedule You can trigger a KRR scan at any time, by running the following command: diff --git a/docs/playbook-reference/actions/change-tracking.rst b/docs/playbook-reference/actions/change-tracking.rst index b3a2a4f76..ac8c90fe6 100644 --- a/docs/playbook-reference/actions/change-tracking.rst +++ b/docs/playbook-reference/actions/change-tracking.rst @@ -3,15 +3,13 @@ Change Tracking These actions were built for tracking changes in your cluster -.. robusta-action:: playbooks.robusta_playbooks.git_change_audit.git_change_audit - :recommended-trigger: on_kubernetes_any_resource_all_changes +.. robusta-action:: playbooks.robusta_playbooks.git_change_audit.git_change_audit on_kubernetes_any_resource_all_changes -.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report - :recommended-trigger: on_deployment_update +.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report on_deployment_update -.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana - :recommended-trigger: on_deployment_update +.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana on_deployment_update :reference-label: change_tracking__add_deployment_lines_to_grafana -.. robusta-action:: playbooks.robusta_playbooks.babysitter.resource_babysitter - :recommended-trigger: on_deployment_update +.. robusta-action:: playbooks.robusta_playbooks.babysitter.resource_babysitter on_deployment_update + + diff --git a/docs/playbook-reference/actions/develop-actions/documenting-actions.rst b/docs/playbook-reference/actions/develop-actions/documenting-actions.rst index 3af31d49f..5ca1d909a 100644 --- a/docs/playbook-reference/actions/develop-actions/documenting-actions.rst +++ b/docs/playbook-reference/actions/develop-actions/documenting-actions.rst @@ -53,8 +53,7 @@ For example: .. code-block:: - .. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana - :recommended-trigger: on_deployment_update + .. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana on_deployment_update You can further customize it by adding parameters to the autogenerated trigger: diff --git a/docs/playbook-reference/actions/event-enrichment.rst b/docs/playbook-reference/actions/event-enrichment.rst index 799a44404..72d92c415 100644 --- a/docs/playbook-reference/actions/event-enrichment.rst +++ b/docs/playbook-reference/actions/event-enrichment.rst @@ -29,8 +29,7 @@ Pod Enrichers (General) These actions can add context to any pod-related event, be it from ``on_prometheus_alert`` or ``on_pod_update``. -.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.logs_enricher - :recommended-trigger: on_pod_crash_loop +.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.logs_enricher on_pod_crash_loop .. robusta-action:: playbooks.robusta_playbooks.event_enrichments.pod_events_enricher @@ -59,8 +58,7 @@ They're less general than the above actions, and usually designed for a specific .. deprecated .. .. robusta-action:: playbooks.robusta_playbooks.restart_loop_reporter.restart_loop_reporter -.. robusta-action:: playbooks.robusta_playbooks.oom_killer.pod_oom_killer_enricher - :recommended-trigger: on_pod_oom_killed +.. robusta-action:: playbooks.robusta_playbooks.oom_killer.pod_oom_killer_enricher on_pod_oom_killed .. .. robusta-action:: playbooks.robusta_playbooks.image_pull_backoff_enricher.image_pull_backoff_reporter @@ -131,7 +129,11 @@ These actions enrich Prometheus alerts and only support the :ref:`on_prometheus_ .. robusta-action:: playbooks.robusta_playbooks.alerts_integration.foreign_logs_enricher .. robusta-action:: playbooks.robusta_playbooks.alerts_integration.alert_foreign_logs_enricher + + Here is an example using a dynamic selector that depends on the alert's labels + .. code-block:: yaml + customPlaybooks: - actions: - alert_foreign_logs_enricher: diff --git a/docs/playbook-reference/actions/grafana.rst b/docs/playbook-reference/actions/grafana.rst index 89f6f4db4..527366348 100644 --- a/docs/playbook-reference/actions/grafana.rst +++ b/docs/playbook-reference/actions/grafana.rst @@ -14,11 +14,9 @@ You will need a Grafana API key with write permissions. Builtin actions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana - :recommended-trigger: on_deployment_update +.. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_deployment_lines_to_grafana on_deployment_update .. robusta-action:: playbooks.robusta_playbooks.grafana_enrichment.add_alert_lines_to_grafana -.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report - :recommended-trigger: on_deployment_update - :reference-label: change_tracking__deployment_status_report +.. robusta-action:: playbooks.robusta_playbooks.deployment_status_report.deployment_status_report on_deployment_update + :reference-label: change_tracking__deployment_status_report \ No newline at end of file diff --git a/docs/playbook-reference/actions/message-formatting.rst b/docs/playbook-reference/actions/message-formatting.rst index 503b9569b..fb416da13 100644 --- a/docs/playbook-reference/actions/message-formatting.rst +++ b/docs/playbook-reference/actions/message-formatting.rst @@ -8,14 +8,11 @@ To control where these notifications are sent, refer to :ref:`sinks-overview`. Create finding ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. robusta-action:: playbooks.robusta_playbooks.common_actions.create_finding - :recommended-trigger: on_job_failure +.. robusta-action:: playbooks.robusta_playbooks.common_actions.create_finding on_job_failure -.. robusta-action:: playbooks.robusta_playbooks.event_enrichments.create_event_finding - :recommended-trigger: on_event_create +.. robusta-action:: playbooks.robusta_playbooks.event_enrichments.create_event_finding on_event_create Finding attributes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. robusta-action:: playbooks.robusta_playbooks.common_actions.customise_finding - :recommended-trigger: on_pod_crash_loop +.. robusta-action:: playbooks.robusta_playbooks.common_actions.customise_finding on_pod_crash_loop diff --git a/docs/playbook-reference/actions/python-troubleshooting.rst b/docs/playbook-reference/actions/python-troubleshooting.rst index cb80a9cef..0e5925f20 100644 --- a/docs/playbook-reference/actions/python-troubleshooting.rst +++ b/docs/playbook-reference/actions/python-troubleshooting.rst @@ -14,6 +14,7 @@ These actions can be triggered automatically on Prometheus alerts, or :ref:`manu This action has been deprecated. To enable it add the following to your generated_values.yaml .. code-block:: bash + runner: additional_env_vars: - name: PYTHON_DEBUGGER_IMAGE @@ -24,6 +25,7 @@ These actions can be triggered automatically on Prometheus alerts, or :ref:`manu This action has been deprecated. To enable it add the following to your generated_values.yaml .. code-block:: bash + runner: additional_env_vars: - name: PYTHON_DEBUGGER_IMAGE @@ -40,6 +42,7 @@ These actions can be triggered automatically on Prometheus alerts, or :ref:`manu This action has been deprecated. To enable it add the following to your generated_values.yaml .. code-block:: bash + runner: additional_env_vars: - name: PYTHON_DEBUGGER_IMAGE diff --git a/docs/playbook-reference/actions/remediation.rst b/docs/playbook-reference/actions/remediation.rst index 0402ec802..92a993f53 100644 --- a/docs/playbook-reference/actions/remediation.rst +++ b/docs/playbook-reference/actions/remediation.rst @@ -10,26 +10,19 @@ Robusta includes actions that modify Kubernetes resources in your cluster. See a .. robusta-action:: playbooks.robusta_playbooks.pod_actions.delete_pod -.. robusta-action:: playbooks.robusta_playbooks.job_actions.delete_job - :recommended-trigger: on_job_failure +.. robusta-action:: playbooks.robusta_playbooks.job_actions.delete_job on_job_failure -.. robusta-action:: playbooks.robusta_playbooks.autoscaler.alert_on_hpa_reached_limit - :recommended-trigger: on_horizontalpodautoscaler_update +.. robusta-action:: playbooks.robusta_playbooks.autoscaler.alert_on_hpa_reached_limit on_horizontalpodautoscaler_update -.. robusta-action:: playbooks.robusta_playbooks.workload_actions.rollout_restart - :recommended-trigger: on_prometheus_alert +.. robusta-action:: playbooks.robusta_playbooks.workload_actions.rollout_restart on_prometheus_alert -.. robusta-action:: playbooks.robusta_playbooks.workload_actions.restart_named_rollout - :recommended-trigger: on_prometheus_alert +.. robusta-action:: playbooks.robusta_playbooks.workload_actions.restart_named_rollout on_prometheus_alert Node ***************** -.. robusta-action:: playbooks.robusta_playbooks.node_actions. - :recommended-trigger: on_node_create +.. robusta-action:: playbooks.robusta_playbooks.node_actions.cordon on_node_create -.. robusta-action:: playbooks.robusta_playbooks.node_actions.uncordon - :recommended-trigger: on_node_create +.. robusta-action:: playbooks.robusta_playbooks.node_actions.uncordon on_node_create -.. robusta-action:: playbooks.robusta_playbooks.node_actions.drain - :recommended-trigger: on_node_create +.. robusta-action:: playbooks.robusta_playbooks.node_actions.drain on_node_create From 95d1c8a957439e0f60be1a64215704cd32bae73c Mon Sep 17 00:00:00 2001 From: Nicolas Herment Date: Mon, 21 Oct 2024 15:40:22 +0200 Subject: [PATCH 9/9] fix: restore unechanged files --- docs/playbook-reference/actions/miscellaneous.rst | 5 ++--- docs/playbook-reference/actions/python-troubleshooting.rst | 3 --- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/playbook-reference/actions/miscellaneous.rst b/docs/playbook-reference/actions/miscellaneous.rst index a4099fa79..95cae86e3 100644 --- a/docs/playbook-reference/actions/miscellaneous.rst +++ b/docs/playbook-reference/actions/miscellaneous.rst @@ -18,8 +18,7 @@ Kubernetes Optimization Backups ------------------- -.. robusta-action:: playbooks.robusta_playbooks.pvc_snapshots.create_pvc_snapshot - :recommended-trigger: on_schedule +.. robusta-action:: playbooks.robusta_playbooks.pvc_snapshots.create_pvc_snapshot on_schedule Stress Testing and Chaos Engineering ------------------------------------ @@ -33,4 +32,4 @@ Stress Testing and Chaos Engineering Adding Slack user/group mentions to k8s/Prometheus events --------------------------------------------------------- -.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.mention_enricher +.. robusta-action:: playbooks.robusta_playbooks.alerts_integration.mention_enricher \ No newline at end of file diff --git a/docs/playbook-reference/actions/python-troubleshooting.rst b/docs/playbook-reference/actions/python-troubleshooting.rst index 0e5925f20..cb80a9cef 100644 --- a/docs/playbook-reference/actions/python-troubleshooting.rst +++ b/docs/playbook-reference/actions/python-troubleshooting.rst @@ -14,7 +14,6 @@ These actions can be triggered automatically on Prometheus alerts, or :ref:`manu This action has been deprecated. To enable it add the following to your generated_values.yaml .. code-block:: bash - runner: additional_env_vars: - name: PYTHON_DEBUGGER_IMAGE @@ -25,7 +24,6 @@ These actions can be triggered automatically on Prometheus alerts, or :ref:`manu This action has been deprecated. To enable it add the following to your generated_values.yaml .. code-block:: bash - runner: additional_env_vars: - name: PYTHON_DEBUGGER_IMAGE @@ -42,7 +40,6 @@ These actions can be triggered automatically on Prometheus alerts, or :ref:`manu This action has been deprecated. To enable it add the following to your generated_values.yaml .. code-block:: bash - runner: additional_env_vars: - name: PYTHON_DEBUGGER_IMAGE