Documentation

This commit is contained in:
Alex Dadgar 2017-02-13 10:18:34 -08:00
parent 238b4bcafd
commit d6d2884125
3 changed files with 26 additions and 3 deletions

View file

@ -358,6 +358,10 @@ The `Task` object supports the following keys:
sends `SIGTERM` if the task doesn't die after the `KillTimeout` duration has sends `SIGTERM` if the task doesn't die after the `KillTimeout` duration has
elapsed. The default `KillTimeout` is 5 seconds. elapsed. The default `KillTimeout` is 5 seconds.
* `leader` - Specifies whether the task is the leader task of the task group. If
set to true, when the leader task completes, all other tasks within the task
group will be gracefully shutdown.
* `LogConfig` - This allows configuring log rotation for the `stdout` and `stderr` * `LogConfig` - This allows configuring log rotation for the `stdout` and `stderr`
buffers of a Task. See the log rotation reference below for more details. buffers of a Task. See the log rotation reference below for more details.
@ -681,6 +685,9 @@ README][ct].
"SIGUSR1" or "SIGINT". This option is required if the `ChangeMode` is "SIGUSR1" or "SIGINT". This option is required if the `ChangeMode` is
`signal`. `signal`.
* `perms` - Specifies the rendered template's permissions. File permissions are
given as octal of the unix file permissions rwxrwxrwx.
* `Splay` - Specifies a random amount of time to wait between 0ms and the given * `Splay` - Specifies a random amount of time to wait between 0ms and the given
splay value before invoking the change mode. Should be specified in splay value before invoking the change mode. Should be specified in
nanoseconds. nanoseconds.

View file

@ -52,6 +52,10 @@ job "docs" {
If the task does not exit before the configured timeout, `SIGKILL` is sent to If the task does not exit before the configured timeout, `SIGKILL` is sent to
the task. the task.
- `leader` `(bool: false)` - Specifies whether the task is the leader task of
the task group. If set to true, when the leader task completes, all other
tasks within the task group will be gracefully shutdown.
- `logs` <code>([Logs][]: nil)</code> - Specifies logging configuration for the - `logs` <code>([Logs][]: nil)</code> - Specifies logging configuration for the
`stdout` and `stderr` of the task. `stdout` and `stderr` of the task.

View file

@ -79,9 +79,9 @@ $ nomad logs -stderr 04d9627d
While the logs command works well for quickly accessing application logs, it While the logs command works well for quickly accessing application logs, it
generally does not scale to large systems or systems that produce a lot of log generally does not scale to large systems or systems that produce a lot of log
output, especially for the long-term storage of logs. Nomad only retains log output, especially for the long-term storage of logs. Nomad's retention of log
files for a configurable period of time, so chatty applications should use a files is best effort, so chatty applications should use a better log retention
better log retention strategy. strategy.
Since applications log to the `alloc/` directory, all tasks within the same task Since applications log to the `alloc/` directory, all tasks within the same task
group have access to each others logs. Thus it is possible to have a task group group have access to each others logs. Thus it is possible to have a task group
@ -91,6 +91,10 @@ as follows:
group "my-group" { group "my-group" {
task "server" { task "server" {
# ... # ...
# Setting the server task as the leader of the task group allows us to
# signal the log shipper task to gracefully shutdown when the server exits.
leader = true
} }
task "log-shipper" { task "log-shipper" {
@ -103,3 +107,11 @@ In the above example, the `server` task is the application that should be run
and will be producing the logs. The `log-shipper` reads those logs from the and will be producing the logs. The `log-shipper` reads those logs from the
`alloc/logs/` directory and sends them to a longer-term storage solution such as `alloc/logs/` directory and sends them to a longer-term storage solution such as
Amazon S3 or an internal log aggregation system. Amazon S3 or an internal log aggregation system.
When using the log shipper pattern, especially for batch jobs, the main task
should be marked as the [leader task](/docs/job-specification/task.html#leader).
By marking the main task as a leader, when the task completes all other tasks
within the group will be gracefully shutdown. This allows the log shipper to
finish sending any logs and then exiting itself. The log shipper should set a
high enough [`kill_timeout`](/docs/job-specification/task.html#kill_timeout)
such that it can ship any remaining logs before exiting.