diff --git a/.azure-pipelines/templates/test-all-checks.yml b/.azure-pipelines/templates/test-all-checks.yml index ebe9ac392d7b4..f24e9c65c31cb 100644 --- a/.azure-pipelines/templates/test-all-checks.yml +++ b/.azure-pipelines/templates/test-all-checks.yml @@ -302,6 +302,9 @@ jobs: - checkName: sap_hana displayName: SAP HANA os: linux + - checkName: scylla + displayName: Scylla + os: linux - checkName: snmp displayName: SNMP os: linux diff --git a/scylla/CHANGELOG.md b/scylla/CHANGELOG.md new file mode 100644 index 0000000000000..dd758db87925b --- /dev/null +++ b/scylla/CHANGELOG.md @@ -0,0 +1,2 @@ +# CHANGELOG - Scylla + diff --git a/scylla/MANIFEST.in b/scylla/MANIFEST.in new file mode 100644 index 0000000000000..6fa1c2388a4eb --- /dev/null +++ b/scylla/MANIFEST.in @@ -0,0 +1,10 @@ +graft datadog_checks +graft tests + +include MANIFEST.in +include README.md +include requirements.in +include requirements-dev.txt +include manifest.json + +global-exclude *.py[cod] __pycache__ diff --git a/scylla/README.md b/scylla/README.md new file mode 100644 index 0000000000000..b94dc2b810fd4 --- /dev/null +++ b/scylla/README.md @@ -0,0 +1,51 @@ +# Agent Check: Scylla + +## Overview + +This Datadog-[Scylla][1] integration collects a majority of the exposed metrics by default, with the ability to customize additional groups based on specific user needs. + +Scylla is an open-source NoSQL data store that can act as "a drop-in Apache Cassandra alternative." It has rearchitected the Cassandra model tuned for modern hardware, reducing the size of required clusters while improving theoretical throughput and performance. + +## Setup + +Follow the instructions below to install and configure this check for an Agent running on a host. + +### Installation + +The Scylla check is included in the [Datadog Agent][2] package. No additional installation is needed on your server. + +### Configuration + +1. Edit the `scylla.d/conf.yaml` file, in the `conf.d/` folder at the root of your Agent's configuration directory to start collecting your scylla performance data. See the [sample scylla.d/conf.yaml][3] for all available configuration options. + +2. [Restart the Agent][4]. + +### Validation + +[Run the Agent's status subcommand][5] and look for `scylla` under the Checks section. + +## Data Collected + +### Metrics + +See [metadata.csv][6] for a list of metrics provided by this check. + +### Service Checks + +`scylla.prometheus.health`: Returns `CRITICAL` if the Agent cannot reach the metrics endpoints, `OK` otherwise. + +### Events + +The Scylla check does not include any events. + +## Troubleshooting + +Need help? Contact [Datadog support][7]. + +[1]: https://scylla.io +[2]: https://docs.datadoghq.com/agent +[3]: https://github.com/DataDog/integrations-core/blob/master/scylla/datadog_checks/scylla/data/conf.yaml.example +[4]: https://docs.datadoghq.com/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[5]: https://docs.datadoghq.com/agent/guide/agent-commands/#agent-status-and-information +[6]: https://github.com/DataDog/integrations-core/blob/master/scylla/metadata.csv +[7]: https://docs.datadoghq.com/help diff --git a/scylla/assets/service_checks.json b/scylla/assets/service_checks.json new file mode 100644 index 0000000000000..1a2dba7819aa2 --- /dev/null +++ b/scylla/assets/service_checks.json @@ -0,0 +1,17 @@ +[ + { + "agent_version": "6.18.0", + "integration": "Scylla", + "groups": [ + "host", + "endpoint" + ], + "check": "scylla.prometheus.health", + "statuses": [ + "ok", + "critical" + ], + "name": "Scylla prometheus health", + "description": "Returns `CRITICAL` if the check cannot access the metrics endpoint. Returns `OK` otherwise." + } +] diff --git a/scylla/datadog_checks/__init__.py b/scylla/datadog_checks/__init__.py new file mode 100644 index 0000000000000..be34b1d645090 --- /dev/null +++ b/scylla/datadog_checks/__init__.py @@ -0,0 +1,4 @@ +# (C) Datadog, Inc. 2020-present +# All rights reserved +# Licensed under a 3-clause BSD style license (see LICENSE) +__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/scylla/datadog_checks/scylla/__about__.py b/scylla/datadog_checks/scylla/__about__.py new file mode 100644 index 0000000000000..e675c84da2568 --- /dev/null +++ b/scylla/datadog_checks/scylla/__about__.py @@ -0,0 +1,4 @@ +# (C) Datadog, Inc. 2020-present +# All rights reserved +# Licensed under a 3-clause BSD style license (see LICENSE) +__version__ = '0.0.1' diff --git a/scylla/datadog_checks/scylla/__init__.py b/scylla/datadog_checks/scylla/__init__.py new file mode 100644 index 0000000000000..58d312f2b6c0c --- /dev/null +++ b/scylla/datadog_checks/scylla/__init__.py @@ -0,0 +1,7 @@ +# (C) Datadog, Inc. 2020-present +# All rights reserved +# Licensed under a 3-clause BSD style license (see LICENSE) +from .__about__ import __version__ +from .scylla import ScyllaCheck + +__all__ = ['__version__', 'ScyllaCheck'] diff --git a/scylla/datadog_checks/scylla/data/conf.yaml.example b/scylla/datadog_checks/scylla/data/conf.yaml.example new file mode 100644 index 0000000000000..4276ec2f69778 --- /dev/null +++ b/scylla/datadog_checks/scylla/data/conf.yaml.example @@ -0,0 +1,126 @@ +init_config: + +instances: + + ## @param prometheus_url - string - required + ## The URL where your database metrics are exposed by Prometheus. + # + - prometheus_url: http://localhost:9180/metrics + + ## @param metric_groups - list of strings - optional + ## List of additional scylla metric groups to collect in addition to the default + # + # metric_groups: + # - scylla.alien + # - scylla.batchlog + # - scylla.commitlog + # - scylla.compaction + # - scylla.cql + # - scylla.database + # - scylla.execution + # - scylla.hints + # - scylla.httpd + # - scylla.io + # - scylla.lsa + # - scylla.memory + # - scylla.memtables + # - scylla.query + # - scylla.scheduler + # - scylla.sstables + # - scylla.thrift + # - scylla.tracing + + ## @param tags - list of key:value elements - optional + ## List of tags to attach to every metrics, events and service checks emitted by this integration. + ## Learn more about tagging: https://docs.datadoghq.com/tagging/ + # + # tags: + # - : + # - : + + ## @param timeout - integer - optional - default: 10 + ## Overrides the default timeout value in second + # + # timeout: 10 + + ## @param health_service_check - boolean - optional - default: true + ## Send a service check reporting about the health of the prometheus endpoint + ## It's named scylla.prometheus.health + # + # health_service_check: true + + ## @param label_to_hostname - string - optional + ## Override the hostname with the value of one label. + # + # label_to_hostname: