Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Doppler integration (ECOINT-6) #2460

Merged
merged 28 commits into from
Oct 10, 2024
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
752a189
Add Doppler
nmanoogian Jul 2, 2024
24f1366
WIP: Add tests
nmanoogian Sep 6, 2024
4b58ad9
Address PR feedback
nmanoogian Sep 6, 2024
6c33db6
Update oauth_clients
nmanoogian Sep 6, 2024
e393c2f
Update doppler_tests.yaml
nmanoogian Sep 6, 2024
a612bfa
Add metrics and service_checks mandatory fields
nmanoogian Sep 6, 2024
e4a6ed3
Remove monitors
nmanoogian Sep 6, 2024
5239fda
Fix CHANGELOG formatting
nmanoogian Sep 6, 2024
f310f65
Remove saved_views
nmanoogian Sep 6, 2024
2b5cafe
Add oauth field to manifest
nmanoogian Sep 6, 2024
2106f54
Change Configuration header to Setup
nmanoogian Sep 6, 2024
723d1bb
Move setup section up
nmanoogian Sep 6, 2024
173cc37
Remove string type from type facet
nmanoogian Sep 6, 2024
97a0bac
Remove metrics and service check tests
nmanoogian Sep 24, 2024
8bc20b0
Remove log facetType and set preserveSource=false
nmanoogian Sep 24, 2024
6ab2749
Remove metadata.csv
nmanoogian Sep 24, 2024
c97b578
Remove service_checks.json and hatch.toml
nmanoogian Sep 24, 2024
915de35
Add back service_checks.json
nmanoogian Sep 24, 2024
793d617
Add Activity Log examples
nmanoogian Sep 25, 2024
12754fe
Remove usr fields from tests
nmanoogian Sep 30, 2024
d332a48
WIP: Update test inputs
nmanoogian Sep 30, 2024
3022af9
Update test results from action output
nmanoogian Sep 30, 2024
376d63e
Update doppler/assets/oauth_clients.json
emarsha94 Oct 3, 2024
3e6f481
Update doppler/manifest.json
emarsha94 Oct 3, 2024
45f31f8
Add text back to tests
nmanoogian Oct 7, 2024
c1914e1
Fix message field location in tests
nmanoogian Oct 7, 2024
f5dac69
Add missing usr attribute mappers
nmanoogian Oct 8, 2024
27b0e6c
Remove hanging `user` field
nmanoogian Oct 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@
/docontrol/ @lielran @DataDog/ecosystems-review
/doctordroid/ @dimittal @DataDog/ecosystems-review
/dylibso-webassembly/ @nilslice @bhelx @DataDog/ecosystems-review
/doppler/ @nmanoogian @apazzolini @doppler-admin @DataDog/ecosystems-review
/doppler/assets/logs/ @nmanoogian @apazzolini @doppler-admin @DataDog/ecosystems-review @DataDog/logs-backend
/embrace_mobile/ @jpmunz @joage @DataDog/ecosystems-review
/eppo/ @emetelka [email protected]
/eventstore/ @Xorima
Expand Down
7 changes: 7 additions & 0 deletions doppler/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# CHANGELOG - Doppler

## 1.0.0 / 2024-09-06

**_Added_**:

* Initial Release
73 changes: 73 additions & 0 deletions doppler/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Agent Check: Doppler

## Overview

[Doppler][1] is a secrets manager designed with both security and developer productivity in mind.
emarsha94 marked this conversation as resolved.
Show resolved Hide resolved
Doppler allows you to securely store secrets (for example: API keys, database credentials, and other sensitive values) and deliver them to your applications.

This integration sends Activity Logs from [Doppler][1] to Datadog, allowing you to monitor changes to your workplace.
This includes:

- Modifications to projects, environments, and secrets
- Changes to your team, including new members, role changes, and removals
- Changes to workplace settings, including integrations and security features

Doppler does not collect any data from your Datadog account.

## Setup

emarsha94 marked this conversation as resolved.
Show resolved Hide resolved
### Installation

