Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 9 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -758,6 +758,10 @@ coverage:
target: 75
flags:
- cert_manager
datadog_csi_driver:
target: 75
flags:
- datadog_csi_driver
dcgm:
target: 75
flags:
Expand Down Expand Up @@ -1000,6 +1004,11 @@ flags:
paths:
- datadog_cluster_agent/datadog_checks/datadog_cluster_agent
- datadog_cluster_agent/tests
datadog_csi_driver:
carryforward: true
paths:
- datadog_csi_driver/datadog_checks/datadog_csi_driver
- datadog_csi_driver/tests
dcgm:
carryforward: true
paths:
Expand Down
15 changes: 15 additions & 0 deletions .ddqa/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,21 @@ exclude_members = [
]
github_labels = ["team/container-integrations"]

[teams."Container Platform"]
jira_project = "CONTP"
jira_issue_type = "Task"
jira_statuses = [
"To Do",
"In Progress",
"Done",
]
github_team = "container-platform"
exclude_members = [
"clamoriniere",
"hkaj",
]
github_labels = ["team/container-platform"]

[teams."Database Monitoring"]
jira_project = "DBMON"
jira_issue_type = "Task"
Expand Down
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ manifest.json @DataDog/documentation @DataDog/agent-integrations
/crio/manifest.json @DataDog/container-integrations @DataDog/agent-integrations @DataDog/documentation
/datadog_cluster_agent/ @DataDog/container-integrations @DataDog/agent-integrations
/datadog_cluster_agent/*.md @DataDog/container-integrations @DataDog/agent-integrations @DataDog/documentation
/datadog_csi_driver/ @DataDog/container-platform @DataDog/agent-integrations
/datadog_csi_driver/*.md @DataDog/container-platform @DataDog/agent-integrations @DataDog/documentation
/datadog_operator/ @DataDog/container-ecosystems @DataDog/agent-integrations
/datadog_operator/*.md @DataDog/container-ecosystems @DataDog/agent-integrations @DataDog/documentation
/docker_daemon/ @DataDog/container-integrations @DataDog/agent-integrations
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/config/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ integration/datadog_checks_tests_helper:
- datadog_checks_tests_helper/**/*
integration/datadog_cluster_agent:
- datadog_cluster_agent/**/*
integration/datadog_csi_driver:
- datadog_csi_driver/**/*
integration/datadog_operator:
- datadog_operator/**/*
integration/dcgm:
Expand Down
19 changes: 19 additions & 0 deletions .github/workflows/test-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -857,6 +857,25 @@ jobs:
minimum-base-package: ${{ inputs.minimum-base-package }}
pytest-args: ${{ inputs.pytest-args }}
secrets: inherit
j58cf93c:
uses: ./.github/workflows/test-target.yml
with:
job-name: datadog_csi_driver
target: datadog_csi_driver
platform: linux
runner: '["ubuntu-22.04"]'
repo: "${{ inputs.repo }}"
python-version: "${{ inputs.python-version }}"
latest: ${{ inputs.latest }}
agent-image: "${{ inputs.agent-image }}"
agent-image-py2: "${{ inputs.agent-image-py2 }}"
agent-image-windows: "${{ inputs.agent-image-windows }}"
agent-image-windows-py2: "${{ inputs.agent-image-windows-py2 }}"
test-py2: ${{ inputs.test-py2 }}
test-py3: ${{ inputs.test-py3 }}
minimum-base-package: ${{ inputs.minimum-base-package }}
pytest-args: ${{ inputs.pytest-args }}
secrets: inherit
j69f9754:
uses: ./.github/workflows/test-target.yml
with:
Expand Down
10 changes: 5 additions & 5 deletions cisco_aci/datadog_checks/cisco_aci/fabric.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@

VENDOR_CISCO = 'cisco'
PAYLOAD_METADATA_BATCH_SIZE = 100
DEVICE_USER_TAGS_PREFIX = "dd.internal.resource:ndm_device_user_tags"
INTERFACE_USER_TAGS_PREFIX = "dd.internal.resource:ndm_interface_user_tags"
DEVICE_TAGS_PREFIX = "dd.internal.resource:ndm_device"
INTERFACE_TAGS_PREFIX = "dd.internal.resource:ndm_interface"


