VoltDB

Supported OS Linux Mac OS Windows

Intégration2.1.2

Présentation

Ce check permet de surveiller VoltDB avec l’Agent Datadog.

Configuration

Suivez les instructions ci-dessous pour installer et configurer ce check lorsque l’Agent est exécuté sur un host. Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer ces instructions à des environnements conteneurisés.

Remarque : ce check doit uniquement être configuré sur un Agent par cluster. Si vous surveillez un cluster réparti sur plusieurs hosts, installez un Agent sur chaque host. Toutefois, activez uniquement l’intégration VoltDB sur un seul host, sans quoi vos métriques seront dupliquées.

Installation

Le check VoltDB est inclus avec le package de l’Agent Datadog. Vous n’avez donc rien d’autre à installer sur votre serveur.

Configuration

  1. Ajoutez un utilisateur datadog-agent. Pour ce faire, vous pouvez modifier votre fichier deployment.xml VoltDB. Remarque : aucun rôle spécifique n’est requis. Vous pouvez donc attribuer le rôle user intégré.

    <users>
        <!-- ... -->
        <user name="datadog-agent" password="<PASSWORD>" roles="user" />
    </users>
    
  2. Modifiez le fichier voltdb.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent pour commencer à recueillir vos données de performance VoltDB. Consultez le fichier d’exemple voltdb.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

    init_config:
    
    instances:
      - url: http://localhost:8080
        username: datadog-agent
        password: "<PASSWORD>"
    
  3. Redémarrez l’Agent.

Prise en charge de TLS

Si la technologie TLS/SSL est activée sur le port HTTP du client :

  1. Exportez le fichier de l’autorité de certification de votre certificat au format PEM :

    keytool -exportcert -file /path/to/voltdb-ca.pem -keystore <KEYSTORE> -storepass <PASSWORD> -alias voltdb -rfc
    
  2. Exportez votre certificat au format PEM :

    openssl pkcs12 -nodes -in <KEYSTORE> -out /path/to/voltdb.pem -password pass:<PASSWORD>
    

    Le fichier obtenu contient la clé privée non chiffrée et le certificat :

    -----BEGIN PRIVATE KEY-----
    <Private key contents...>
    -----END PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----
    <Certificate contents...>
    -----END CERTIFICATE-----
    
  3. Dans la configuration de votre instance, pointez url vers l’endpoint client prenant en charge TLS et définissez les options tls_cert et tls_ca_cert. Exemple :

    instances:
    - # ...
      url: https://localhost:8443
      tls_cert: /path/to/voltdb.pem
      tls_ca_cert: /path/to/voltdb-ca.pem
    
  4. Redémarrez l’Agent.

Collecte de logs

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :

    logs_enabled: true
    
  2. Ajoutez ce bloc de configuration à votre fichier voltdb.d/conf.yaml pour commencer à recueillir vos logs VoltDB :

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

Modifiez la valeur de path en fonction de votre environnement. Consultez le fichier d’exemple voltdb.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

  1. Redémarrez l’Agent.

Pour activer les logs pour les environnements Kubernetes, consultez la section Collecte de logs Kubernetes.

Validation

Lancez la sous-commande status de l’Agent et cherchez voltdb dans la section Checks.

Données collectées

Métriques

