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.