Events HTTP API
The /event/stream
endpoint is used to stream events generated by Nomad.
Event Stream
This endpoint streams a servers backlog of events as well as new events as they occur. The stream will be kept alive until the connection is closed.
Method | Path | Produces |
---|---|---|
GET | /v1/event/stream | application/json |
The table below shows this endpoint's required ACLs. Due to the nature of this endpoint individual topics require specific policies.
Note that if you do not include a topic
parameter all topics will be included
by default, requiring a management token.
Topic | ACL Required |
---|---|
* | management |
ACLToken | management |
ACLPolicy | management |
Job | namespace:read-job |
Allocation | namespace:read-job |
Deployment | namespace:read-job |
Evaluation | namespace:read-job |
Node | node:read |
Parameters
index
(int: 0)
- Specifies the index to start streaming events from. If the requested index is no longer in the buffer the stream will start at the next available index.namespace
(string: "default")
- Specifies the target namespace to filter on. Specifying*
includes all namespaces for event types that support namespaces. If you specify all namespaces (*
) you'll either need a management token, or an ACL Policy that explicitly applies to all namespaces (*
).topic
(topic:filter_key: "*:*")
- Specifies a topic to subscribe to and filter on. The default is to subscribe to all topics. Multiple topics may be specified by passing multipletopic
parameters. A valid topic parameter includes atopic
type and an optionalfilter_key
separated by a colon:
. As an example?topic=Deployment:redis
would subscribe to allDeployment
events for a job redis. an additional topic&topic=Deployment:web
would include deployment events for redis and web. To only subscribe toNode
events a topic parameter of?topic=Node
without a separator value would be used.?topic=Node:*
is also valid.
Event Topics
Topic | Output |
---|---|
ACLToken | ACLToken |
ACLPolicy | ACLPolicy |
Allocation | Allocation (no job information) |
Job | Job |
Evaluation | Evaluation |
Deployment | Deployment |
Node | Node |
NodeDrain | Node |
Event Types
Type |
---|
ACLTokenUpserted |
ACLTokenDeleted |
ACLPolicyUpserted |
ACLPolicyDeleted |
AllocationCreated |
AllocationUpdated |
AllocationUpdateDesiredStatus |
DeploymentStatusUpdate |
DeploymentPromotion |
DeploymentAllocHealth |
EvaluationUpdated |
JobRegistered |
JobDeregistered |
JobBatchDeregistered |
NodeRegistration |
NodeDeregistration |
NodeEligibility |
NodeDrain |
NodeEvent |
PlanResult |
Sample Request
# Subscribe to all events and topics in the default namespace $ curl -s -v -N http://127.0.0.1:4646/v1/event/stream
# Subscribe to all events and topics in the default namespace
$ curl -s -v -N http://127.0.0.1:4646/v1/event/stream
# Subscribe to all events and topics in all namespaces $ curl -s -v -N http://127.0.0.1:4646/v1/event/stream?namespace=*
# Subscribe to all events and topics in all namespaces
$ curl -s -v -N http://127.0.0.1:4646/v1/event/stream?namespace=*
# Start at index 100 and subscribe to all Evaluation events $ curl -s -v -N http://127.0.0.1:4646/v1/event/stream?index=100&topic=Evaluation
# Start at index 100 and subscribe to all Evaluation events
$ curl -s -v -N http://127.0.0.1:4646/v1/event/stream?index=100&topic=Evaluation
$ curl -G -s -v -N \ --data-urlencode "topic=Node:ccc4ce56-7f0a-4124-b8b1-a4015aa82c40" \ --data-urlencode "topic=Deployment" \ --data-urlencode "topic=Job:web" \ http://127.0.0.1:4646/v1/event/stream
$ curl -G -s -v -N \
--data-urlencode "topic=Node:ccc4ce56-7f0a-4124-b8b1-a4015aa82c40" \
--data-urlencode "topic=Deployment" \
--data-urlencode "topic=Job:web" \
http://127.0.0.1:4646/v1/event/stream
Sample Response
{ "Index": 7, "Events": [ { "Topic": "Node", "Type": "NodeRegistration", "Key": "ccc4ce56-7f0a-4124-b8b1-a4015aa82c40", "Namespace": "", "FilterKeys": null, "Index": 7, "Payload": { "Node": { "ID": "ccc4ce56-7f0a-4124-b8b1-a4015aa82c40", "Datacenter": "dc1", "Name": "nomad-4", "HTTPAddr": "127.0.0.1:4646", "TLSEnabled": false, "Attributes": { "cpu.arch": "amd64", "cpu.frequency": "4200", "cpu.modelname": "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz", "cpu.numcores": "8", "cpu.totalcompute": "33600", "driver.docker": "1", "driver.docker.bridge_ip": "172.17.0.1", "driver.docker.os_type": "linux", "driver.docker.runtimes": "runc", "driver.docker.version": "19.03.13", "driver.mock": "true", "driver.mock_driver": "1", "driver.raw_exec": "1", "kernel.name": "linux", "kernel.version": "5.4.0-48-generic", "memory.totalbytes": "16525733888", "nomad.advertise.address": "127.0.0.1:4646", "nomad.revision": "8c88f29bff0849720e33b0cc73af87495358f3b8", "nomad.version": "0.13.0-dev", "os.name": "ubuntu", "os.signals": "SIGBUS,SIGFPE,SIGTRAP,SIGTTOU,SIGWINCH,SIGXFSZ,SIGHUP,SIGILL,SIGALRM,SIGCHLD,SIGSYS,SIGXCPU,SIGPROF,SIGQUIT,SIGTERM,SIGUSR2,SIGCONT,SIGIO,SIGSEGV,SIGTTIN,SIGIOT,SIGKILL,SIGPIPE,SIGABRT,SIGINT,SIGSTOP,SIGTSTP,SIGURG,SIGUSR1", "os.version": "20.04", "unique.cgroup.mountpoint": "/sys/fs/cgroup/systemd", "unique.hostname": "x1c", "unique.network.ip-address": "127.0.0.1", "unique.storage.bytesfree": "299488927744", "unique.storage.bytestotal": "502468108288", "unique.storage.volume": "/dev/nvme0n1p2" }, "NodeResources": { "Cpu": { "CpuShares": 33600 }, "Memory": { "MemoryMB": 15760 }, "Disk": { "DiskMB": 285614 }, "Networks": [ { "Mode": "bridge", "Device": "", "CIDR": "", "IP": "", "MBits": 0, "DNS": null, "ReservedPorts": null, "DynamicPorts": null }, { "Mode": "host", "Device": "lo", "CIDR": "127.0.0.1/32", "IP": "127.0.0.1", "MBits": 1000, "DNS": null, "ReservedPorts": null, "DynamicPorts": null }, { "Mode": "host", "Device": "lo", "CIDR": "::1/128", "IP": "::1", "MBits": 1000, "DNS": null, "ReservedPorts": null, "DynamicPorts": null } ], "NodeNetworks": [ { "Mode": "bridge", "Device": "", "MacAddress": "", "Speed": 0, "Addresses": null }, { "Mode": "host", "Device": "lo", "MacAddress": "", "Speed": 1000, "Addresses": [ { "Family": "ipv4", "Alias": "default", "Address": "127.0.0.1", "ReservedPorts": "", "Gateway": "" }, { "Family": "ipv6", "Alias": "default", "Address": "::1", "ReservedPorts": "", "Gateway": "" } ] } ], "Devices": null }, "ReservedResources": { "Cpu": { "CpuShares": 0 }, "Memory": { "MemoryMB": 0 }, "Disk": { "DiskMB": 0 }, "Networks": { "ReservedHostPorts": "" } }, "Resources": { "CPU": 33600, "MemoryMB": 15760, "DiskMB": 285614, "IOPS": 0, "Networks": [ { "Mode": "host", "Device": "lo", "CIDR": "127.0.0.1/32", "IP": "127.0.0.1", "MBits": 1000, "DNS": null, "ReservedPorts": null, "DynamicPorts": null }, { "Mode": "host", "Device": "lo", "CIDR": "::1/128", "IP": "::1", "MBits": 1000, "DNS": null, "ReservedPorts": null, "DynamicPorts": null } ], "Devices": null }, "Reserved": { "CPU": 0, "MemoryMB": 0, "DiskMB": 0, "IOPS": 0, "Networks": null, "Devices": null }, "Links": null, "Meta": { "connect.gateway_image": "envoyproxy/envoy:v1.11.2@sha256:a7769160c9c1a55bb8d07a3b71ce5d64f72b1f665f10d81aa1581bc3cf850d09", "connect.log_level": "info", "connect.sidecar_image": "envoyproxy/envoy:v1.11.2@sha256:a7769160c9c1a55bb8d07a3b71ce5d64f72b1f665f10d81aa1581bc3cf850d09" }, "NodeClass": "", "ComputedClass": "v1:9803688035578634002", "Drain": false, "DrainStrategy": null, "SchedulingEligibility": "eligible", "Status": "initializing", "StatusDescription": "", "StatusUpdatedAt": 1602770857, "Events": [ { "Message": "Node registered", "Subsystem": "Cluster", "Details": null, "Timestamp": "2020-10-15T10:07:37-04:00", "CreateIndex": 0 } ], "Drivers": { "docker": { "Attributes": { "driver.docker": "true", "driver.docker.bridge_ip": "172.17.0.1", "driver.docker.os_type": "linux", "driver.docker.runtimes": "runc", "driver.docker.version": "19.03.13" }, "Detected": true, "Healthy": true, "HealthDescription": "Healthy", "UpdateTime": "2020-10-15T10:07:37.904159516-04:00" }, "exec": { "Attributes": null, "Detected": false, "Healthy": false, "HealthDescription": "Driver must run as root", "UpdateTime": "2020-10-15T10:07:37.445083368-04:00" }, "java": { "Attributes": null, "Detected": false, "Healthy": false, "HealthDescription": "Driver must run as root", "UpdateTime": "2020-10-15T10:07:37.445601605-04:00" }, "mock_driver": { "Attributes": { "driver.mock": "true" }, "Detected": true, "Healthy": true, "HealthDescription": "Healthy", "UpdateTime": "2020-10-15T10:07:37.445193068-04:00" }, "qemu": { "Attributes": null, "Detected": false, "Healthy": false, "HealthDescription": "", "UpdateTime": "2020-10-15T10:07:37.445684857-04:00" }, "raw_exec": { "Attributes": { "driver.raw_exec": "true" }, "Detected": true, "Healthy": true, "HealthDescription": "Healthy", "UpdateTime": "2020-10-15T10:07:37.445431163-04:00" } }, "CSIControllerPlugins": null, "CSINodePlugins": null, "HostVolumes": null, "CreateIndex": 7, "ModifyIndex": 7 } } } ] }
{
"Index": 7,
"Events": [
{
"Topic": "Node",
"Type": "NodeRegistration",
"Key": "ccc4ce56-7f0a-4124-b8b1-a4015aa82c40",
"Namespace": "",
"FilterKeys": null,
"Index": 7,
"Payload": {
"Node": {
"ID": "ccc4ce56-7f0a-4124-b8b1-a4015aa82c40",
"Datacenter": "dc1",
"Name": "nomad-4",
"HTTPAddr": "127.0.0.1:4646",
"TLSEnabled": false,
"Attributes": {
"cpu.arch": "amd64",
"cpu.frequency": "4200",
"cpu.modelname": "Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz",
"cpu.numcores": "8",
"cpu.totalcompute": "33600",
"driver.docker": "1",
"driver.docker.bridge_ip": "172.17.0.1",
"driver.docker.os_type": "linux",
"driver.docker.runtimes": "runc",
"driver.docker.version": "19.03.13",
"driver.mock": "true",
"driver.mock_driver": "1",
"driver.raw_exec": "1",
"kernel.name": "linux",
"kernel.version": "5.4.0-48-generic",
"memory.totalbytes": "16525733888",
"nomad.advertise.address": "127.0.0.1:4646",
"nomad.revision": "8c88f29bff0849720e33b0cc73af87495358f3b8",
"nomad.version": "0.13.0-dev",
"os.name": "ubuntu",
"os.signals": "SIGBUS,SIGFPE,SIGTRAP,SIGTTOU,SIGWINCH,SIGXFSZ,SIGHUP,SIGILL,SIGALRM,SIGCHLD,SIGSYS,SIGXCPU,SIGPROF,SIGQUIT,SIGTERM,SIGUSR2,SIGCONT,SIGIO,SIGSEGV,SIGTTIN,SIGIOT,SIGKILL,SIGPIPE,SIGABRT,SIGINT,SIGSTOP,SIGTSTP,SIGURG,SIGUSR1",
"os.version": "20.04",
"unique.cgroup.mountpoint": "/sys/fs/cgroup/systemd",
"unique.hostname": "x1c",
"unique.network.ip-address": "127.0.0.1",
"unique.storage.bytesfree": "299488927744",
"unique.storage.bytestotal": "502468108288",
"unique.storage.volume": "/dev/nvme0n1p2"
},
"NodeResources": {
"Cpu": {
"CpuShares": 33600
},
"Memory": {
"MemoryMB": 15760
},
"Disk": {
"DiskMB": 285614
},
"Networks": [
{
"Mode": "bridge",
"Device": "",
"CIDR": "",
"IP": "",
"MBits": 0,
"DNS": null,
"ReservedPorts": null,
"DynamicPorts": null
},
{
"Mode": "host",
"Device": "lo",
"CIDR": "127.0.0.1/32",
"IP": "127.0.0.1",
"MBits": 1000,
"DNS": null,
"ReservedPorts": null,
"DynamicPorts": null
},
{
"Mode": "host",
"Device": "lo",
"CIDR": "::1/128",
"IP": "::1",
"MBits": 1000,
"DNS": null,
"ReservedPorts": null,
"DynamicPorts": null
}
],
"NodeNetworks": [
{
"Mode": "bridge",
"Device": "",
"MacAddress": "",
"Speed": 0,
"Addresses": null
},
{
"Mode": "host",
"Device": "lo",
"MacAddress": "",
"Speed": 1000,
"Addresses": [
{
"Family": "ipv4",
"Alias": "default",
"Address": "127.0.0.1",
"ReservedPorts": "",
"Gateway": ""
},
{
"Family": "ipv6",
"Alias": "default",
"Address": "::1",
"ReservedPorts": "",
"Gateway": ""
}
]
}
],
"Devices": null
},
"ReservedResources": {
"Cpu": {
"CpuShares": 0
},
"Memory": {
"MemoryMB": 0
},
"Disk": {
"DiskMB": 0
},
"Networks": {
"ReservedHostPorts": ""
}
},
"Resources": {
"CPU": 33600,
"MemoryMB": 15760,
"DiskMB": 285614,
"IOPS": 0,
"Networks": [
{
"Mode": "host",
"Device": "lo",
"CIDR": "127.0.0.1/32",
"IP": "127.0.0.1",
"MBits": 1000,
"DNS": null,
"ReservedPorts": null,
"DynamicPorts": null
},
{
"Mode": "host",
"Device": "lo",
"CIDR": "::1/128",
"IP": "::1",
"MBits": 1000,
"DNS": null,
"ReservedPorts": null,
"DynamicPorts": null
}
],
"Devices": null
},
"Reserved": {
"CPU": 0,
"MemoryMB": 0,
"DiskMB": 0,
"IOPS": 0,
"Networks": null,
"Devices": null
},
"Links": null,
"Meta": {
"connect.gateway_image": "envoyproxy/envoy:v1.11.2@sha256:a7769160c9c1a55bb8d07a3b71ce5d64f72b1f665f10d81aa1581bc3cf850d09",
"connect.log_level": "info",
"connect.sidecar_image": "envoyproxy/envoy:v1.11.2@sha256:a7769160c9c1a55bb8d07a3b71ce5d64f72b1f665f10d81aa1581bc3cf850d09"
},
"NodeClass": "",
"ComputedClass": "v1:9803688035578634002",
"Drain": false,
"DrainStrategy": null,
"SchedulingEligibility": "eligible",
"Status": "initializing",
"StatusDescription": "",
"StatusUpdatedAt": 1602770857,
"Events": [
{
"Message": "Node registered",
"Subsystem": "Cluster",
"Details": null,
"Timestamp": "2020-10-15T10:07:37-04:00",
"CreateIndex": 0
}
],
"Drivers": {
"docker": {
"Attributes": {
"driver.docker": "true",
"driver.docker.bridge_ip": "172.17.0.1",
"driver.docker.os_type": "linux",
"driver.docker.runtimes": "runc",
"driver.docker.version": "19.03.13"
},
"Detected": true,
"Healthy": true,
"HealthDescription": "Healthy",
"UpdateTime": "2020-10-15T10:07:37.904159516-04:00"
},
"exec": {
"Attributes": null,
"Detected": false,
"Healthy": false,
"HealthDescription": "Driver must run as root",
"UpdateTime": "2020-10-15T10:07:37.445083368-04:00"
},
"java": {
"Attributes": null,
"Detected": false,
"Healthy": false,
"HealthDescription": "Driver must run as root",
"UpdateTime": "2020-10-15T10:07:37.445601605-04:00"
},
"mock_driver": {
"Attributes": {
"driver.mock": "true"
},
"Detected": true,
"Healthy": true,
"HealthDescription": "Healthy",
"UpdateTime": "2020-10-15T10:07:37.445193068-04:00"
},
"qemu": {
"Attributes": null,
"Detected": false,
"Healthy": false,
"HealthDescription": "",
"UpdateTime": "2020-10-15T10:07:37.445684857-04:00"
},
"raw_exec": {
"Attributes": {
"driver.raw_exec": "true"
},
"Detected": true,
"Healthy": true,
"HealthDescription": "Healthy",
"UpdateTime": "2020-10-15T10:07:37.445431163-04:00"
}
},
"CSIControllerPlugins": null,
"CSINodePlugins": null,
"HostVolumes": null,
"CreateIndex": 7,
"ModifyIndex": 7
}
}
}
]
}