Skip to content

Commit c799547

Browse files
committed
Add missing fields for Opsgenie integration
Signed-off-by: Przemysław Frankiewicz <[email protected]>
1 parent 261728a commit c799547

File tree

4 files changed

+461
-59
lines changed

4 files changed

+461
-59
lines changed

Untitled-1.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Added missing fields to the Opsgenie, so that now it's possible to properly set most of the fields. Also, with this PR, the issue #62 could be closed and #329 would be superseded.
2+
If the changes from #329 are preferred, I can rebase/cherry-pick them.
3+
Added fields:
4+
- actions: Custom actions that will be available for the alert.
5+
- tags: Tags of the alert.
6+
- visibleTo: Teams and users that the alert will become visible to without sending any notification.
7+
- details: Map of key-value pairs to use as custom properties of the alert.
8+
- entity: Entity field of the alert that is generally used to specify which domain the alert is related to.
9+
- user: Display name of the request owner.

docs/services/opsgenie.md

Lines changed: 50 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,34 @@
22

33
To be able to send notifications with argocd-notifications you have to create an [API Integration](https://docs.opsgenie.com/docs/integrations-overview) inside your [Opsgenie Team](https://docs.opsgenie.com/docs/teams).
44

5-
1. Login to Opsgenie at https://app.opsgenie.com or https://app.eu.opsgenie.com (if you have an account in the european union)
6-
2. Make sure you already have a team, if not follow this guide https://docs.opsgenie.com/docs/teams
7-
3. Click "Teams" in the Menu on the left
8-
4. Select the team that you want to notify
9-
5. In the teams configuration menu select "Integrations"
10-
6. Click "Add Integration" in the top right corner
11-
7. Select "API" integration
12-
8. Give your integration a name, copy the "API key" and safe it somewhere for later
13-
9. Click "Edit" in the integration settings
14-
10. Make sure the checkbox for "Create and Update Access" is selected, disable the other checkboxes to remove unnecessary permissions
15-
11. Click "Save" at the bottom
16-
12. Click "Turn on integration" in the top right corner
17-
13. Check your browser for the correct server apiURL. If it is "app.opsgenie.com" then use the US/international api url `api.opsgenie.com` in the next step, otherwise use `api.eu.opsgenie.com` (European API).
18-
14. You are finished with configuring Opsgenie. Now you need to configure argocd-notifications. Use the apiUrl, the team name and the apiKey to configure the Opsgenie integration in the `argocd-notifications-secret` secret.
19-
15. You can find the example `argocd-notifications-cm` configuration at the below.
5+
1. Login to Opsgenie at https://app.opsgenie.com or https://app.eu.opsgenie.com (if you have an account in the European Union).
6+
2. Make sure you already have a team; if not, follow this guide: https://docs.opsgenie.com/docs/teams.
7+
3. Click "Teams" in the Menu on the left.
8+
4. Select the team that you want to notify.
9+
5. In the team's configuration menu, select "Integrations".
10+
6. Click "Add Integration" in the top right corner.
11+
7. Select "API" integration.
12+
8. Give your integration a name, copy the "API key", and save it somewhere for later.
13+
9. Click "Edit" in the integration settings.
14+
10. Make sure the checkbox for "Create and Update Access" is selected; disable the other checkboxes to remove unnecessary permissions.
15+
11. Click "Save" at the bottom.
16+
12. Click "Turn on integration" in the top right corner.
17+
13. Check your browser for the correct server apiURL. If it is "app.opsgenie.com", then use the US/international API URL `api.opsgenie.com`; otherwise, use `api.eu.opsgenie.com` (European API).
18+
14. You are finished with configuring Opsgenie. Now you need to configure argocd-notifications. Use the apiUrl, the team name, and the apiKey to configure the Opsgenie integration in the `argocd-notifications-secret` secret.
19+
15. You can find the example `argocd-notifications-cm` configuration below.
2020

2121
| **Option** | **Required** | **Type** | **Description** | **Example** |
2222
| ------------- | ------------ | -------- | -------------------------------------------------------------------------------------------------------- | -------------------------------- |
23-
| `description` | True | `string` | Description field of the alert that is generally used to provide a detailed information about the alert. | `Hello from Argo CD!` |
24-
| `priority` | False | `string` | Priority level of the alert. Possible values are P1, P2, P3, P4 and P5. Default value is P3. | `P1` |
23+
| `description` | True | `string` | Description field of the alert that is generally used to provide detailed information about the alert. | `Hello from Argo CD!` |
24+
| `priority` | False | `string` | Priority level of the alert. Possible values are P1, P2, P3, P4, and P5. Default value is P3. | `P1` |
2525
| `alias` | False | `string` | Client-defined identifier of the alert, that is also the key element of Alert De-Duplication. | `Life is too short for no alias` |
26-
| `note` | False | `string` | Additional note that will be added while creating the alert. | `Error from Argo CD!` |
26+
| `note` | False | `string` | Additional note that will be added while creating the alert. | `Error from Argo CD!` |
27+
| `actions` | False | `[]string` | Custom actions that will be available for the alert. | `["Resolve", "Escalate"]` |
28+
| `tags` | False | `[]string` | Tags of the alert. | `["critical", "deployment"]` |
29+
| `visibleTo` | False | `[]alert.Responder` | Teams and users that the alert will become visible to without sending any notification. The `type` field is mandatory for each item, where possible values are `team` and `user`. In addition to the `type` field, either `id` or `name` should be provided for teams, and either `id` or `username` should be given for users. Please note that alerts will be visible to the teams specified within the `responders` field by default, so there is no need to re-specify them in the `visibleTo` field. | `[{Type: "team", Id: "team_id"}, {Type: "user", Id: "user_id"}]` |
30+
| `details` | False | `map[string]string` | Map of key-value pairs to use as custom properties of the alert. | `{"environment": "production", "service": "web"}` |
31+
| `entity` | False | `string` | Entity field of the alert that is generally used to specify which domain the alert is related to. | `web-server` |
32+
| `user` | False | `string` | Display name of the request owner. | `admin_user` |
2733

2834
```yaml
2935
apiVersion: v1
@@ -47,18 +53,38 @@ data:
4753
priority: P1
4854
alias: {{.app.metadata.name}}
4955
note: Error from Argo CD!
56+
actions:
57+
- Restart
58+
- AnExampleAction
59+
tags:
60+
- OverwriteQuietHours
61+
- Critical
62+
visibleTo:
63+
- Id: "{{.app.metadata.responderId}}"
64+
Type: "team"
65+
- Name: "rocket_team"
66+
Type: "team"
67+
- Id: "{{.app.metadata.responderUserId}}"
68+
Type: "user"
69+
- Username: "[email protected]"
70+
Type: "user"
71+
details:
72+
environment: production
73+
service: web
74+
entity: Argo CD Application
75+
user: John Doe
5076
trigger.on-a-problem: |
5177
- description: Application has a problem.
5278
send:
5379
- opsgenie
5480
when: app.status.health.status == 'Degraded' or app.status.operationState.phase in ['Error', 'Failed'] or app.status.sync.status == 'Unknown'
5581
```
5682
57-
16. Add annotation in application yaml file to enable notifications for specific Argo CD app.
83+
16. Add annotation in the application YAML file to enable notifications for a specific Argo CD app.
5884
```yaml
59-
apiVersion: argoproj.io/v1alpha1
60-
kind: Application
61-
metadata:
62-
annotations:
63-
notifications.argoproj.io/subscribe.on-a-problem.opsgenie: <your-team>
85+
apiVersion: argoproj.io/v1alpha1
86+
kind: Application
87+
metadata:
88+
annotations:
89+
notifications.argoproj.io/subscribe.on-a-problem.opsgenie: <your-team>
6490
```

0 commit comments

Comments
 (0)