voltdb.commandlog.fsync_interval
(gauge)
Average interval between the last 10 fsync system calls.
Shown as millisecond
voltdb.commandlog.in_use_segment_count
(gauge)
The number of segment files currently in use for command logging.
voltdb.commandlog.outstanding_bytes
(gauge)
Size of pending command log data: data for transactions that have been initiated but the log has yet to be written to the disk. For synchronous logging this value is always zero.
Shown as byte
voltdb.commandlog.outstanding_transactions
(gauge)
The number of transactions of pending command log data: the number of transactions that have been initiated for which the log has yet to be written to disk. For synchronous logging this value is always zero.
voltdb.commandlog.segment_count
(gauge)
The number of segment files allocated (including currently unused segments).
voltdb.cpu.percent_used
(gauge)
Percentage of total CPU available used by the database server process.
Shown as percent
voltdb.export.latency.avg
(gauge)
The average time between when records are inserted and when they are acknowledged by the target.
Shown as millisecond
voltdb.export.latency.max
(gauge)
The maximum time between when a record was inserted and when it was acknowledged by the target.
Shown as millisecond
voltdb.export.queue_gap
(gauge)
The number of records missing from the queue for the current stream and partition.
voltdb.export.records_pending
(gauge)
The number of records out of TUPLE_COUNT still waiting to be written to or acknowledged by the target.
voltdb.export.records_queued
(count)
The number of records queued to the export target.
voltdb.export.time_since_last_acked
(gauge)
Time since the last tuple was acknowledged as received by the target.
Shown as second
voltdb.export.time_since_last_queued
(gauge)
Time since the most recent tuple was added to the export queue for this partition.
Shown as second
voltdb.gc.newgen_avg_gc_time
(gauge)
Average time taken by young generation collections.
Shown as millisecond
voltdb.gc.newgen_gc_count
(count)
Total number of times young generation garbage collection was performed.
voltdb.gc.oldgen_avg_gc_time
(gauge)
Average time taken by young generation collections.
Shown as millisecond
voltdb.gc.oldgen_gc_count
(count)
Total number of times old generation garbage collection was performed.
voltdb.idletime.avg_wait
(gauge)
The average amount of time the execution site had to wait for a new task (in microseconds).
Shown as microsecond
voltdb.idletime.max_wait
(gauge)
The maximum amount of time the execution site had to wait for a new task (in nanoseconds).
Shown as microsecond
voltdb.idletime.min_wait
(gauge)
The minimum amount of time the execution site had to wait for a new task (in nanoseconds).
Shown as microsecond
voltdb.idletime.stddev
(gauge)
The standard deviation of the waiting time (in microseconds).
Shown as microsecond
voltdb.idletime.wait.count
(count)
The number of times the execution site had to wait for a new task (that is, the queue was empty).
voltdb.idletime.wait.pct
(gauge)
The percentage of time the execution site was waiting for a new task (that is, the site was idle).
voltdb.idletime.wait.total
(gauge)
The cumulative number of times the execution site had to wait for a new task (that is, the queue was empty).
voltdb.import.failures.count
(count)
The number of import transactions that failed.
voltdb.import.failures.total
(gauge)
The cumulative number of import transactions that failed.
voltdb.import.outstanding_requests
(gauge)
The number of records read from the import stream and waiting to be inserted into the database.
Shown as record
voltdb.import.retries.count
(count)
The number of attempts to replay failed transactions.
voltdb.import.retries.total
(gauge)
The cumulative number of attempts to replay failed transactions.
voltdb.import.successes.count
(count)
The number of import transactions that succeeded.
voltdb.import.successes.total
(gauge)
The cumulative number of import transactions that succeeded.
voltdb.index.entry_count
(gauge)
Number of index entries currently in the partition.
voltdb.index.memory_estimate
(gauge)
Estimated amount of memory consumed by the current index entries.
Shown as kibibyte
voltdb.io.bytes_read
(count)
Total number of bytes of data sent from the client to the host.
Shown as byte
voltdb.io.bytes_written
(count)
Total number of bytes of data sent from the host to the client.
Shown as byte
voltdb.io.messages_read
(count)
Total number of individual messages sent from the client to the host.
Shown as byte
voltdb.io.messages_written
(count)
Total number of individual messages sent from the host to the client.
Shown as byte
voltdb.latency.count
(gauge)
Number of transactions during the interval.
voltdb.latency.interval
(gauge)
Length of the measurement interval: five seconds (5000).
Shown as millisecond
voltdb.latency.max
(gauge)
Maximum latency during the interval
Shown as microsecond
voltdb.latency.p50
(gauge)
50th percentile latency.
Shown as microsecond
voltdb.latency.p95
(gauge)
95th percentile latency.
Shown as microsecond
voltdb.latency.p99
(gauge)
99th percentile latency.
Shown as microsecond
voltdb.latency.p999
(gauge)
99.9th percentile latency.
Shown as microsecond
voltdb.latency.p9999
(gauge)
99.99th percentile latency.
Shown as microsecond
voltdb.latency.p99999
(gauge)
99.999th percentile latency.
Shown as microsecond
voltdb.latency.transactions_per_sec
(gauge)
Number of transactions per second during the interval
Shown as transaction
voltdb.memory.index
(gauge)
Amount of memory currently in use for storing database indexes.
Shown as kibibyte
voltdb.memory.java.max_heap
(gauge)
Maximum heap size of the Java runtime environment.
Shown as kibibyte
voltdb.memory.java.unused
(gauge)
Amount of memory allocated by Java but unused (free space in the Java heap).
Shown as kibibyte
voltdb.memory.java.used
(gauge)
Amount of memory allocated by Java and currently in use by VoltDB.
Shown as kibibyte
voltdb.memory.physical
(gauge)
Total size of physical memory on the server.
Shown as kibibyte
voltdb.memory.pooled
(gauge)
Total size of memory allocated for tasks other than database records, indexes, and strings.
Shown as kibibyte
voltdb.memory.rss
(gauge)
Total amount of memory allocated to the VoltDB processes on the server.
Shown as kibibyte
voltdb.memory.string
(gauge)
Amount of memory currently in use for storing string, binary and geospatial data that is not stored inline in the database record.
Shown as kibibyte
voltdb.memory.tuple_allocated
(gauge)
Amount of memory allocated for the storage of database records (including free space).
Shown as kibibyte
voltdb.memory.tuple_count
(gauge)
Total number of database records currently in memory.
Shown as kibibyte
voltdb.memory.tuple_data
(gauge)
Amount of memory currently in use for storing database records.
Shown as kibibyte
voltdb.procedure.aborts
(count)
Total number of times the procedure was aborted.
Shown as byte
voltdb.procedure.avg_execution_time
(gauge)
Average amount of time it took to execute the stored procedure.
Shown as nanosecond
voltdb.procedure.avg_parameter_set_size
(gauge)
Average size of the parameters passed as input to the procedure.
Shown as byte
voltdb.procedure.avg_result_size
(gauge)
Average size of the results returned by the procedure.
Shown as byte
voltdb.procedure.failures
(count)
Total number of times the procedure failed unexpectedly.
Shown as byte
voltdb.procedure.invocations
(count)
The number of invocations of this procedure at this site.
voltdb.procedure.max_execution_time
(gauge)
Maximum amount of time it took to execute the stored procedure.
Shown as nanosecond
voltdb.procedure.max_parameter_set_size
(gauge)
Maximum size of the parameters passed as input to the procedure.
Shown as byte
voltdb.procedure.max_result_size
(gauge)
Maximum size of the results returned by the procedure.
Shown as byte
voltdb.procedure.min_execution_time
(gauge)
Minimum amount of time it took to execute the stored procedure.
Shown as nanosecond
voltdb.procedure.min_parameter_set_size
(gauge)
Minimim size of the parameters passed as input to the procedure.
Shown as byte
voltdb.procedure.min_result_size
(gauge)
Minimum size of the results returned by the procedure.
Shown as byte
voltdb.procedure.successes
(count)
Total number of times the procedure succeeded.
Shown as byte
voltdb.procedure.timed_invocations
(count)
Total number of invocations used to measure the minimum, maximum, and average execution time.
voltdb.procedureoutput.avg_result_size
(gauge)
The average result set size in bytes.
Shown as byte
voltdb.procedureoutput.invocations.count
(count)
The number of invocations of this procedure.
voltdb.procedureoutput.invocations.total
(gauge)
The cumulative number of invocations of this procedure.
voltdb.procedureoutput.max_result_size
(gauge)
The maximum result set size in bytes.
Shown as byte
voltdb.procedureoutput.min_result_size
(gauge)
The minimum result set size in bytes.
Shown as byte
voltdb.procedureoutput.total_result_size
(gauge)
The total output returned by all invocations of this stored procedure measured in megabytes.
Shown as mebibyte
voltdb.procedureoutput.weighted_perc
(gauge)
A weighted average expressed as a percentage of the result set size returned by invocations of this stored procedure compared to all stored procedure invocations.
voltdb.procedureprofile.aborts.count
(count)
The number of times the procedure was aborted.
voltdb.procedureprofile.aborts.total
(gauge)
The cumulative number of times the procedure was aborted.
voltdb.procedureprofile.avg_time
(gauge)
The average length of time (in nanoseconds) it took to execute the stored procedure.
Shown as nanosecond
voltdb.procedureprofile.failures.count
(count)
The number of times the procedure failed unexpectedly (as opposed to user aborts or expected errors, such as constraint violations).
voltdb.procedureprofile.failures.total
(gauge)
The number of times the procedure failed unexpectedly (as opposed to user aborts or expected errors, such as constraint violations).
voltdb.procedureprofile.invocations.count
(count)
The number of invocations of this procedure.
voltdb.procedureprofile.invocations.total
(gauge)
The total number of invocations of this procedure.
voltdb.procedureprofile.max_time
(gauge)
The maximum length of time (in nanoseconds) it took to execute the stored procedure.
Shown as nanosecond
voltdb.procedureprofile.min_time
(gauge)
The minimum length of time (in nanoseconds) it took to execute the stored procedure.
Shown as nanosecond
voltdb.procedureprofile.weighted_perc
(gauge)
A weighted average expressed as a percentage of the execution time for this stored procedure compared to all stored procedure invocations.
voltdb.queue.avg_wait
(gauge)
The average length of time (in microseconds) tasks were waiting in the queue in the last five seconds.
Shown as microsecond
voltdb.queue.current_depth
(gauge)
The number of tasks currently in the queue.
Shown as task
voltdb.queue.max_wait
(gauge)
The maximum length of time (in microseconds) tasks were waiting in the queue in the last five seconds.
Shown as microsecond
voltdb.queue.poll_count_per_sec
(gauge)
The number of tasks that left the queue
Shown as task
voltdb.snapshot_status.duration
(gauge)
Amount of time it took to complete the snapshot.
Shown as second
voltdb.snapshot_status.size
(gauge)
Total size of the snapshot file.
Shown as byte
voltdb.snapshot_status.throughput
(gauge)
Average number of bytes per second written to the file during the snapshot process.
Shown as byte
voltdb.table.percent_full
(gauge)
Percentage of the row limit currently in use by table rows in this partition. If no row limit is set this is zero.
Shown as percent
voltdb.table.string_data_memory
(gauge)
Total memory used for storing non-inline variable length data associated with this table in this partition.
Shown as kibibyte
voltdb.table.tuple_allocated_memory
(gauge)
Total size of memory allocated for storing inline data associated with this table in this partition. Can exceed currently used memory.
Shown as kibibyte
voltdb.table.tuple_count
(gauge)
Number of rows currently stored for this table in the current partition.
voltdb.table.tuple_data_memory
(gauge)
Total memory used for storing inline data associated with this table and this partition.
Shown as kibibyte
voltdb.table.tuple_limit
(gauge)
The row limit for this table. Row limits are optional and are defined in the schema as a maximum number of rows that any partition can contain. If no row limit is set, this value is null.
Shown as row

Événements

Ce check n’inclut aucun événement.

Checks de service

voltdb.can_connect
Returns CRITICAL if the Agent is unable to reach the configured VoltDB client URL, OK otherwise.
Statuses: ok, critical

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: