Configuration
Tasklist is a Spring Boot application. That means all ways to configure
a Spring Boot application can be applied. By default, the configuration for Tasklist is stored in a YAML file application.yml
. All Tasklist related settings are prefixed
with zeebe.tasklist
. The following parts are configurable:
- Webserver
- GraphQL API access
- Elasticsearch connection
- Zeebe Broker connection
- Zeebe Elasticsearch exporter
- Authentication
- Monitoring and health probes
- Logging configuration
#
WebserverTasklist supports customizing the context-path by using default spring configuration.
Example for application.yml
:
server.servlet.context-path: /tasklist
Example for environment variable:
SERVER_SERVLET_CONTEXT_PATH=/tasklist
Default context-path is /
#
GraphQL API accessTasklist provides a GraphQL API under the endpoint /graphql
. Clients can access this API by using a JWT access token in an authorization header Authorization: Bearer <JWT>
.
Tasklist server needs the following settings to validate the token:
Setting | Description | Example |
---|---|---|
zeebe.tasklist.client.audience | Tasklist tries to match this with aud in JWT | tasklist.camunda.io |
zeebe.tasklist.client.clusterId | Tasklist tries to match this with scope in JWT | cafe-0815-0235-a221-21cc6df91dc5 |
spring.security.oauth2.resourceserver.jwt.jwk-set-uri (recommended) | Complete URI to get public keys for JWT validation | https://weblogin.cloud.company.com/.well-known/jwks.json |
OR | ||
spring.security.oauth2.resourceserver.jwt.issuer-uri | URI to get public keys for JWT validation | https://weblogin.cloud.company.com/ |
The settings can be given in application.yml (eg. zeebe.tasklist.client.audience: tasklist.camunda.io
) or
as environment variables (eg. ZEEBE_TASKLIST_CLIENT_AUDIENCE=tasklist.camunda.io
)
The API client needs to obtain JWT token and send it in each request to graphql
in an authorization header as described above.
#
ElasticsearchTasklist stores and reads data in/from Elasticsearch.
#
Settings to connectTasklist supports basic authentication for elasticsearch. Set the appropriate username/password combination in the configuration to use it.
Name | Description | Default value |
---|---|---|
zeebe.tasklist.elasticsearch.clusterName | Clustername of Elasticsearch | elasticsearch |
zeebe.tasklist.elasticsearch.url | URL of Elasticsearch REST API | http://localhost:9200 |
zeebe.tasklist.elasticsearch.username | Username to access Elasticsearch REST API | - |
zeebe.tasklist.elasticsearch.password | Password to access Elasticsearch REST API | - |
#
Settings for shards and replicasTasklist creates the template with index settings named tasklist-<version>_template
that Elasticsearch will use for all Tasklist indices.
These settings can be changed.
Following configuration parameters will define the settings:
Name | Description | Default value |
---|---|---|
zeebe.tasklist.elasticsearch.numberOfShards | How many shards Elasticsearch uses for all Tasklist indices | 1 |
zeebe.tasklist.elasticsearch.numberOfReplicas | How many replicas Elasticsearch uses for all Tasklist indices | 0 |
These values are applied only on first startup of Tasklist or during version upgrade. After Tasklist ELS schema is created, settings may be adjusted directly in ELS template and the new settings will be applied to indices created after adjustment.
#
A snippet from application.yml:#
Zeebe broker connectionTasklist needs a connection to Zeebe Broker to start the import.
#
Settings to connectName | Description | Default value |
---|---|---|
zeebe.tasklist.zeebe.brokerContactPoint | Broker contact point to zeebe as hostname and port | localhost:26500 |
#
A snippet from application.yml:#
Zeebe Elasticsearch exporterTasklist imports data from Elasticsearch indices created and filled in by Zeebe Elasticsearch Exporter. Therefore settings for this Elasticsearch connection must be defined and must correspond to the settings on Zeebe side.
#
Settings to connect and import:Name | Description | Default value |
---|---|---|
zeebe.tasklist.zeebeElasticsearch.clusterName | Cluster name of Elasticsearch | elasticsearch |
zeebe.tasklist.zeebeElasticsearch.url | URL of Elasticsearch REST API | http://localhost:9200 |
zeebe.tasklist.zeebeElasticsearch.host | Hostname where Elasticsearch is running | localhost |
zeebe.tasklist.zeebeElasticsearch.port | Port of Elasticsearch REST API | 9200 |
zeebe.tasklist.zeebeElasticsearch.prefix | Index prefix as configured in Zeebe Elasticsearch exporter | zeebe-record |
zeebe.tasklist.zeebeElasticsearch.username | Username to access Elasticsearch REST API | - |
zeebe.tasklist.zeebeElasticsearch.password | Password to access Elasticsearch REST API | - |
#
A snippet from application.yml:#
Monitoring and health probesTasklist includes Spring Boot Actuator inside, that provides number of monitoring possibilities., e.g. health check (http://localhost:8080/actuator/health) and metrics (http://localhost:8080/actuator/prometheus) endpoints.
Tasklist uses following Actuator configuration by default:
With this configuration following endpoints are available for use out of the box:
<server>:8080/actuator/prometheus
Prometheus metrics
<server>:8080/actuator/health/liveness
Liveness probe
<server>:8080/actuator/health/readiness
Readiness probe
#
Example snippets to use Tasklist probes in Kubernetes:For details to set Kubernetes probes parameters see: Kubernetes configure probes
#
Readiness probe as yaml config:#
Liveness probe as yaml config:#
LoggingTasklist uses Log4j2 framework for logging. In distribution archive as well as inside a Docker image config/log4j2.xml
logging configuration files is included,
that can be further adjusted to your needs:
By default, Console log appender will be used.
#
JSON logging configurationYou can choose to output logs in JSON format (Stackdriver compatible). To enable it, define
the environment variable TASKLIST_LOG_APPENDER
like this:
#
An example of application.yml fileThe following snippet represents the default Tasklist configuration, which is shipped with the distribution. It can be found inside the config
folder (config/application.yml
)
and can be used to adjust Tasklist to your needs.