Remote

This section describes how to deploy and host a Hydra Dashboard server on a remote shared server.

Deploying the dashboard on a shared server is identical to the local setup. Follow the instructions for the local setup and make sure that the server and ports exposed by the docker-compose file are accessible for users to successfully push data to it.

User configuration

By default, Hydra pushes metrics to http://localhost:3333. To use a shared remote server you need to configure the Metrics service. Place this file in the metrics directory at at ~/.triplequote/metrics/config/metrics-service.conf (for changing the location, see Advanced Configuration).

# mandatory: include the built-in settings tree
include "application.conf"

triplequote.dashboard.client {
  # Optional user ID override
  # metricsUserId = ${user.name}

  # Optional host ID (e.g. hostname)
  # metricsHostId = ""

  # Server address to push the metrics data
  serverUrl = "http://localhost:3333/metrics"

  # Optional HTTP basic authentication
  # clientUsername = ""
  # clientPassword = ""
}

Note that you'll have to restart the metrics service each time you make changes to this file, like instructed here.

Note

You can setup several configurations that push to different servers. See Advanced Configuration for details.

The metrics uploader service supports basic HTTP authentication through the clientUsername and clientPassword properties. A possible setup would store these per-user in the configuration file, while the shared internal dashboard server URL would be configured in the project build settings).

Dashboard Server Configuration

Each service offers a high degree of configurability to meet your deployment requirements.

InfluxDB

For the influxdb service we use the official influxdb docker image. Refer to the "Configuration" section on the dockerhub influxdb page for details on how to configure influxdb with docker.

Note that if the influxdb exposed port is changed, the server service needs to be started with the proper URL to connect to the influxdb service. In practice, this means that the system property -Dtriplequote.dashboard.server.datastore.influxDB.url passed to the server service must be updated accordingly. Furthermore, the Grafana hydraDB datasource configuration should also be updated or Grafana will report errors when opening the different dashboards.

Grafana dashboard

The dashboard_grafana docker image is currently based on Grafana 5.0.3 and it's preconfigured to allow anonymous access to all dashboards. The administrator username/password is the Grafana's default, i.e., admin/admin. Refer to the Grafana documentation for how to configure Grafana in detail. However, note that in the future we might migrate away from Grafana, so we recommend not to invest too much time into customization.

Note that the grafana service exposed port can be changed as it suits you best without impacting any of the other services.

Server

The server service is started with the following HOCON configuration:

triplequote.dashboard.server {
  logLevel = "INFO"

  address = "0.0.0.0"
  port = 3333

  datastore.influxDB {
    name = "hydraDB"
    url = "http://localhost:8086"
    username = "root"
    password = "root"

    retentionPolicy {
      name = "hydraRetentionPolicy"
      duration = "180d"
      shardDuration = "1d"
      replicationFactor = 1
    }
  }
}

Each key in the configuration can be overridden when starting the server service via system properties. For instance, as mentioned in the previous section about configuring InfluxDB, if the influxdb exposed port is changed, the URL used by the server to connect to influxdb must be updated by passing the system property -Dtriplequote.dashboard.server.datastore.influxDB.url.

Note that the server also defines the retention policy for the data persisted in influxdb. The current default is to retain data for six months, but you should feel free to change this as it suits you best.

Logging

The server is configured to log to the standard output using the following logback configuration:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss} [%level] %logger{15} in %thread - %message%n%xException</pattern>
        </encoder>
    </appender>

    <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="STDOUT" />
    </appender>

    <root level="${triplequote.dashboard.server.logLevel:-INFO}">
        <appender-ref ref="ASYNCSTDOUT" />
    </root>

</configuration>

It's possible to provide a different logback configuration via the system property -Dlogback.configurationFile=/path/to/config.xml. However, note that to log at "DEBUG" level you only need to set -Dtriplequote.dashboard.server.logLevel="DEBUG" before the server is started.