Metadata-Version: 2.5
Name: datadog-voltdb
Version: 6.5.0
Summary: The VoltDB check
Project-URL: Source, https://github.com/DataDog/integrations-core
Author-email: Datadog <packages@datadoghq.com>
License-Expression: BSD-3-Clause
Keywords: datadog,datadog agent,datadog check,voltdb
Classifier: Private :: Do Not Upload
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Monitoring
Requires-Dist: datadog-checks-base>=37.33.0
Provides-Extra: deps
Requires-Dist: voltdbclient==15.3.0; extra == 'deps'
Description-Content-Type: text/markdown

# Agent Check: VoltDB

## Overview

This check monitors [VoltDB][1] through the Datadog Agent.

**Minimum Agent version:** 7.26.0

## 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][2] for guidance on applying these instructions.

**Note**: This check should only be configured on one Agent per cluster. If you are monitoring a cluster spread across several hosts, install an Agent on each host. However, do not enable the VoltDB integration on more than one host, as this results in duplicate metrics.

### Installation

The VoltDB check is included in the [Datadog Agent][3] package.
No additional installation is needed on your server.

### Configuration

1. Add a `datadog-agent` user. You can do so by editing your VoltDB `deployment.xml` file. **Note**: No specific roles are required, so assign the built-in `user` role.

    ```xml
    <users>
        <!-- ... -->
        <user name="datadog-agent" password="<PASSWORD>" roles="user" />
    </users>
    ```

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

    The integration supports two transports. Use the one that matches your network topology:

    **Native binary client** - direct connection to a database node on the VoltDB client port (default `21212`), using the [VoltDB Python client][12]. Datadog recommends the native binary client transport when the Agent host can reach the database nodes directly:

    ```yaml
    init_config:

    instances:
      - host: localhost
        port: 21212
        username: datadog-agent
        password: "<PASSWORD>"
    ```

    For failover across cluster members, use `hosts` instead of `host`. The Agent connects to the first reachable entry and silently fails over to the others if the active node becomes unavailable:

    ```yaml
    instances:
      - hosts:
          - voltdb-1.example:21212
          - voltdb-2.example:21212
          - voltdb-3.example:21212
        username: datadog-agent
        password: "<PASSWORD>"
    ```

    **HTTP/JSON using the VoltDB Management Center (VMC)** - useful when database nodes aren't directly reachable but the VMC endpoint is, or when you prefer to keep the existing HTTP/JSON wire format. Set `url` to the VMC endpoint:

    ```yaml
    instances:
      - url: http://vmc.example.com:8080
        username: datadog-agent
        password: "<PASSWORD>"
    ```

    The check picks the transport based on which option is set: `url` selects HTTP mode, `host`/`hosts` selects native mode. HTTP mode keeps all options supported by earlier releases (`password_hashed`, `tls_cert`, `tls_ca_cert`, `tls_verify`, `proxy`, `headers`, etc.). See the [sample config][4] for the full list.

    **Backwards compatibility**: existing configurations that point `url` at the legacy HTTP endpoint continue to work without changes. This release adds the native binary transport as an option; it does not remove the HTTP one. The `url`-style config still emits the same metrics and service checks against the same VMC- or HTTP-enabled database node it always pointed to.

3. [Restart the Agent][5].

#### TLS support

If [TLS/SSL][6] is enabled on the VoltDB client port, set `use_ssl: true` and point `ssl_config_file` to a VoltDB SSL properties file that describes how to locate the truststore (and optionally a client keystore for mutual TLS):

```yaml
instances:
  - host: localhost
    port: 21212
    username: datadog-agent
    password: "<PASSWORD>"
    use_ssl: true
    ssl_config_file: /etc/voltdb/ssl.properties
```

The properties file is the same format VoltDB's own tools (`sqlcmd`, `voltadmin`) consume. The native Python client supports Java keystores (`.jks`), PKCS12 (`.p12`/`.pfx`), and PEM. A minimal one-way TLS configuration looks like:

```properties
# /etc/voltdb/ssl.properties
truststore=/etc/voltdb/certs/truststore.jks
truststorepassword=<TRUSTSTORE_PASSWORD>
```

For mutual TLS, also add a keystore that identifies the Agent to the server:

```properties
truststore=/etc/voltdb/certs/truststore.jks
truststorepassword=<TRUSTSTORE_PASSWORD>
keystore=/etc/voltdb/certs/agent-keystore.jks
keystorepassword=<KEYSTORE_PASSWORD>
```

If you have a PEM CA bundle instead of a Java keystore, you can either point `ssl_config_file` directly at the PEM file, which is treated as the truststore, or reference it explicitly with `cacerts=<PATH>` inside the properties file.

When the Agent runs in a container, make sure the properties file and every path it references are mounted into the container. See the [VoltDB TLS/SSL documentation][6] for details on generating keystores with `keytool` and rotating certificates.

#### Log collection

1. Collecting logs is disabled by default in the Datadog Agent, enable it in your `datadog.yaml` file:

    ```yaml
    logs_enabled: true
    ```

2. Add this configuration block to your `voltdb.d/conf.yaml` file to start collecting your VoltDB logs:

    ```yaml
    logs:
      - type: file
        path: /var/log/voltdb.log
        source: voltdb
    ```

  Change the `path` value based on your environment. See the [sample `voltdb.d/conf.yaml` file][4] for all available configuration options.

  3. [Restart the Agent][5].

  To enable logs for Kubernetes environments, see [Kubernetes Log Collection][7].

### Validation

[Run the Agent's status subcommand][8] and look for `voltdb` under the Checks section.

## Data Collected

### Metrics

See [metadata.csv][9] for a list of metrics provided by this check.

### Events

This check does not include any events.

### Service Checks

See [service_checks.json][10] for a list of service checks provided by this integration.

## Troubleshooting

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

## Further Reading

{{< partial name="whats-next/whats-next.html" >}}

[1]: https://voltdb.com
[2]: https://docs.datadoghq.com/agent/kubernetes/integrations/
[3]: /account/settings/agent/latest
[4]: https://github.com/DataDog/integrations-core/blob/master/voltdb/datadog_checks/voltdb/data/conf.yaml.example
[5]: https://docs.datadoghq.com/agent/guide/agent-commands/#start-stop-and-restart-the-agent
[6]: https://docs.voltdb.com/UsingVoltDB/SecuritySSL.php
[7]: https://docs.datadoghq.com/agent/kubernetes/log/
[8]: https://docs.datadoghq.com/agent/guide/agent-commands/#agent-status-and-information
[9]: https://github.com/DataDog/integrations-core/blob/master/voltdb/metadata.csv
[10]: https://github.com/DataDog/integrations-core/blob/master/voltdb/assets/service_checks.json
[11]: https://docs.datadoghq.com/help/
[12]: https://pypi.org/project/voltdbclient/
[13]: https://docs.datadoghq.com/agent/configuration/secrets-management/