class Fabric:
Expand Down Expand Up @@ -104,7 +104,7 @@ def submit_nodes_health_and_metadata(self, nodes, pods):
device_metadata.append(ndm.create_node_metadata(node_attrs, tags, self.namespace))

device_id = '{}:{}'.format(self.namespace, node_attrs.get('address', ''))
tags.append('{}:{}'.format(DEVICE_USER_TAGS_PREFIX, device_id))
tags.append('{}:{}'.format(DEVICE_TAGS_PREFIX, device_id))

self.submit_process_metric(n, tags + self.check_tags + user_tags, hostname=hostname)
except (exceptions.APIConnectionException, exceptions.APIParsingException):
Expand Down Expand Up @@ -140,10 +140,10 @@ def process_eth(self, node):
interface_metadata = ndm.create_interface_metadata(e, node.get('address', ''), self.namespace)
interfaces.append(interface_metadata)
device_id = '{}:{}'.format(self.namespace, node.get('address', ''))
tags.append('{}:{}'.format(DEVICE_USER_TAGS_PREFIX, device_id))
tags.append('{}:{}'.format(DEVICE_TAGS_PREFIX, device_id))
tags.append(
"{}:{}:{}".format(
INTERFACE_USER_TAGS_PREFIX, interface_metadata.device_id, str(interface_metadata.index)
INTERFACE_TAGS_PREFIX, interface_metadata.device_id, str(interface_metadata.index)
),
)
self.submit_interface_status_metric(
Expand Down
24 changes: 12 additions & 12 deletions cisco_aci/tests/test_fabric.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,40 +31,40 @@

namespace = 'default'

node101_port1 = 'dd.internal.resource:ndm_interface_user_tags:default:10.0.200.0:1'
node101_port2 = 'dd.internal.resource:ndm_interface_user_tags:default:10.0.200.0:2'
node102_port1 = 'dd.internal.resource:ndm_interface_user_tags:default:10.0.200.1:1'
node102_port2 = 'dd.internal.resource:ndm_interface_user_tags:default:10.0.200.1:2'
node201_port1 = 'dd.internal.resource:ndm_interface_user_tags:default:10.0.200.5:1'
node201_port2 = 'dd.internal.resource:ndm_interface_user_tags:default:10.0.200.5:2'
node101_port1 = 'dd.internal.resource:ndm_interface:default:10.0.200.0:1'
node101_port2 = 'dd.internal.resource:ndm_interface:default:10.0.200.0:2'
node102_port1 = 'dd.internal.resource:ndm_interface:default:10.0.200.1:1'
node102_port2 = 'dd.internal.resource:ndm_interface:default:10.0.200.1:2'
node201_port1 = 'dd.internal.resource:ndm_interface:default:10.0.200.5:1'
node201_port2 = 'dd.internal.resource:ndm_interface:default:10.0.200.5:2'

device_tags_101 = [
'device_hostname:{}'.format(device_hn101),
'device_id:{}:{}'.format(namespace, node101),
'device_ip:{}'.format(node101),
'device_namespace:{}'.format(namespace),
'dd.internal.resource:ndm_device_user_tags:default:10.0.200.0',
'dd.internal.resource:ndm_device:default:10.0.200.0',
]
device_tags_102 = [
'device_hostname:{}'.format(device_hn102),
'device_id:{}:{}'.format(namespace, node102),
'device_ip:{}'.format(node102),
'device_namespace:{}'.format(namespace),
'dd.internal.resource:ndm_device_user_tags:default:10.0.200.1',
'dd.internal.resource:ndm_device:default:10.0.200.1',
]
device_tags_201 = [
'device_hostname:{}'.format(device_hn201),
'device_id:{}:{}'.format(namespace, node201),
'device_ip:{}'.format(node201),
'device_namespace:{}'.format(namespace),
'dd.internal.resource:ndm_device_user_tags:default:10.0.200.5',
'dd.internal.resource:ndm_device:default:10.0.200.5',
]
device_tags_1 = [
'device_hostname:{}'.format(device_hn1),
'device_id:{}:{}'.format(namespace, node1),
'device_ip:{}'.format(node1),
'device_namespace:{}'.format(namespace),
'dd.internal.resource:ndm_device_user_tags:default:10.0.200.4',
'dd.internal.resource:ndm_device:default:10.0.200.4',
]

tags000 = ['cisco', 'project:cisco_aci', 'medium:broadcast', 'snmpTrapSt:enable', 'fabric_pod_id:1']
Expand Down Expand Up @@ -129,8 +129,8 @@ def test_fabric_mocked(aggregator):
'device_hostname:{}'.format(device_hn),
'device_id:{}'.format(interface.device_id),
'status:{}'.format(interface.status),
'dd.internal.resource:ndm_device_user_tags:{}'.format(interface.device_id),
'dd.internal.resource:ndm_interface_user_tags:{}:{}'.format(interface.device_id, interface.index),
'dd.internal.resource:ndm_device:{}'.format(interface.device_id),
'dd.internal.resource:ndm_interface:{}:{}'.format(interface.device_id, interface.index),
]
aggregator.assert_metric('cisco_aci.fabric.port.status', value=1.0, tags=interface_tags, hostname=device_hn)