1. Click **Connect Accounts** on the Doppler integration tile to connect Datadog with Doppler.
2. Log into Doppler or create an account if you have not already.
3. Select the Doppler workplace that you would like to configure. This step will automatically be skipped if you only have one workplace.
4. Click **Settings** to navigate to your workplace settings.
5. Under **Logging Services** > **Datadog**, click **Connect**.
6. Choose your Datadog site from the Dropdown.
7. Log into Datadog. This step will be skipped if you are already signed in.
8. Review the Datadog permissions that will be granted to Doppler and click **Authorize**.

Once the installation is complete, Doppler Activity Logs will automatically start flowing to Datadog.

### Configuration

The integration will automatically send all Doppler Activity Logs to Datadog, no further configuration is available at this time.
michaelcretzman marked this conversation as resolved.
Show resolved Hide resolved

### Validation

During installation, Doppler creates a test log to verify that the installed credentials work properly. Verify that this test log is present in your logs to verify the installation.
michaelcretzman marked this conversation as resolved.
Show resolved Hide resolved

## Data Collected

Doppler does not collect any information from your Datadog account.

### Uninstallation

- Go to your [Doppler workplace settings][4] and disconnect the Datadog integration
michaelcretzman marked this conversation as resolved.
Show resolved Hide resolved
- Remove all API keys associated with this integration by searching for the integration name on the [Datadog API Keys page][5].

### Metrics

Doppler does not report any metrics.

### Service Checks

Doppler does not provide any service checks.

### Logs

Doppler creates a log for every entry in your workplace's [Doppler Activity Log][2]. The type of log, as well as any associated log parameters, will be included in the payload.

### Events

Doppler does not produce any Datadog events.

## Troubleshooting

Need help? Contact [Doppler support][3].

[1]: https://www.doppler.com
[2]: https://docs.doppler.com/docs/workplace-logs
[3]: https://support.doppler.com
[4]: https://dashboard.doppler.com/workplace/settings
[5]: https://app.datadoghq.com/organization-settings/api-keys
10 changes: 10 additions & 0 deletions doppler/assets/configuration/spec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Doppler
files:
- name: doppler.yaml
options:
- template: init_config
options:
- template: init_config/default
- template: instances
options:
- template: instances/default
242 changes: 242 additions & 0 deletions doppler/assets/dashboards/doppler_overview.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
{
"title": "Doppler Dashboard",
"description": "This dashboard provides a high-level overview of your workplace's Doppler activity.\n\nClone this template dashboard to make changes and add your own graph widgets.",
"widgets": [
{
"id": 2579449116060402,
"definition": {
"type": "image",
"url": "https://www.doppler.com/avatar/doppler_circle_800.png",
"sizing": "contain",
"margin": "md",
"has_background": false,
"has_border": false,
"vertical_align": "center",
"horizontal_align": "center"
},
"layout": { "x": 0, "y": 0, "width": 2, "height": 3 }
},
{
"id": 1029719899125074,
"definition": {
"type": "note",
"content": "[Doppler](https://doppler.com) is a secrets manager designed with both security and developer productivity in mind.\n\nThis dashboard provides a high-level overview of your Doppler [Activity Logs](https://docs.doppler.com/docs/workplace-logs), allowing you to identify patterns in:\n\n- Different types of activities\n- Temporal patterns in activities\n- Which users are performing activities\n\nRead the [Doppler Datadog docs](https://docs.doppler.com/docs/datadog) for more information.",
"background_color": "white",
"font_size": "14",
"text_align": "left",
"vertical_align": "top",
"show_tick": false,
"tick_pos": "50%",
"tick_edge": "left",
"has_padding": true
},
"layout": { "x": 2, "y": 0, "width": 10, "height": 3 }
},
{
"id": 4210531550520016,
"definition": {
"title": "Activity Logs by Type",
"title_size": "16",
"title_align": "left",
"show_legend": true,
"legend_layout": "auto",
"legend_columns": ["avg", "min", "max", "value", "sum"],
"type": "timeseries",
"requests": [
{
"formulas": [{ "formula": "query1" }],
"queries": [
{
"data_source": "logs",
"name": "query1",
"indexes": ["*"],
"compute": { "aggregation": "count" },
"group_by": [
{
"facet": "@type",
"limit": 10,
"sort": { "order": "desc", "aggregation": "count" }
}
],
"search": { "query": "source:doppler" },
"storage": "hot"
}
],
"response_format": "timeseries",
"style": {
"palette": "datadog16",
"order_by": "values",
"line_type": "solid",
"line_width": "normal"
},
"display_type": "bars"
}
]
},
"layout": { "x": 0, "y": 3, "width": 8, "height": 4 }
},
{
"id": 5108936822527020,
"definition": {
"title": "Activity Log Counts by Type",
"title_size": "16",
"title_align": "left",
"type": "query_table",
"requests": [
{
"queries": [
{
"data_source": "logs",
"name": "query1",
"indexes": ["*"],
"compute": { "aggregation": "count" },
"group_by": [
{
"facet": "@type",
"limit": 10,
"sort": { "order": "desc", "aggregation": "count" }
}
],
"search": { "query": "source:doppler" },
"storage": "hot"
}
],
"response_format": "scalar",
"sort": {
"count": 10,
"order_by": [{ "type": "formula", "index": 0, "order": "desc" }]
},
"formulas": [
{
"cell_display_mode": "bar",
"alias": "Count",
"formula": "query1"
}
]
}
],
"has_search_bar": "auto"
},
"layout": { "x": 8, "y": 3, "width": 4, "height": 4 }
},
{
"id": 2954602671560148,
"definition": {
"type": "note",
"content": "Break down activity logs by type over time intervals to identify operational usage patterns.",
"background_color": "green",
"font_size": "14",
"text_align": "left",
"vertical_align": "center",
"show_tick": true,
"tick_pos": "50%",
"tick_edge": "top",
"has_padding": true
},
"layout": { "x": 0, "y": 7, "width": 12, "height": 1 }
},
{
"id": 788257060754552,
"definition": {
"title": "Activity Logs by Timestamp",
"title_size": "16",
"title_align": "left",
"show_legend": false,
"type": "heatmap",
"requests": [
{
"formulas": [{ "formula": "query1" }],
"queries": [
{
"data_source": "logs",
"name": "query1",
"indexes": ["*"],
"compute": { "aggregation": "count" },
"group_by": [],
"search": { "query": "source:doppler" },
"storage": "hot"
}
],
"response_format": "timeseries",
"style": { "palette": "dog_classic" }
}
]
},
"layout": { "x": 0, "y": 8, "width": 8, "height": 3 }
},
{
"id": 7305773172963494,
"definition": {
"title": "Activity Log Counts by User",
"title_size": "16",
"title_align": "left",
"type": "query_table",
"requests": [
{
"queries": [
{
"data_source": "logs",
"name": "query1",
"indexes": ["*"],
"compute": { "aggregation": "count" },
"group_by": [
{
"facet": "@usr.email",
"limit": 10,
"sort": { "order": "desc", "aggregation": "count" }
}
],
"search": { "query": "source:doppler" },
"storage": "hot"
}
],
"response_format": "scalar",
"sort": {
"count": 10,
"order_by": [{ "type": "formula", "index": 0, "order": "desc" }]
},
"formulas": [{ "cell_display_mode": "bar", "formula": "query1" }]
}
],
"has_search_bar": "auto"
},
"layout": { "x": 8, "y": 8, "width": 4, "height": 3 }
},
{
"id": 924997396545434,
"definition": {
"type": "note",
"content": "View by timestamp to identify temporal usage patterns.",
"background_color": "green",
"font_size": "14",
"text_align": "left",
"vertical_align": "center",
"show_tick": true,
"tick_pos": "50%",
"tick_edge": "top",
"has_padding": true
},
"layout": { "x": 0, "y": 11, "width": 8, "height": 1 }
},
{
"id": 8957740472282574,
"definition": {
"type": "note",
"content": "View by user who completed the Doppler action.",
"background_color": "green",
"font_size": "14",
"text_align": "left",
"vertical_align": "center",
"show_tick": true,
"tick_pos": "50%",
"tick_edge": "top",
"has_padding": true
},
"layout": { "x": 8, "y": 11, "width": 4, "height": 1 }
}
],
"template_variables": [],
"layout_type": "ordered",
"notify_list": [],
"reflow_type": "fixed"
}
Loading
Loading