Installing the Dashboard
The Administration Dashboard requires Java 8. It uses the default Sophora directory structure (see Configuring the Sophora Server).
To install the Dashboard,
- unpack the archive to a folder named "apps",
- create a symlink named "sophora-dashboard2" to the extracted folder inside the "apps" folder,
- create a folder for the instance date like "dashboard2",
- create a symlink to
../apps/sophora-dashboard2/dashboard.sh
in that folder, - create a symlink to
../apps/sophora-dashboard2/yo
in that folder, - create the file
config/dashboard-config.json
as described below.
The folder structure should look like depicted (question marks are symlinks). In case the logs and persistence folders don't exist, they will be created automatically once the Dashboard is started.
Configuration
The Dashboard is designed to do most of its configuration automatically. However, some initial settings have to be provided and some optional ones can be added. All the configuration is done in the config/dashboard-config.json
file. Below you can see an example configuration:
{
httpPort: 8090,
login: "dashboard",
password: "dashboardSecret",
vmargs: "-Xmx512m",
hostname: "test.subshell.com",
defaultPollInterval: 10000,
statusPollInterval: 1000,
documentCountInterval: 3600000,
server: {
sophoraUsername: "admin",
sophoraPassword: "secret",
masterHostname: "trunk.subshell.com",
masterHttpPort: 1196,
contentApiPath: "/content-api",
jolokiaUsername: "jolokia",
jolokiaPassword: "secret",
jolokiaPath: "/jolokia",
hasEmbeddedSolr: true,
solrUsername: "solr",
solrPassword: "solr",
solrPath: "/solr",
tomcatJmx: {
port: 9004,
username: "",
password: ""
}
},
importer: {
jolokiaUsername: "importerjmx",
jolokiaPassword: "secret",
jolokiaPath: "/jolokia"
},
indexer: {
jolokiaUsername: "admin",
jolokiaPassword: "secret",
jolokiaPath: "/jolokia"
},
mail: {
recipients: [
"recipient1@subshell.com",
"recipient2@subshell.com"
],
smtpHost: "localhost",
smtpPort: 25,
username: "user",
password: "secret",
fromAddress: "sophora-dashboard@yourdomain.com",
notificationDelay: 30
},
links: [
{ url: "http://www.subshell.com/de/index.html",
description: "Subshell"
},
{ url: "https://github.com/airbnb/javascript",
description: "JavaScript Style Guide"
}
]
}
The following list explains the configuration options:
Key | Explanation | Example | Value type | Required | Default |
---|---|---|---|---|---|
httpPort | The port at which the Dashboard will be reachable. | 8090 | Integer | no | 8080 |
login | The login username for the Dashboard Basic Authentication. If omitted, no credentials are required for access. | "dashboard" | String | no | "" |
password | The login password for the Dashboard Basic Authentication. If omitted, no credentials are required for access. | "dashboardPassword" | String | no | "" |
vmargs | The arguments that should be passed to the Java VM. | "-Xmx512m" | String | no | "" |
hostname | Hostname of the dashboard server. Use this if the automatic resolution of the hostname fails or the external host to reach the Dashboard is different. | "test.subshell.com" | String | no | determined by operating system |
defaultPollInterval | The Interval in which the Dashboard polls most of the values it aggregates from other components in milliseconds. Minimal value is 1000. | 20000 | Integer | no | 10000 |
statusPollInterval | The interval in which the Dashboard polls status (online/offline) information from other components in milliseconds. Minimal value is 100. | 2500 | Integer | no | 1000 |
documentCountInterval | The interval in which the Dashboard counts the documents on all the cluster nodes and Sophora Staging Servers in milliseconds. This is a very expensive operation, hence intervals smaller than 5 minutes (300000) are strongly discouraged. | 7200000 | Integer | no | 3600000 |
server | A block of configuration applied to the handling of all Sophora Servers in the cluster. See the corresponding table below for all available options. | JSON Object | yes | ||
importer | A block of configuration applied to the handling of all Sophora Importers in the cluster. See the corresponding table below for all available options. | JSON Object | yes | ||
indexer | A block of configuration applied to the handling of all Sophora Indexers in the cluster. See the corresponding table below for all available options. | JSON Object | yes | ||
mail | A block of configuration used to send email notifications. See the corresponding table below for all available options. If no mail block exists, the Dashboard does not send emails. | JSON Object | no | ||
links | A collection of configurable links that will be visible in a menu inside the dashboard's navigation bar. Each link is a JSON Object, that must consist of an url and a description . The latter will be used as the link name shown in the menu. | JSON Array | no | ||
ibfEnabled | Activates support for checking document counts efficiently using invertible bloom filters. Set this to true if you have activated the configuration option sophora.ibf.enabled in the sophora.properties of all Sophora Servers monitored by this Dashboard instance. | true | Boolean | no | false |
Key | Explanation | Example | Value type | Required | Default |
---|---|---|---|---|---|
sophoraUsername | The username that is used to poll values from the Content API. | "admin" | String | yes | - |
sophoraPassword | The password that is used to poll values from the Content API. | "secret" | String | yes | - |
masterHostname | The hostname of the Sophora Primary Server. | "sophora.example.com" | String | yes | - |
masterHttpPort | The HTTP port of the Sophora Primary Server. | 1196 | Integer | yes | - |
masterHttpUseSsl | Set to true if the Sophora Primary (Master) connection uses https. | true | Boolean | no | false |
contentApiPath | The part of the Content API URL after the port. | "/content-api" | String | no | "/content-api" |
jolokiaUsername | The username for the Jolokia service. | "jolokia" | String | no | "jolokia" |
jolokiaPassword | The password for the Jolokia service. | "jolokia" | String | no | "jolokia" |
jolokiaPath | The part of the Jolokia URL after the port. | "/jolokia" | String | no | "/jolokia" |
hasEmbeddedSolr | Set to true if the Sophora Server uses an embedded Solr which should be requested. | true | Boolean | no | true |
solrUsername | The username for the Solr service. | "solr" | String | no | "solr" |
solrPassword | The password for the Solr service. | "solr" | String | no | "solr" |
solrPath | The part of the Solr URL after the port. | "/solr" | String | no | "/solr" |
tomcatJmx | A block of configuration to access the JMX of any Tomcat server connected to the Sophora system. | see rows below | JSON Object | no | see rows below |
tomcatJmx > port | The port of the JMX service of the Tomcats (all Tomcats need to offer JMX on the same port). | 9004 | Integer | no | 9004 |
tomcatJmx > username | The username used to access the JMX service of the Tomcats (all Tomcats need to be configured alike). | "jmx-user" | String | no | "" |
tomcatJmx > password | The password used to access the JMX service of the Tomcats (all Tomcats need to be configured alike). | "password" | String | no | "" |
Key | Explanation | Example | Value type | Required | Default |
---|---|---|---|---|---|
jolokiaUsername | The username for the Jolokia service. | "jolokia" | String | no | "jolokia" |
jolokiaPassword | The password for the Jolokia service. | "jolokia" | String | no | "jolokia" |
jolokiaPath | The part of the Jolokia URL after the port. | "/jolokia" | String | no | "/jolokia" |
Key | Explanation | Example | Value type | Required | Default |
---|---|---|---|---|---|
recipients | A list of mail addresses that will be notified in case of problems detected by the Dashboard. | ["recipient1@example.com", "recipient2@example.com"] | JSON Array of Strings | yes | - |
smtpHost | The hostname for the SMTP server used. | "smtp.example.com" | String | no | "localhost" |
smtpPort | The port for the SMTP server used. | 25 | Integer | no | 25 |
user | The username used to login to the SMTP service. | "mail-user" | String | no | - |
password | The password used to login to the SMTP service. | "secret" | String | no | - |
fromAddress | The address used for the FROM field in sent e-mails. | "sophora-dashboard@yourdomain.com" | String | no | determined automatically |
notificationDelay | The delay before a notification mail is sent in case of a problem in seconds. No notification will be sent if the problem is fixed within the delay. | 60 | Integer | no | 30 |
Ports
The following ports are in use for the communication between the Dashboard and Sophora’s components:
Dashboard – Sophora Primary (Master), Staging Server
- HTTP-port of the server. Also, the communication of the DeskClient, the Content API and Solr run on this port.
- Set
masterHttpUseSsl
totrue
if the server uses HTTPS.
Dashboard – Importer
- Jolokia-port. Configurable via the option
sophora.importer.jolokia.port
in sophora-importer.properties. 1496 is set as the default.
Dashboard – Tomcats
- JMX-port of the Tomcat. 9004 is set as the default in the DeskClient.
JMX in Tomcat
The Dashboard uses the JMX-URLs as follows:
service:jmx:rmi:///jndi/rmi://<HOSTNAME>:<PORT>/jmxrmi
The port and the authentication can be configured via dashboard-config.json.
In order to allow access through firewall and VPN tunnels you can configure the JmxRemoteLifecycleListener. For more information see JMX Remote Lifecycle Listener.
Web Application Configuration
Webapps/deliveries only appear in the Dashboard, if sophora.delivery.externalUrl
is configured (since Delivery 2.1.16, 2.2.6 and 2.3.0).
The configured URL need to point at the Tomcat context of the webapp and need to be accessible by the Dashboard.
More about configuration parameters.
Starting and Stopping the Dashboard Application
To start the Dashboard, use the start and stop script dashboard.sh
that comes with the installation. In a console in the directory of the script, type ./dashboard.sh start
or ./dashboard.sh stop
.
Using HTTP Proxies
If the Dashboard is required to use a HTTP proxy to connect to Sophora servers, the JVM system properties http.proxyHost
and http.proxyPort
may be used. You can use the vmargs
configuration property of the Dashboard in config/dashboard-config.json
, for example:
{
...
vmargs: "-Dhttp.proxyHost=10.0.0.1 -Dhttp.proxyPort=8080",
...
}
Troubleshooting
The Dashboard persists tools and servers it was once connected to in the /persistence folder. It can help to stop the Dashboard remove the contents of this folder and start the Dashboard again. Only remove the contents of this folder if the Dashboard is not running.