Skip to content

Commit

Permalink
Add Doppler integration (ECOINT-6) (#2460)
Browse files Browse the repository at this point in the history
* Add Doppler

* WIP: Add tests

* Address PR feedback

* Update oauth_clients

* Update doppler_tests.yaml

* Add metrics and service_checks mandatory fields

* Remove monitors

* Fix CHANGELOG formatting

* Remove saved_views

* Add oauth field to manifest

* Change Configuration header to Setup

* Move setup section up

* Remove string type from type facet

* Remove metrics and service check tests

This reverts commit 24f1366.

* Remove log facetType and set preserveSource=false

* Remove metadata.csv

* Remove service_checks.json and hatch.toml

* Add back service_checks.json

* Add Activity Log examples

* Remove usr fields from tests

* WIP: Update test inputs

* Update test results from action output

* Update doppler/assets/oauth_clients.json

Co-authored-by: london-wharton <[email protected]>

* Update doppler/manifest.json

Change Author name to Partner name. This is what shows on the tile so it should be the integration name

* Add text back to tests

* Fix message field location in tests

* Add missing usr attribute mappers

* Remove hanging `user` field

---------

Co-authored-by: emarsha94 <[email protected]>
Co-authored-by: london-wharton <[email protected]>
  • Loading branch information
3 people authored Oct 10, 2024
1 parent 2dcd503 commit d493466
Show file tree
Hide file tree
Showing 19 changed files with 714 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,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.
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

### 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.

### 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.

## 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
- 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

0 comments on commit d493466

Please sign in to comment.