Skip to content

Commit b974846

Browse files
authored
Merge branch 'master' into webhook-sink-json-formatting
2 parents 83906bc + 11c8816 commit b974846

54 files changed

Lines changed: 526 additions & 1004 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/conf.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,11 @@
7171
"developer-guide/actions/findings-api.html": "/master/playbook-reference/actions/develop-actions/findings-api.html",
7272
"tutorials/my-first-custom-action.html": "/master/playbook-reference/actions/develop-actions/index.html",
7373
"user-guide/self-hosting.html": "/master/how-it-works/oss-vs-saas.html",
74-
"getting-started/installation.html": "/master/setup-robusta/installation/all-in-one-installation.html",
74+
"getting-started/installation.html": "/master/setup-robusta/installation/index.html",
75+
"setup-robusta/installation/all-in-one-installation.html": "/master/setup-robusta/installation/index.html",
76+
"setup-robusta/installation/standalone-installation.html": "/master/setup-robusta/installation/index.html",
77+
"setup-robusta/installation/dev-setup.html": "/master/help.html",
78+
"setup-robusta/supported-clusters.html": "/master/setup-robusta/installation/index.html",
7579
"tutorials/java-troubleshooting.html": "/master/tutorials/application-troubleshooting-java.html",
7680
"catalog/sinks/index.html": "/master/configuration/sinks/index.html",
7781
"tutorials/prometheus-enrichment.html": "/master/tutorials/alert-custom-enrichment.html",
@@ -97,7 +101,8 @@
97101
"configuration/defining-playbooks/playbook-basics.html": "/master/playbook-reference/index.html",
98102
"configuration/defining-playbooks/trigger-action-binding.html": "/master/playbook-reference/index.html#matching-actions-to-triggers",
99103
"playbook-reference/defining-playbooks/trigger-action-binding.html": "/master/playbook-reference/index.html#matching-actions-to-triggers",
100-
"configuration/additional-settings.html": "/master/setup-robusta/additional-settings.html",
104+
"configuration/additional-settings.html": "/master/setup-robusta/installation/index.html",
105+
"setup-robusta/additional-settings.html": "/master/setup-robusta/installation/index.html",
101106
"developer-guide/writing-playbooks.html": "/master/playbook-reference/defining-playbooks/index.html",
102107
"user-guide/slack.html": "/master/configuration/sinks/slack.html",
103108
"user-guide/elasticsearch.html": "/master/playbook-reference/triggers/elasticsearch.html",
@@ -130,8 +135,11 @@
130135
"tutorials/alert-custom-prometheus.html": "/master/configuration/alertmanager-integration/alert-custom-prometheus.html",
131136
"catalog/triggers/prometheus.html": "/master/configuration/alertmanager-integration/index.html",
132137
"playbook-reference/prometheus-examples/alert-remediation.html": "/master/playbook-reference/automatic-remediation-examples/index.html",
133-
"configuration/ai-analysis.html": "/master/configuration/holmesgpt/main-features.html",
134-
"configuration/holmesgpt/index.html": "/master/configuration/holmesgpt/main-features.html",
138+
"configuration/ai-analysis.html": "https://robusta.dev/",
139+
"configuration/holmesgpt/index.html": "https://robusta.dev/",
140+
"configuration/holmesgpt/main-features.html": "https://robusta.dev/",
141+
"configuration/holmesgpt/getting-started.html": "https://robusta.dev/",
142+
"configuration/holmesgpt/holmesgpt-docs.html": "https://robusta.dev/",
135143
# AI Analysis pages redirects to holmesgpt.dev (docs have moved there)
136144
"configuration/holmesgpt/builtin_toolsets.html": "https://holmesgpt.dev/data-sources/builtin-toolsets/?tab=robusta-helm-chart",
137145
"configuration/holmesgpt/permissions.html": "https://holmesgpt.dev/data-sources/permissions/?tab=robusta-helm-chart",
@@ -164,12 +172,12 @@
164172
"tutorials/more-tutorials.html": "/master/help.html",
165173
"common-errors.html": "/master/help.html#common-errors",
166174
"user-guide/defining-playbooks.html": "/master/playbook-reference/defining-playbooks/index.html",
167-
"user-guide/global-config.html": "/master/setup-robusta/additional-settings.html#global-config",
175+
"user-guide/global-config.html": "/master/setup-robusta/installation/index.html",
168176
"user-guide/configuration-secrets.html": "master/setup-robusta/configuration-secrets.html",
169177
"user-guide/additional-playbooks.html": "/master/playbook-reference/defining-playbooks/external-playbook-repositories.html",
170178
"user-guide/embedded-prometheus.html": "/master/configuration/alertmanager-integration/embedded-prometheus.html#enabling-the-embedded-prometheus",
171179
"user-guide/node-selector.html": "/master/setup-robusta/node-selector.html",
172-
"user-guide/interactivity.html": "/master/setup-robusta/additional-settings.html#two-way-interactivity",
180+
"user-guide/interactivity.html": "/master/setup-robusta/installation/index.html",
173181
"user-guide/flow-control.html": "/master/playbook-reference/index.html#using-filters-to-restrict-triggers",
174182
"catalog/triggers/index.html": "/master/playbook-reference/triggers/index.html",
175183
"catalog/triggers/kubernetes.html": "/master/playbook-reference/triggers/kubernetes.html",
@@ -216,7 +224,7 @@
216224
"playbook-reference/overview.html": "/master/playbook-reference/index.html",
217225
"playbook-reference/defining-playbooks/playbook-basics.html": "/master/playbook-reference/index.html",
218226
"how-it-works/alert-builtin-enrichment.html": "/master/playbook-reference/builtin-alert-enrichment.html",
219-
"setup-robusta/installation/extend-prometheus-installation.html": "/master/setup-robusta/installation/standalone-installation.html",
227+
"setup-robusta/installation/extend-prometheus-installation.html": "/master/setup-robusta/installation/index.html",
220228
"playbook-reference/defining-playbooks/index.html": "/master/playbook-reference/index.html",
221229
"configuration/alertmanager-integration/alert-custom-prometheus.html": "/master/configuration/alertmanager-integration/embedded-prometheus.html#creating-custom-prometheus-alerts",
222230
"configuration/alertmanager-integration/index.html": "/master/configuration/index.html",

