crate_adapter

command module
v0.0.0-...-7521c8d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2020 License: Apache-2.0 Imports: 24 Imported by: 0

README

==========================
CrateDB Prometheus Adapter
==========================

This is an adapter that accepts Prometheus remote read/write requests,
and sends them on to CrateDB. This allows using CrateDB as long term storage
for Prometheus.

Requires CrateDB **3.1.0** or greater.

Building
========

::

  go get github.com/crate/crate_adapter
  cd ${GOPATH-$HOME/go}/src/github.com/crate/crate_adapter
  go build

Usage
=====

Create the following table in your CrateDB database:

.. code-block:: sql

  CREATE TABLE "metrics" (
      "timestamp" TIMESTAMP,
      "labels_hash" STRING,
      "labels" OBJECT(DYNAMIC),
      "value" DOUBLE,
      "valueRaw" LONG,
      "day__generated" TIMESTAMP GENERATED ALWAYS AS date_trunc('day', "timestamp"),
      PRIMARY KEY ("timestamp", "labels_hash", "day__generated")
    ) PARTITIONED BY ("day__generated");

Depending on data volume and retention you might want to optimize your partitioning scheme
and create hourly, weekly,... partitions.

Then run the adapter::

  ./crate_adapter

By default the adapter will listen on port ``9268``.
This and more is configurable via command line flags, which you can see by passing the ``-h`` flag.

The CrateDB endpoints are provided in a configuration file, which defaults to
``config.yml`` (``-config.file`` flag). The included example configuration file forwards
samples to a CrateDB running on ``localhost`` on port ``5432``.

Adapter Crate Endpoint Configuration
====================================

The CrateDB endpoints that the adapter writes to are configured in a YAML-based configuration
file provided by the ``-config.file`` flag. If multiple endpoints are listed, the adapter will
load-balance between them. The options (for one example endpoint) are as below:

.. code-block:: yaml

  crate_endpoints:
  - host: "localhost"         # Host to connect to (default: "localhost").
    port: 5432                # Port to connect to (default: 5432).
    user: "crate"             # Username to use (default: "crate")
    password: "mypass"        # Password to use (default: "").
    schema: "prometheus"      # Schema to use (default: "").
    max_connections: 5        # The maximum number of concurrent connections (default: 5).
    enable_tls: false         # Whether to connect using TLS (default: false).
    allow_insecure_tls: false # Whether to allow insecure / invalid TLS certificates (default: false).

Prometheus Configuration
========================

Add the following to your ``prometheus.yml``:

.. code-block:: yaml

  remote_write:
     - url: http://localhost:9268/write
  remote_read:
     - url: http://localhost:9268/read

The adapter also exposes Prometheus metrics on ``/metrics``, and can be scraped in the usual fashion.

Running with systemd
====================

Copy `<config.yml>`_ to ``/etc/crate_adapter/config.yml`` and adjust as needed.

Copy `<systemd/crate_adapter.service>`_ to ``/etc/systemd/system/crate_adapter.service`` or
just link the service file by running: ``sudo systemctl link $(pwd)/crate_adapter.service``
and run::

  systemctl daemon-reload

Change flag-based configuration by changing the settings in ``/etc/default/crate_adapter``
based on the `<systemd/crate_adapter.default>`_ template. After that you can::

  systemctl start crate_adapter
  systemctl enable crate_adapter

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL