maelstromd Environment Variables
maelstromd
configuration is done via environment variables.
- All variables (except LOGXI vars) are prefixed with
MAEL_
.
- All variables are upper case
- Variables are bound to the
Config
struct in config.go using envconfig
Logging#
maelstromd
uses mgutz/logxi for logging, which has a set of environment variables
that control the logging format. Please read the logxi docs for more details.
Variable |
Description |
Example |
LOGXI |
Sets log levels |
LOGXI=*=DBG |
LOGXI_FORMAT |
Sets format for logger |
LOGXI_FORMAT=text |
LOGXI_COLORS |
Color schema for log levels |
LOGXI_COLORS=TRC,DBG,WRN=yellow,INF=green,ERR=red |
HTTP#
Variable |
Description |
Required? |
Default |
MAEL_PUBLIC_PORT |
HTTP port to bind to for external HTTP reqs |
No |
80 |
MAEL_PUBLIC_HTTPS_PORT |
HTTP port to bind to for external HTTPS reqs |
No |
443 |
MAEL_PRIVATE_PORT |
HTTP port to bind to for internal HTTP reqs (node to node and RPC calls) |
No |
8374 |
MAEL_PRIVATE_TLS_DIR |
Directory containing .key and .crt TLS keys for private port |
No |
None |
MAEL_HTTP_READ_TIMEOUT |
Max duration (seconds) for reading the request (including body) |
No |
300 |
MAEL_HTTP_WRITE_TIMEOUT |
Duration (seconds) before timing out writes of the response |
No |
310 |
MAEL_HTTP_IDLE_TIMEOUT |
Max time to wait (seconds) for next req when keep-alives are enabled |
No |
310 |
Database#
Variable |
Description |
Required? |
Default |
MAEL_SQL_DRIVER |
sql db driver to use (sqlite3, mysql) |
Yes |
None |
MAEL_SQL_DSN |
DSN for maelstrom sql db |
Yes |
None |
Example DSNs:#
Driver |
Project |
Example DSN |
sqlite3 |
go-sqlite3 |
file:test.db?cache=shared&mode=memory |
mysql |
go-sql-driver/mysql |
user:passwd@(hostname:3306)/mael |
postgres |
lib/pq |
postgres://user:passwd@host:port/mael |
Refresh Intervals#
Variable |
Description |
Required? |
Default |
MAEL_CRON_REFRESH_SECONDS |
Interval to reload cron rules from db |
No |
60 |
System Resources#
Variable |
Description |
Required? |
Default |
MAEL_TOTAL_MEMORY |
Memory (MiB) to make available to containers |
No |
System total memory |
MAEL_DOCKER_PRUNE_MINUTES |
Interval to run the docker image pruner |
No |
0 (off) |
MAEL_DOCKER_PRUNE_UNREG_IMAGES |
If true, remove images not associated with components |
No |
false |
MAEL_DOCKER_PRUNE_UNREG_KEEP |
Comma separated list of image tags to never delete |
No |
None |
Read more about Docker image pruning
System Management#
Variable |
Description |
Required? |
Default |
MAEL_INSTANCE_ID |
ID of instance with VM provider (e.g. EC2 instance id) |
No 1 |
None |
MAEL_NODE_LIVENESS_SECONDS |
If a node doesn’t report status within this interval it will be removed from the cluster |
No |
300 |
MAEL_SHUTDOWN_PAUSE_SECONDS |
Seconds to pause before stopping containers at shutdown |
No |
0 |
MAEL_TERMINATE_COMMAND |
Command to run if instance terminated. Only invoked if AWS lifecycle termination runs, not if SIGTERM/SIGINT received. |
No |
None |
MAEL_AWS_TERMINATE_QUEUE_URL |
SQS queue URL for lifecycle hook termination queue |
No 1 |
None |
MAEL_AWS_TERMINATE_MAX_AGE_SECONDS |
SQS messages older than this many seconds will be automatically deleted. This prevents stale messages from getting stuck in the queue. |
No |
600 |
MAEL_AWS_SPOT_TERMINATE_POLL_SECONDS |
If > 0, maelstromd will poll EC2 metadata endpoint checking for spot termination requests. If action=stop or terminate, maelstromd will shutdown gracefully. Value of setting sets the polling interval in seconds. |
No |
0 |
1: Required for AWS Auto Scale Lifecycle Hook support
Debugging#
Variable |
Description |
Required? |
Default |
MAEL_LOG_GC_SECONDS |
If set, print GC stats every x seconds |
No |
None |
MAEL_CPU_PROFILE_FILENAME |
If set, write Go profiling info to this file |
No |
None |
MAEL_PPROF |
If true, expose pprof HTTP routes |
No |
false |
pprof
routes are bound to the internal gateway port. For example, to get a heap profile, set MAEL_PPROF=true
and
request the /_mael/pprof/heap
endpoint:
curl -sK -v http://localhost:8374/_mael/pprof/heap > heap.out