Expand Down
4 changes: 4 additions & 0 deletions datadog_csi_driver/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# CHANGELOG - datadog_csi_driver

<!-- towncrier release notes start -->

61 changes: 61 additions & 0 deletions datadog_csi_driver/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Agent Check: datadog_csi_driver

## Overview

This check monitors [`datadog_csi_driver`][1] through the Datadog Agent.

The Datadog CSI Driver is a DaemonSet that runs a gRPC server implementing the CSI specifications on each node of your Kubernetes cluster.

Installing Datadog CSI driver on a Kubernetes cluster allows using CSI volumes by specifying the name of Datadog CSI driver.

The Datadog CSI node server is responsible for managing Datadog CSI volume lifecycle, allowing mounting UDS sockets for high performance dogstatsd and tracing without breaking constraints set by [`kubernetes pod security standards`][10].

The Datadog CSI Driver integration collects and monitors metrics from your Datadog CSI Driver, providing visibility into publish/unpublish requests and pod health for improved troubleshooting and performance monitoring.

## Setup

Follow the instructions below to install and configure this check for an Agent running on a host. For containerized environments, see the [Autodiscovery Integration Templates][3] for guidance on applying these instructions.

### Installation

The `datadog_csi_driver` check is included in the [Datadog Agent][2] package.
No additional installation is needed on your server.

### Configuration

1. Edit the `datadog_csi_driver.d/conf.yaml` file, located in the `conf.d/` folder at the root of your Agent's configuration directory to start collecting your `datadog_csi_driver` performance data. See the [sample datadog_csi_driver.d/conf.yaml][4] for all available configuration options.

2. [Restart the Agent][5].

### Validation

[Run the Agent's status subcommand][6] and verify that `datadog_csi_driver` appears under the Checks section.

## Data Collected

### Metrics

See [metadata.csv][7] for a list of metrics provided by this integration.

### Events

This integration does not include any events.

### Service Checks

This integration does not include any service checks.

## Troubleshooting

Need help? Contact [Datadog support][9].

[1]: https://docs.datadoghq.com/containers/csi_driver/
[2]: https://app.datadoghq.com/account/settings/agent/latest
[3]: https://docs.datadoghq.com/containers/kubernetes/integrations/
[4]: https://github.com/DataDog/integrations-core/blob/master/datadog_csi_driver/datadog_checks/datadog_csi_driver/data/conf.yaml.example
[5]: https://docs.datadoghq.com/agent/configuration/agent-commands/#start-stop-and-restart-the-agent
[6]: https://docs.datadoghq.com/agent/configuration/agent-commands/#agent-status-and-information
[7]: https://github.com/DataDog/integrations-core/blob/master/datadog_csi_driver/metadata.csv
[8]: https://github.com/DataDog/integrations-core/blob/master/datadog_csi_driver/assets/service_checks.json
[9]: https://docs.datadoghq.com/help/
[10]: https://kubernetes.io/docs/concepts/security/pod-security-standards/
24 changes: 24 additions & 0 deletions datadog_csi_driver/assets/configuration/spec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Datadog CSI Driver
files:
- name: datadog_csi_driver.yaml
options:
- template: init_config
options:
- template: init_config/default
- template: instances
options:
- template: instances/openmetrics
- name: auto_conf.yaml
options:
- template: ad_identifiers
overrides:
value.example:
- csi-driver
- template: init_config
options:
- template: init_config/openmetrics_legacy
- template: instances
options:
- template: instances/openmetrics_legacy
overrides:
prometheus_url.value.example: http://%%host%%:5000/metrics
Loading
Loading