docs/configuration/alertmanager-integration/_testing_integration.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,4 @@ If everything is setup properly, this alert will reach Robusta. It will show up
5656

5757
Robusta enriches alerts with Kubernetes and log data using Prometheus labels for mapping.
5858
Standard label names are used by default. If your setup differs, you can
59-
`customize this mapping </setup-robusta/additional-settings.html#alert-label-mapping>`_ to fit your environment.
59+
`customize this mapping </configuration/alertmanager-integration/customize-labels-priorities.html>`_ to fit your environment.

docs/configuration/exporting/robusta-pro-features.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ Data Export and Reporting
1919
* :doc:`Alert Reporting API <alert-statistics-api>`: Get aggregated statistics and counts for different alert types
2020
* :doc:`Send Alerts API <send-alerts-api>`: Send alerts programmatically from external systems
2121
* :doc:`Configuration Changes API <configuration-changes-api>`: Track configuration changes in your environment
22-
* :doc:`Namespace Resources API <namespace-resources-api>`: Query namespace-level resource information
2322
* :doc:`RBAC Configuration API <rbac-api>`: Programmatically manage role-based access control configurations
24-
* :doc:`Prometheus Query API <prometheus-query-api>`: Run PromQL queries against Prometheus in your connected clusters
2523

2624
Getting Started
2725
---------------

docs/configuration/exporting/send-alerts-api.rst

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,12 @@
11
Send Alerts API
22
===============
33

4-
Why Send Your Alerts to Robusta?
5-
---------------------------------
6-
7-
Benefits include:
8-
9-
* Persistent alert history on a filterable timeline
10-
* Centralized view of alerts from all your monitoring systems (multiple Prometheus instances, cloud services, custom tools)
11-
* AI investigation of alerts
12-
* Correlations between alerts and Kubernetes deploys
13-
* and more!
14-
15-
.. image:: /images/robusta-ui-timeline.png
16-
:alt: Prometheus Alert History
4+
Send alerts to Robusta to have HolmesGPT automatically run an AI-powered root cause analysis on each one. HolmesGPT investigates the alert against your live cluster state, logs, metrics, and connected data sources, then attaches its findings to help accelerate triage.
175

186
Integration Methods
197
-------------------
208

21-
There are two main ways to send alerts to Robusta:
9+
There are two main ways to send alerts to Robusta for HolmesGPT to investigate:
2210

2311
1. **Pre-built Integrations**: Use our existing integrations for AlertManager, Nagios, SolarWinds, and other monitoring systems. See :doc:`Send Alerts <../index>`.
2412

@@ -27,9 +15,6 @@ There are two main ways to send alerts to Robusta:
2715
Send Alerts API
2816
---------------
2917

30-
.. note::
31-
This API is available with the Robusta SaaS platform and self-hosted commercial plans. It is not available in the open-source version.
32-
3318
Use this endpoint to send alert data to Robusta. You can send up to 1000 alerts in a single request.
3419

3520
.. _send-alerts-api:
@@ -261,7 +246,7 @@ Troubleshooting
261246

262247
**Alerts arriving but missing Kubernetes context?**
263248

264-
Check :doc:`Alert Label Mapping </setup-robusta/additional-settings>` to customize how Prometheus labels map to Kubernetes resources.
249+
Check :doc:`Customize Labels and Priorities </configuration/alertmanager-integration/customize-labels-priorities>` to customize how Prometheus labels map to Kubernetes resources.
265250

266251
Testing Your Integration
267252
------------------------
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
HolmesGPT PR Review
2+
===================
3+
4+
.. note::
5+
This integration is available with the Robusta SaaS platform and self-hosted commercial plans. It is not available in the open-source version.
6+
7+
Use HolmesGPT as a GitHub Action to automatically review pull requests. On every PR open, reopen, or push, the action asks HolmesGPT to review the change and post its review as a comment on the pull request. You control what Holmes checks by editing the prompt — it can flag risky changes, check code against runbooks, cross-reference logs or metrics, or run any investigation available via its :doc:`data sources <../holmesgpt/main-features>`.
8+
9+
Example review posted by HolmesGPT on a pull request:
10+
11+
.. image:: /images/holmes-pr-review-example.png
12+
:width: 700
13+
:align: center
14+
15+
How It Works
16+
------------
17+
18+
1. A pull request event triggers the GitHub Action.
19+
2. The action calls the :ref:`Holmes Chat API <holmes-chat-api>` with your review prompt and the PR URL.
20+
3. HolmesGPT uses the GitHub toolset to read the pull request, reason about it using the data sources you have configured, and post its review as a comment on the PR.
21+
22+
Prerequisites
23+
-------------
24+
25+
Before setting up the action, you must enable the Holmes GitHub integration so HolmesGPT can read pull requests and post comments. Follow the `HolmesGPT GitHub toolset guide <https://holmesgpt.dev/latest/data-sources/builtin-toolsets/github-mcp/>`_.
26+
27+
Setup
28+
-----
29+
30+
Step 1: Create a Robusta API Key
31+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
32+
33+
In the Robusta Platform, navigate to **Settings** → **API Keys** and click **New API Key**.
34+
35+
Give the key a descriptive name (for example, ``HolmesGPT github action``) and check the **Robusta AI Write** capability. Click **Generate API Key** and copy the key — you will not be able to view it again.
36+
37+
.. image:: /images/new-api-key.png
38+
:width: 600
39+
:align: center
40+
41+
Step 2: Get Your Account ID and Cluster ID
42+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
43+
44+
In the Robusta Platform, navigate to **Settings** → **Workspace** and copy your **Account ID**.
45+
46+
Then pick the cluster HolmesGPT should run the investigation on and copy its **Cluster ID**. Any cluster connected to your account can be used — HolmesGPT will use its data sources (logs, metrics, Kubernetes state, etc.) from that cluster when reviewing the PR.
47+
48+
Step 3: Add GitHub Secrets
49+
^^^^^^^^^^^^^^^^^^^^^^^^^^
50+
51+
In your GitHub repository, go to **Settings** → **Secrets and variables** → **Actions** and add the following repository secrets:
52+
53+
.. list-table::
54+
:widths: 25 75
55+
:header-rows: 1
56+
:width: 100%
57+
58+
* - Secret
59+
- Value
60+
* - ``ROBUSTA_API_KEY``
61+
- The API key you generated in Step 1.
62+
* - ``ROBUSTA_ACCOUNT_ID``
63+
- The account ID from Step 2.
64+
* - ``ROBUSTA_CLUSTER_ID``
65+
- The cluster ID from Step 2.
66+
67+
Step 4: Add the Workflow File
68+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
69+
70+
Create a new file in your repository at ``.github/workflows/holmes-pr-review.yaml`` with the following contents:
71+
72+
.. code-block:: yaml
73+
74+
name: Holmes PR review
75+
on:
76+
pull_request:
77+
types: [opened, synchronize, reopened]
78+
jobs:
79+
review:
80+
runs-on: ubuntu-latest
81+
env:
82+
RELAY_BASE_URL: https://api.robusta.dev
83+
ACCOUNT_ID: ${{ secrets.ROBUSTA_ACCOUNT_ID }}
84+
API_KEY: ${{ secrets.ROBUSTA_API_KEY }}
85+
CLUSTER_ID: ${{ secrets.ROBUSTA_CLUSTER_ID }}
86+
PR_URL: ${{ github.event.pull_request.html_url }}
87+
PROMPT: |
88+
Review the pull request at the URL below. Flag risky, unclear, or
89+
incomplete changes. You MUST post your review as a single PR comment
90+
on that pull request using your GitHub toolset. Do not reply with the
91+
review in chat only — posting the comment is required.
92+
steps:
93+
- name: Ask Holmes (Holmes posts the comment)
94+
run: |
95+
set -euo pipefail
96+
jq -n \
97+
--arg ask "$PROMPT"$'\n\nPull request: '"$PR_URL" \
98+
--arg cluster "$CLUSTER_ID" \
99+
'{ask: $ask, cluster_id: $cluster, stream: false}' > body.json
100+
curl -fsS --retry 2 \
101+
-H "Authorization: Bearer $API_KEY" \
102+
-H "Content-Type: application/json" \
103+
--data-binary @body.json \
104+
"$RELAY_BASE_URL/api/holmes/$ACCOUNT_ID/chat" > response.json
105+
# Log analysis for debugging; Holmes is expected to have posted the comment.
106+
jq -r '.analysis // "(no analysis text returned)"' response.json
107+
108+
Commit and push the workflow file. The next pull request opened against the repository will trigger the action, and HolmesGPT will post its review as a PR comment.
109+
110+
Customizing the Review Prompt
111+
-----------------------------
112+
113+
The ``PROMPT`` environment variable controls what HolmesGPT checks. Edit it to match your team's review policy. For example:
114+
115+
* Enforce coding standards or architecture rules.
116+
* Cross-reference the change against runbooks, incident history, or documentation in Confluence/Notion.
117+
* Validate that related Kubernetes manifests, Helm values, or Prometheus alert rules are consistent with the code changes.
118+
* Require that PRs changing specific paths include tests.
119+
120+
Whatever you put in the prompt, keep the instruction to post the review as a PR comment — otherwise Holmes will return the review only in the API response.
121+
122+
Configuration Reference
123+
-----------------------
124+
125+
The action calls the :ref:`Holmes Chat API <holmes-chat-api>`. Any parameter supported by that endpoint (for example, ``model`` or ``additional_system_prompt``) can be added to the JSON body in the workflow.
126+
127+
Troubleshooting
128+
---------------
129+
130+
No comment appears on the PR
131+
Check the action logs. The final step prints the ``analysis`` field returned by the API — if it contains a review but no comment was posted, the GitHub integration is not enabled for HolmesGPT. Re-check the `GitHub toolset guide <https://holmesgpt.dev/latest/data-sources/builtin-toolsets/github-mcp/>`_.
132+
133+
``401 Unauthorized``
134+
The ``ROBUSTA_API_KEY`` secret is missing, invalid, or lacks the **Robusta AI Write** capability. Regenerate the key in the Robusta Platform.
135+
136+
``404 Not Found`` or cluster errors
137+
The ``ROBUSTA_CLUSTER_ID`` secret does not match a cluster connected to your account. Copy the cluster ID from the Robusta Platform again.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
GitHub Actions
2+
==============
3+
4+
.. note::
5+
These integrations are available with the Robusta SaaS platform and self-hosted commercial plans. They are not available in the open-source version.
6+
7+
Run HolmesGPT inside your GitHub workflows to automate code review and investigation directly from GitHub events.
8+
9+
Available Actions
10+
-----------------
11+
12+
* :doc:`HolmesGPT PR Review <holmes-pr-review>`: Automatically review pull requests with HolmesGPT and post the review as a PR comment.

docs/configuration/holmesgpt/getting-started.rst

Lines changed: 0 additions & 70 deletions
This file was deleted.

docs/configuration/holmesgpt/holmesgpt-docs.rst

Lines changed: 0 additions & 6 deletions
This file was deleted.

docs/configuration/holmesgpt/main-features.rst

Lines changed: 0 additions & 17 deletions
This file was deleted.

docs/configuration/metric-providers-external.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,5 +185,5 @@ Next Steps
185185
----------
186186

187187
- Configure :doc:`alert routing </notification-routing/index>`
188-
- Set up :doc:`AI-powered insights </configuration/holmesgpt/getting-started>`
188+
- `Set up AI-powered insights <https://platform.robusta.dev/signup>`_
189189
- Learn about :doc:`common configuration options <metric-providers>`

0 commit comments

Comments
 (0)